电机控制Simulink代码生成
文章平均质量分 77
总结了学习工作中的一些经验,分享一下并做做自我总结,方便回顾和交流
卡洛斯伊
从事电机,电源类系统应用软件开发。记录分享开发中遇到的问题方便日后回顾和交流
展开
-
Simulink 自动代码生成电机控制:模型预测控制(MPC)模块使用总结(2)
这里简单总结了MPC参数的调试效果,供参考!由于没有扰动模型,所以这里不需要添加扰动。完全就是把这玩意儿当成一个PI控制器来用。原创 2023-11-17 17:20:39 · 673 阅读 · 0 评论 -
Simulink 自动代码生成电机控制:模型预测控制(MPC)模块使用总结(1)
前面尝试了基于电机DQ轴电流环的传递函数设计PI控制器的参数,最近尝试了下模型预测控制(MPC)对电流环进行控制,这里总结一下方便日后回顾。原创 2023-11-17 14:23:41 · 2876 阅读 · 7 评论 -
STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验
之前做了脉振高频注入的仿真到代码生成开发板运行的实验,电机可以通过高频注入计算出角度,但是在初始位置检测的时候,尝试了不少方法但是效果一般,很容易反转,由于时间关系没有花太多时间和精力,最近又尝试了一种方法,效果还是比较明显在这里记录一下,所有算法层的代码都是自动生成的。原创 2023-05-23 21:29:53 · 1935 阅读 · 0 评论 -
Simulink 自动代码生成电机控制:软件在环测试(SIL)步骤总结
简单介绍了SIL软件在环测试的步骤,非常简单,更深层次的东西可以根据流程需要再去挖掘,先总结到这里。原创 2023-05-18 18:16:53 · 3306 阅读 · 7 评论 -
Simulink 自动代码生成电机控制:模型仿真速度的优化
尝试了以上方法对于仿真速度的优化,还有些方法这里没有写出来。1. 比如适当的调整仿真步长,但是调整步长需要在合理范围,如果步长太大可能会引起仿真失真,控制效率变差。2. 根据需要选择合理的仿真模型,如电机控制只考虑控制算法不需要看开关级的波形,可以不需要用到通用逆变器而选择平均值逆变器会更快3. 合理的减小仿真时长,有时候不需要仿真很长的时间,在可以达到调试目的的前提下减小仿真时长可以省不少时间大概就总结到这里,后面有新的发现再做补充。原创 2023-05-18 15:29:09 · 1416 阅读 · 1 评论 -
Simulink 自动代码生成电机控制——永磁同步电机参数获取
以上介绍了如何测量计算电机参数,从实际测试效果来说,不管用电桥测试还是时间常数,都会因为测量有一定的误差,不过误差较小,不要太离谱的话正常跑电机是没有问题的, 通过不同的方法可以互相验证参数的可靠性,参数越接近实际电机参数,运行效果越好。可以根据实验条件自行选择,总比猜来得靠谱。原创 2023-05-14 15:20:09 · 2666 阅读 · 5 评论 -
Simulink 自动代码生成电机控制:方波高频注入仿真到代码生成开发板演示
最近换了一个小电机,于是尝试了一下方波高频注入的仿真到代码生成的实验,正弦波注入的方式已经实现STM32 Simulink 自动代码生成电机控制——脉振高频注入_高频注入代码_卡洛斯伊的博客-CSDN博客简单总结下方波高频注入的仿真和代码生成开发板演示实验。实验硬件系统如下:抛开性能不谈,方波高频注入的实验也算是实现了,从之前在同一个电机上实现了脉振高频注入和现在的方波高频注入,虽然都能运行,但直观感受振脉高频注入的效果较方波高频注入好,由于用的电机是一个小的表贴电机,不排除算法和电机的影响导致性能差异。原创 2023-05-07 17:30:23 · 2388 阅读 · 7 评论 -
Simulink 自动代码生成电机控制:开发板DAC接口辅助调试的方法
DAC是比较常用的数字转模拟单元,通过给定数字量,输出一个模拟信号,有比较广泛的用途,在这里只讨论DAC作为一个调式手段帮助打印出电机控制里面的一些变量,方便调试使用,针对电机电机控制开发板做一些总结开发板的串口支持较高的波特率,可以通过上传变量满足调试需求,同时也通过PWM模拟DAC的方式实现了DAC显示波形,方便调试使用。可根据实际情况进行合理选择。原创 2023-05-07 10:18:27 · 1082 阅读 · 1 评论 -
Simulink 自动代码生成电机控制:弱磁控制从仿真到硬件开发板验证实验
从仿真和实际运行来看,实际弱磁的效果和仿真一样。在实际调试中会存弱磁区速度和非弱磁区速度稳定性不一样,这可能是多方面的原因,需要综合整个系统考虑,有时候Id_ref给定后响应慢,需要对电流环的带宽进行优化。有时候速度在非弱磁区工作正常,但是在弱磁区会不稳定,也有可能是速度环参数带宽需要调整,需要根据实际情况进行判断。原创 2023-05-03 13:13:22 · 1725 阅读 · 4 评论 -
Simulink 自动代码生成电机控制:硬件开发板系统介绍
就简单介绍到这里,小板子的设计虽然随心所欲,不过也能满足学习的需求了,也做了不少实验。对于作为一块小巧的学习板,也算是及格了。由于精力有限,还有很多想法只能后面一步一步的去验证实现了。原创 2023-04-20 22:28:49 · 1854 阅读 · 11 评论 -
Simulink 自动代码生成电机控制:在某国产ARM0定点MCU上实现自动代码生成无感电机控制
这次尝试了在国产arm0内核的MCU上实现Simulink自动代码生成永磁同步电机无传感控制。机缘巧合之下拿到了一块国产MCU的电机控制板和一个5000RPM的小电机。最后实现了无传感控制,在这里总结下一些经验。掌握定点化流程方法后,系统越复杂就越不要想着通过几个实例就把整个系统完全定点化好,也需要对一些异常的模块进行分析,仿真以达到数据失真小,且不溢出。Simulink定点化后有些数据是16位的,可以考虑把一些数据用32位表示,以确保其精度。原创 2023-03-08 13:46:23 · 3350 阅读 · 2 评论 -
Simulink 自动代码生成电机控制:优化Simulink生成的代码提升代码运行效率
优化前代码执行速度17us, 优化后8.9us, 效率提升了将近一倍,从优化过程可以看出,要提高代码运行效率需要从三个方面入手:1.模型的搭建和配置2.模型算法的优化3. 编译器的优化也至关重要编译器的优化有时候会影响到程序的正常执行,测试过程中都是保证电机能正常工作,具体以实际工程需要进行优化,这里仅供参考%5Cpi%5Cpi。原创 2023-03-02 12:43:13 · 1763 阅读 · 5 评论 -
Simulink 电机控制:单电阻采样三相电流重构算法仿真总结
从仿真看单电阻难点在地硬件的优化,软件采样点的调试等,还有FOC的执行效率。这里通过仿真把基础原理实现,硬件上跑还需要考虑PWM发波和ADC的触发机制。对于观测器和其他的电机算法完全可以适用于单电阻。原创 2023-02-23 21:04:56 · 3279 阅读 · 10 评论 -
Simulink 自动代码生成电机控制:低阶滑模观测器仿真实现及生成代码在开发板上运行
通过实验验证这种简单的滑模估算方法可行,效果也可以,速度变化也能正常使用,这里通过锁相环替换了参考文献的反正切也能正常工作。另外构建了另一个滑模观测器,这个观测器输出的反电动势相位没有发生滞后,开发板运行效果和本文所说的效果基本一致。原创 2023-02-19 13:51:26 · 2307 阅读 · 12 评论 -
Simulink 自动代码生成电机控制:STM32 Encoder编码器使用总结
本实验通过仿真模拟了STM32单片机的Encoder接口,并对其进行角度计算,从仿真系统上实现了整个过程,也把启动和运行的流程通过模型生成代码在硬件上实现,验证了模型的可靠性。原创 2023-02-18 16:38:05 · 5869 阅读 · 7 评论 -
Simulink自动代码生成:如何标准化的建模?以MAB,MISRA C 2012建模规范为例
常用MAB标准总结在建模的时候把一些常用的标准记住,可以减少后期更改的工作量。1. 模块的前景色设置为黑色,背景色为白色2. 模块命名时不要带空格3. 模块名要在模块的下方4. 自定义的模块名或者端口名要显示,没有自定义系统默认的模块名或者端口名要隐藏5. 信号线与信号线不能相交(没有实际连上)6. 除反馈路径上的模块外,所有顺序块必须从左向右放置。7. 除反馈路径上的模块外,所有平行块必须从上到下放置。8. 所有的方块都应该朝右。原创 2023-02-14 10:38:16 · 1381 阅读 · 0 评论 -
Simulink 自动代码生成电机控制:关于无传感控制开环启动控制的仿真和开发板运行
开环启动也是应用比较广泛的,启动参数的优化需要根据实际负载特性进行优化。有些应用启动到闭环的过程会出现负载变化的情况,也需要根据实际情况进行调整,这里通过仿真记录总结了所使用的方法,并生成代码到开发板运行。另外很多应用考虑启动到闭环过程的平滑度,和速度环PI也有一定的关系。原创 2023-01-14 14:37:34 · 2410 阅读 · 8 评论 -
Simulink 自动代码生成电机控制:基于霍尔FOC模型和代码生成
本实例通过Simulink建模模拟Hall信号和 MCU定时器,实现了霍尔FOC电机控制测试系统的构建,并生成代码在开发板上运行。原创 2022-12-22 10:17:01 · 5414 阅读 · 4 评论 -
Simulink电机控制代码生成-----关于PI控制器参数整定的一点总结
本文利用实例通过两种方法整定PI参数,并互相比较,总结出两种方法都可以整定出PI参数,但是方法二更加直观和合理。方法一存在一定的不确定性,比如当前设计的带宽是不是太高,太低。只能在实际中验证。方法二如果电机参数准确,可以更方便的看出电机PI参数是否会引起系统超调太大,是否稳定等信息。原创 2022-11-22 20:34:48 · 4964 阅读 · 2 评论 -
记录为小电机安装一个5012编码器(多摩川协议)的过程
这里用的编码器是一个磁编码器,接口板可以很容易买到也不贵。如下 图,为接口板的正反面。接口板的工作原理是通过把一块永磁体如下图红圈,安装到电机的转子轴上,5012磁编码器采集到的角度通过单片机用485发送出来。PWR:电源指示灯D2:通讯指示灯,闪烁表示正在通讯读取数据通讯协议主控端发送请求命令帧:发送数据(HEX):0x02主控端接收来自编码器的数据帧:接收数据(HEX):0x02 0x00 0x34 0x12 0x00 0x24其中:0x02: 起始字节。原创 2022-11-19 18:58:39 · 3172 阅读 · 1 评论 -
STM32 Simulink 自动代码生成电机控制:基于反电动势观测器的锁相环设计
通过和磁链锁相环相比,全阶滑模设计是有所不同的,不能想当然的直接用,要根据输入信号的特征具体分析。但对于都是基于反电动势的滑模和龙伯格是可以共用同一个锁相环的。原创 2022-10-30 13:48:39 · 2454 阅读 · 13 评论 -
Simulink 自动代码生成电机控制:非线性磁链观测器
磁链观测器有很好的低速效果,工程实践比较有意义。这里介绍了非线性磁链观测器的实现原理和方法,锁相环调参的方法。涉及了自动控制中的观测器和控制器相关的知识点。原创 2022-10-28 21:40:36 · 8986 阅读 · 46 评论 -
Simulink 自动代码生成电机控制:Keil工程转到CubeIDE相关问题(2/2)
如果想要让代码执行效率高,需要考虑不同编译器的版本,优化选项以及对系统是否有影响等。通过测试发现在Keil和CubeIDE两者中Keil编译器版本选择6编译出来的代码效率最好。在实际的开发中,为优化软件的执行效率也会尝试使用各种编译器让程序的速度和空间达到预期的结果。原创 2022-10-19 21:36:25 · 1798 阅读 · 0 评论 -
Simulink 自动代码生成电机控制:Keil工程转到CubeIDE操作(1/2)
不同的集成开发环境在有些时候可以验证代码的优化效率,评估MCU的性能,还可以排除一些开发中遇到的问题。灵活使用工作可以高效可靠的验证代码。原创 2022-10-18 23:20:02 · 1712 阅读 · 0 评论 -
Simulink 自动代码生成电机控制:基于Keil软件集成
Simulink生成代码基于Keil的集成操作比较简单,其他的集成开发环境操作类似,把.c和.h配置好,接口配置好就好了。关于通信协议有VOFA+STM32 VOFA+串口调试助手提升电机控制调试效率(下位机代码和上位机操作演示)_卡洛斯伊的博客-CSDN博客_stm32 串口助手Simulink 显示波形Simulink串口调试助手的使用----显示电机运行的波形_卡洛斯伊的博客-CSDN博客_串口调试助手显示波形Keil Array Visualization 显示波形。原创 2022-10-17 21:34:30 · 3603 阅读 · 5 评论 -
模型生成代码和集成问题(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 · 1291 阅读 · 3 评论 -
Simulink S-function builder创建一个.C的全阶滑模观测器操作步骤
1.输入输出配置,这里因为在最开始定义了SMO参数的结构体,为了方便参数传递,把参数作为了输入量出来就是这造型:2.创建一个.h引入外部变量,.h要如果要用到一些特殊的变量或者函数,需要包含相应的头文件,这里创建的变量是为了在观测器中使用方便3.包含刚刚定义的.h4.写函数体(这里就不放出源代码了),函数体是在Outputs里编写和执行5.用一个子模块把S-fuction封装一下,传递参数6.运行仿真,粉色为Valpha,蓝色为Ealpha...原创 2021-08-25 17:30:15 · 2030 阅读 · 0 评论 -
STM32 Simulink 自动代码生成电机控制:无传感龙伯格观测器仿真自动代码生成到开发板运行
目录1. 龙伯格观测器建模和仿真2. 自动代码生成和系统验证3. 总结1. 龙伯格观测器建模和仿真龙伯格的算法结构如下:龙伯格观测器的基本原理网上有很多,这里就不多说了根据论文搭建出观测器的仿真模型Luenberger+PLL锁相环启动过程需要开环把电机拉起来,这里通过stateflow实现了开环拉的状态切换,可以配置启动电流,加速时间,切换转速等仿真效果如下:速度响应角度估算速度估算2. 自动代码生成和系统验证生...原创 2022-04-18 17:02:43 · 3790 阅读 · 14 评论 -
Simulink Resolver 旋转变压器解码仿真
Simulink Resolver 旋转变压器解码仿真原创 2022-06-10 15:31:07 · 4937 阅读 · 6 评论 -
永磁同步电机矢量控制电流环参数整定方法----Matlab controlSystemDesigner的使用
永磁同步电机通过传递函数整定电流环PI参数原创 2022-06-28 16:07:07 · 4546 阅读 · 8 评论 -
STM32 Simulink 自动代码生成电机控制——脉振高频注入
模型简介运行仿真代码生成开发板运行演示原创 2022-01-15 16:46:08 · 7305 阅读 · 6 评论 -
Simulink建模:Simulink PWM死区时间插入仿真
目录问题引入死区时间插入仿真运行效果问题引入在电机或者电源控制领域,对于三相桥或者H桥,很多时候实际的PWM开关是是会有死区时间设置的,而在Simulink里面想要模拟PWM的死区时间设置需要在PWM的模型处模拟PWM的死区效应,进而进行死区补偿或者谐波抑制的仿真验证,本文展示死区时间插入的仿真模型及运行效果死区时间插入仿真1. Ta, Tb, Tc是三相的比较值2.展开后,如下插入死区3.展开后,如下通过Transport Delay实现死区效应并可设置..原创 2022-01-11 14:08:20 · 8717 阅读 · 10 评论 -
SVPWM与SYPWM谐波注入脉宽调制实现与对比
通过仿真效果可以看到两种调制方式输出完全一致,通过生成代码集成到MCU运行,SYPWM对于控制系统和SVPWM并无区别,但是计算量少了很多,节省了MCU的执行时间,这在我们优化环路周期有很大的帮助。......原创 2022-08-04 15:43:37 · 2595 阅读 · 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 · 3834 阅读 · 2 评论 -
STM32 Simulink 自动代码生成电机控制——DTC控制仿真到代码生成
通过Simulink仿真及生成代码,通过STM32完成DTC的系统控制原创 2022-01-20 11:45:35 · 8615 阅读 · 16 评论 -
STM32 Simulink 自动代码生成电机控制——57次谐波抑制仿真到代码生成
谐波补偿仿真到实机运行效果原创 2022-06-29 20:32:47 · 2213 阅读 · 5 评论 -
Simulink代码生成:Autosar模型及代码生成
1. 模型搭建要开始在软件架构画布中开发AUTOSAR compositions和 components,需要创建一个AUTOSAR架构模型(需要System Composer)。1. 创建架构模型(1) 在Simulink窗口,创建新的Architecture如下图(2) 选择AUTOSAR Blockset,并得到如下的Autosar架构画布,并保存(3)根据自己的项目实际情况添加软件组合或者软件组件,如图这里举例创建了三个不同时间周期的任务,另外可根据实际需求创建不同...原创 2022-01-06 14:27:08 · 11221 阅读 · 28 评论 -
STM32 Simulink 自动代码生成电机控制——死区补偿
死区补偿仿真到代码生成实机演示原创 2022-06-29 21:12:26 · 5446 阅读 · 1 评论 -
Simulink 自动代码生成电机控制:自动定点化Fixed-Point Tool 使用
Simulink自动代码生成操作演示原创 2022-04-01 18:55:18 · 5611 阅读 · 5 评论 -
STM32 Simulink 自动代码生成电机控制:无传感扩展卡尔曼滤波(EKF)仿真和开发板运行
基于卡尔漫滤波的无传感永磁同步电机控制原创 2022-04-14 14:49:51 · 3966 阅读 · 17 评论