
Simulink
文章平均质量分 76
卡洛斯伊
从事电机,电源类系统应用软件开发。记录分享开发中遇到的问题方便日后回顾和交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
三相PFC电网电压不平衡的危害和解决办法
前段时间已经完成了三相PFC的建模并在实际硬件上运行的实验室测试。理想情况下三相的电网电压幅值大小一致,相位一致,但是实际中因为各种因素,三相电网电压经常会出现不平衡的情况。第一次做三相PFC并没有考虑太多。最近新增了三相电网不平衡如何优化系统性能。在仿真和验证过程中,适当的选择陷波滤波器的参数,可以得到更好的控制效果。由于三相不平衡,会引出100Hz的电压纹波,电压环之前有必要加一个陷波滤波器。以上仅是仿真及分析,供参考。原创 2024-04-16 11:45:37 · 1310 阅读 · 0 评论 -
Simulink 自动代码生成:手写代码替换生成代码Code Replacement Tool使用
用这种方式可以结合手写代码,也可以把硬件资源用起来而不需要芯片和Matlab进行深度的集成,只是硬件接口需要保证接口函数的准确,不然生成的代码可能运行不正确,这里只举了一个例子,没有进行Cordic的验证。原创 2023-11-21 18:22:24 · 1450 阅读 · 2 评论 -
Simulink查表法实现NTC温度计算模型
在实际项目中需要对NTC对某些区域进行温度采样和做一些系统层面的保护等等,比如过温降载,过温保护,这时就需要对NTC或者其他的温度传感器进行采样,计算实时温度。而NTC的数据表提供的温度和阻值的对应关系点数太少,计算的温度误差比较大。这里记录下所使用的方法,方便日后回顾。原创 2023-10-31 17:18:09 · 1708 阅读 · 0 评论 -
Simulink自动代码生成到指定的文件夹
Simulink 自动代码生成System Composer的使用Architecture Model_卡洛斯伊的博客-优快云博客当然可以把Simulink生成代码的目录和模型直接放到软件工程里面,生成代码直接在Makefile里面把文件路径设置好,只是这样就会让整个Project看起来很臃肿,这里就总结一个自己的操作,清爽的提取出生成的代码仅供参考解决方法也许不止一种,因为目前没找到更好的方案只能采取这种方式,这里记录一下方便日后回顾。原创 2023-07-13 09:33:25 · 5832 阅读 · 5 评论 -
Simulink 自动代码生成System Composer的使用Architecture Model
Simulink代码生成:Autosar模型及代码生成_simulink autosar_卡洛斯伊的博客-优快云博客那为啥还有一个架构模型呢,在System Composer除了AUTOSAR架构模型外,还有一个不带AUTOSAR架构的模型如下图:模型架构化有啥好处?原创 2023-07-12 13:44:43 · 4136 阅读 · 0 评论 -
Simulink自动把所有的double数据转换成single数据
这种方法比一个模块一个模块的手动调整效率高太多了,只是操作过程中需要注意备份模块,不要改完后发现仿真不了了,在转换的过程中数据的输入输出会自动添加convert模块传递不出子系统之间的数据。功率回路和PWM都是double类型的。原创 2023-06-26 14:03:41 · 4658 阅读 · 0 评论 -
通过环路分析仪得到系统的闭环传递函数方法(Matlab System Identification)
记录下从环路分析仪的数据得到系统的闭环传递函数的方法,方便以后回顾。原创 2023-06-16 20:04:12 · 3313 阅读 · 0 评论 -
Simulink尝试双脉冲实验验证MOSFET二极管反向恢复的特性(附仿真模型)
仿真模拟了两种管子的模型,对于上面一组模型,可以仿真出功率器件的部分特性而并非像第二种模型一样是理想器件,本来想用第一种器件去构建完整的控制算法,更接近实际的仿真模型,但是没有达到理想的效果,如果不设置步长,第一种模型的失真较高,如果设置步长要实现接近实际器件的特性,仿真步长需要非常小,想要跑完一个仿真除了电脑要很强,其次就是需要仿真很长的时间了,目前还没找到好的解决办法。原创 2023-06-08 10:41:37 · 6992 阅读 · 10 评论 -
STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验
之前做了脉振高频注入的仿真到代码生成开发板运行的实验,电机可以通过高频注入计算出角度,但是在初始位置检测的时候,尝试了不少方法但是效果一般,很容易反转,由于时间关系没有花太多时间和精力,最近又尝试了一种方法,效果还是比较明显在这里记录一下,所有算法层的代码都是自动生成的。原创 2023-05-23 21:29:53 · 2523 阅读 · 0 评论 -
Simulink 自动代码生成电机控制:软件在环测试(SIL)步骤总结
简单介绍了SIL软件在环测试的步骤,非常简单,更深层次的东西可以根据流程需要再去挖掘,先总结到这里。原创 2023-05-18 18:16:53 · 5498 阅读 · 9 评论 -
Simulink 电机控制:单电阻采样三相电流重构算法仿真总结
从仿真看单电阻难点在地硬件的优化,软件采样点的调试等,还有FOC的执行效率。这里通过仿真把基础原理实现,硬件上跑还需要考虑PWM发波和ADC的触发机制。对于观测器和其他的电机算法完全可以适用于单电阻。原创 2023-02-23 21:04:56 · 5210 阅读 · 12 评论 -
Simulink 自动代码生成电机控制:低阶滑模观测器仿真实现及生成代码在开发板上运行
通过实验验证这种简单的滑模估算方法可行,效果也可以,速度变化也能正常使用,这里通过锁相环替换了参考文献的反正切也能正常工作。另外构建了另一个滑模观测器,这个观测器输出的反电动势相位没有发生滞后,开发板运行效果和本文所说的效果基本一致。原创 2023-02-19 13:51:26 · 3214 阅读 · 14 评论 -
Simulink 自动代码生成电机控制:STM32 Encoder编码器使用总结
本实验通过仿真模拟了STM32单片机的Encoder接口,并对其进行角度计算,从仿真系统上实现了整个过程,也把启动和运行的流程通过模型生成代码在硬件上实现,验证了模型的可靠性。原创 2023-02-18 16:38:05 · 7213 阅读 · 8 评论 -
Simulink自动代码生成:如何标准化的建模?以MAB,MISRA C 2012建模规范为例
常用MAB标准总结在建模的时候把一些常用的标准记住,可以减少后期更改的工作量。1. 模块的前景色设置为黑色,背景色为白色2. 模块命名时不要带空格3. 模块名要在模块的下方4. 自定义的模块名或者端口名要显示,没有自定义系统默认的模块名或者端口名要隐藏5. 信号线与信号线不能相交(没有实际连上)6. 除反馈路径上的模块外,所有顺序块必须从左向右放置。7. 除反馈路径上的模块外,所有平行块必须从上到下放置。8. 所有的方块都应该朝右。原创 2023-02-14 10:38:16 · 2357 阅读 · 0 评论 -
Simulink电机控制代码生成-----关于PI控制器参数整定的一点总结
本文利用实例通过两种方法整定PI参数,并互相比较,总结出两种方法都可以整定出PI参数,但是方法二更加直观和合理。方法一存在一定的不确定性,比如当前设计的带宽是不是太高,太低。只能在实际中验证。方法二如果电机参数准确,可以更方便的看出电机PI参数是否会引起系统超调太大,是否稳定等信息。原创 2022-11-22 20:34:48 · 7997 阅读 · 2 评论 -
SVPWM与SYPWM谐波注入脉宽调制实现与对比
通过仿真效果可以看到两种调制方式输出完全一致,通过生成代码集成到MCU运行,SYPWM对于控制系统和SVPWM并无区别,但是计算量少了很多,节省了MCU的执行时间,这在我们优化环路周期有很大的帮助。......原创 2022-08-04 15:43:37 · 4205 阅读 · 2 评论 -
用Simulink仿真电路并得到其传递函数方法
通过这种方法可以辅助硬件的设计,硬件参数的验证等,在控制上也可以模拟负载等特性得到传递函数,再通过Simulink设计补偿器完成系统的环路设计等任务。是一个工程开发中比较方便的功能httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。......原创 2022-07-28 11:28:41 · 32671 阅读 · 22 评论 -
Simulink 窄带陷波滤波器(Notch filter)仿真到代码生成
陷波滤波器指的是可以将某一频率迅速衰减的滤波器,直接上效果图,如下图所示在常数100的信号上叠加了一个幅值为10的100Hz的频率,通过Notch filter后就得到了稳定的信号100,相当于抑制了振荡。可以用来抑制系统的其振点或者消除周期性的振荡等。蓝色滤波前的信号,黄色滤波后的信号 传递函数如下: 传递函数的伯德图:从伯德图可以看出在某一个频率点会衰减,我们需要根据振荡的频率去调整w0=2*pi*f (这里f是振荡频率),达到过滤掉振荡的效果。Q的值影响的是稳定的速度。Q=1.9的伯德图和仿真效果原创 2022-07-12 15:15:51 · 9243 阅读 · 2 评论 -
永磁同步电机矢量控制速度环参数整定方法尝试----利用Matlab通过扫伯德图生成传递函数
目录永磁同步电机系统仿真用Matlab扫频生成伯德图和传递函数设计补偿器实现速度环的控制仿真验证总结构建好的仿真模型设置成速度开环控制,根据电机特性设置成速度开环控制,Iq指令50,设置扫描系统的输入,输出,这里的输入是Iq_ref0,输出是Speed_out.仿真一下 代码如下io(1)= linio('PMSM_FOC_PowerGUI_Model/Motor_Control/Motor_Control_Function/Control_Command_2ms/Iq_ref0',1,'input');原创 2022-07-10 23:04:22 · 5578 阅读 · 2 评论 -
STM32 Simulink 自动代码生成电机控制——死区补偿
死区补偿仿真到代码生成实机演示原创 2022-06-29 21:12:26 · 9000 阅读 · 1 评论 -
STM32 Simulink 自动代码生成电机控制——57次谐波抑制仿真到代码生成
谐波补偿仿真到实机运行效果原创 2022-06-29 20:32:47 · 3424 阅读 · 5 评论 -
永磁同步电机矢量控制电流环参数整定方法----Matlab controlSystemDesigner的使用
永磁同步电机通过传递函数整定电流环PI参数原创 2022-06-28 16:07:07 · 7180 阅读 · 8 评论 -
Simulink Resolver 旋转变压器解码仿真
Simulink Resolver 旋转变压器解码仿真原创 2022-06-10 15:31:07 · 7551 阅读 · 6 评论 -
Simulink取最大(小)值方法总结
一些遇到的小技巧,对输入数据求取最大值,方便日后回顾原创 2022-05-18 14:59:32 · 18101 阅读 · 27 评论 -
Simulink建模:Simulink PWM死区时间插入仿真
目录问题引入死区时间插入仿真运行效果问题引入在电机或者电源控制领域,对于三相桥或者H桥,很多时候实际的PWM开关是是会有死区时间设置的,而在Simulink里面想要模拟PWM的死区时间设置需要在PWM的模型处模拟PWM的死区效应,进而进行死区补偿或者谐波抑制的仿真验证,本文展示死区时间插入的仿真模型及运行效果死区时间插入仿真1. Ta, Tb, Tc是三相的比较值2.展开后,如下插入死区3.展开后,如下通过Transport Delay实现死区效应并可设置..原创 2022-01-11 14:08:20 · 13707 阅读 · 15 评论 -
模型生成代码和集成问题(1)
# error Must define one of RT, NRT, MATLAB_MEX_FILE, SL_INTERNAL, or FIPXT_SHARED_MODULE最近在用Simulink生成代码,并集成到STM32控制板上做测试,这里把遇到的问题汇总一下,方便以后回顾还能记得,在这里通过S-function builder创建了一个全阶滑模观测器实现PMSM的无传感控制,仿真都正常,开环强拉启动到闭环的过程生成代码后集成到Keil报了# error Must define on..原创 2021-08-25 16:57:16 · 1561 阅读 · 3 评论 -
Simulink代码生成:A2L文件生成和通过elf文件更新A2L地址
通过Matlab生成A2L,并通过elf更新A2L的地址方法原创 2022-01-11 09:56:58 · 13177 阅读 · 10 评论 -
Simulink代码生成:Autosar模型及代码生成
1. 模型搭建要开始在软件架构画布中开发AUTOSAR compositions和 components,需要创建一个AUTOSAR架构模型(需要System Composer)。1. 创建架构模型(1) 在Simulink窗口,创建新的Architecture如下图(2) 选择AUTOSAR Blockset,并得到如下的Autosar架构画布,并保存(3)根据自己的项目实际情况添加软件组合或者软件组件,如图这里举例创建了三个不同时间周期的任务,另外可根据实际需求创建不同...原创 2022-01-06 14:27:08 · 17394 阅读 · 30 评论 -
Simulink代码生成: #pragma section 自定义Storage Class
1. 问题引入1. 定义变量到指定的段 开发过程中,需要把标定量放到指定的段中并生成代码,代码效果如下,在应用层都是基于模型开发的前提下,如果手动添加#pragma section 这种预编译指令是不现实的,本文记录一下代码生成的配置过程。2. 批量把SLDD里面定义的变量放到指定的段 如果已经定义了数据字典,并定义了很多变量需要放到特定的段中#pragma section ".rodata.Calib_32" a 4/* Definition for custom sto...原创 2022-01-05 15:51:43 · 6244 阅读 · 3 评论