STM32 Simulink 自动代码生成电机控制——DTC控制仿真到代码生成
目录
传统DTC控制仿真
1. DTC简单介绍
2. 传统DTC仿真模型
3. DTC仿真效果
改进DTC SVPWM控制仿真
1. SVPWM替换查表
2. 无传感磁链估算
改进后的DTC控制仿真
1. 速度响应
2. 转矩响应
3. 磁链圆
4. 无感角度估算
代码生成
开发板验证
总结
传统DTC控制仿真
1. DTC简单介绍
DTC其基本思路是不再将定子侧的相关变量折算到转子的旋转坐标系下,放弃了矢量控制中电流解耦的控制思想 ,去掉了PI调节模块、反Clark-Park变换和SVPWM模块 ,转而通过检测母线电压和定子电流 ,直接计算出电机的磁链和转矩 ,并利用两个滞环比较器直接实现对定子磁链和转矩的解耦控制。传统的DTC控制通过滞环控制来实现,FOC中的SVPWM在DTC控制中则是通过开关查表实现. 如下图为典型的永磁同步电机DTC控制。
2. 传统DTC仿真模型
通过滞环来对估算到的转矩,和磁链 进行控制,速度环直接输出Te_ref,通过滞环控制开关管的导通判断。再通过角度或者磁链计算出扇区,利用扇区通过查表确定当前功率管的开通判断顺序。和SVPWM不同的是SVPWM输出的是比较值,固定频率,变化的占空比。这种通过开关控制的方法开关频率越高,控制效果越好。
仿真系统:
算法部分:
3. DTC仿真效果
DTC控制频率20K的速度和电流响应效果
磁链圆的效果
DTC控制频率10K的速度和电流响应效果
磁链圆的效果
转矩响应效果
控制频率越高,开关频率越高,控制效果越好,但是这种控制方式在实际硬件中实行的话可能需要极高的开关频率,加上环路的控制,对MCU的性能要求比较高。用这种方式在实际的硬件上测试也出现同样的问题,相电流不平滑,且直接对功率管开关,容易过流。也有很多论文提出了不少的改进方法,这里不一一列举。
改进DTC SVPWM控制仿真
1. SVPWM替换查表
通过基于滑模控制器的转矩磁链调节器,输入磁链误差和转矩误差,进而计算出两相静止坐标系的空间电压,完成DTC的系统控制任务。
2. 无传感磁链估算
这里我们通过一个无感磁链观测器,通过输入的Ialpha Ibeta, 和Ualpha Ubeta估算出转矩和磁链以及当前转速和当前的角度。
改进后的DTC控制仿真
控制频率10K
1. 速度响应
明显电流光滑了很多
2. 转矩响应
给定转矩和估算转矩,估算转矩在给定转矩上下浮动
电机实际转矩
和估算的转矩有些误差
3. 磁链圆
得到的磁链更接近圆也更光滑
4. 无感角度估算
接近真实角度
代码生成
为方便实际验证,模型里面也加入了Hall的角度计算,验证观测器是否能正常工作
生成代码并集成
开发板验证
电机参数如下:
程序下载到开发板后连接Simulink的串口调试工具,上传观测量:
开发板主控芯片是STM32F401,低压24V。
运行效果:
如下图:
和仿真效果一样,通过PI输出的转矩和估算的转矩基本重和,估算的角度和霍尔计算的角度也基本一致,拿掉霍尔后也能正常闭环控制。通过电位器给定转速995RPM,实际转速和给定基本一致。
电流波形(2K采样频率):
总结
DTC的控制系统通过模型验证以及生成代码到开发板中运行调试,实际和仿真接近,模型的电机仿真参数来自于实际的电机测量参数,目前系统已经可以通过霍尔计算角度或者通过无感磁链观测器获得角度,目前基本功能实现,但还有很多地方有待改进。
STM32 Simulink 自动代码生成电机控制——DTC控制仿真到代码生成相关推荐
- STM32 Simulink 自动代码生成电机控制:基于反电动势观测器的锁相环设计
目录 锁相环设计 参数设计 总结 锁相环设计 全阶滑模的锁相环和前面的非线性磁链观测器锁相环原理类似,同样反正切函数计算方法包含除法运算,尤其是当反电动势观测值过零时,转子位置观测误差会进一步放大,这 ...
- 【Carsim Simulink自动驾驶仿真】基于MPC的轨迹跟踪控制
如果对Carsim的基础使用还不了解,可以参考:[Carsim Simulink自动驾驶仿真]基于MPC的速度控制 如果对MPC算法原理不清楚,可以参考:如何理解MPC模型预测控制理论 项目介绍: 教 ...
- 【Carsim Simulink自动驾驶仿真】基于MPC的动力学控制
如果对Carsim的基础使用还不了解,可以参考:[Carsim Simulink自动驾驶仿真]基于MPC的速度控制 如果对MPC算法原理不清楚,可以参考:如何理解MPC模型预测控制理论 项目介绍: 教 ...
- 自动驾驶控制器,车道偏离预警系统,基于Prescan设计场景和交通流,在Simulink中建立了相应的控制模型
自动驾驶控制器,车道偏离预警系统,基于Prescan设计场景和交通流,在Simulink中建立了相应的控制模型. 进行LDW功能验证. 整个模型自己建立,再次强调不是Prescan自带的那种很乱很模糊 ...
- 一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b)
一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b) 写在前面 1.stm32cub ...
- 基于Jetson Nano与STM32通信的颜色识别与伺服驱动器控制
基于Jetson Nano与STM32通信的颜色识别与伺服驱动器控制 jetrson nano部分 颜色识别 串口通信 数据传输 完整代码 stm32 部分 数据解读 电机控制 主函数 电机加减速 硬 ...
- Simulink 自动代码生成原理
如下图,Simulink模型会先变成一个文本式的 .rtw 模型描述文件,然后再变成 .c,.h,最后编译为最终目标文件. 典型的 Simulink 用户通常都是,用Simulink设计好算法后,做到 ...
- MATLAB/Simulink自动代码生成(一)
Simulink自带了种类繁多.功能强大的模块库,在基于模型设计的开发流程下,Simulink不仅通过仿真可以进行早期设计的验证,还可以生成C/C++.PLC等代码直接应用于PC.MCU.DSP等平台 ...
- 开关磁阻电机调速控制的仿真研究
开关磁阻电机(SRD)的结构简单.成本低.调速性能好,在整个调速范围内都具有 较高的效率,而且可在高速的环境下运转.这些年,开关磁阻电机已经正式应用到生活中, 包括了交通运输.电动车辆.通用工业.航空 ...
最新文章
- gpupdate /force 遇报错解决过程
- python高效开发实战
- Spartan-6的时钟资源、全局时钟缓冲器/多路复用器
- ajax 传递数组参数
- linux适合搭建什么服务器吗,Linux 的三种服务器的搭建
- 2016去哪儿编程题:字符替换
- 服务器挂存储系统启不,应用服务器重新启动后无法加载多路径软件
- 读取Excel文件的版本
- bzoj3210: 花神的浇花集会
- stat /bin/bash: no such file or directory“: unknown.
- 设置table的td宽度,不随文字变宽
- C# WPF 高级教程
- 微信公众号被关注后自动回复——跳转小程序
- 10 种 Python 聚类算法完整操作示例(附代码说明)
- 透视网格的数据如何导出Excel?一招教你搞定
- 【Linux】chmod、chown、chgrp区别和使用
- 后处理之TCL语言教程
- 计算机考研寒假可以做什么,计算机考研寒假复习攻略,边玩边学!
- [LeetCode](面试题 08.11)硬币
- oracle的日志在哪找,oracle日志文件路径怎么找