最近在做一些电机控制代码生成的相关学习,记录一些学习心得和成果
目录
模型简介
1. 如图,模型分为离散和连续两部分,电机系统是连续域,控制算法部分是离散的,需要把变量转为离散变量,如下C/D模块需要把被控系统的数据类型和采样率进行连接,输入到控制算法模型
2. 如图为算法模型,不同的模块执行频率是不一样的,和我们在嵌入式开发的思想一样,有些运算不需要实时性很高,就放在不同的任务周期里面,如下: 功率计算和状态机放到10ms一次,速度环放到2ms一次,FOC和角度计算放到100us也就是PWM的开关周期,对就单片机就是放在ADC中断里面,而ADC又是以PWM的开关周期来触发的,这样就可以减少开关周期里面执行的代码。
3. 下图是脉振高频注入状态控制模块,关于脉振高频注入原理的文档和论文网上有很多,这里就不细说了。高频注入的启动过程为:初始位置检测(电机静止)>NS极检测(电机静止)>角度估算(电机运动)>高速无感控制,如下图通过stateflow来实现各个状态的切换分别为IPD,NS,HFI模块
4. 为了方便实际电机和板子角度估算的验证,同样也增加霍尔计算电机角度和速度的模块,如下
运行仿真
1. 设定目标转速1000RPM如下图,分别是电机的实际角度,相电流,速度响应
2. 角度对比,如下蓝色是霍尔得到的角度,黄色是HFI得到的角度,电机设置的初始角度是0,可以看到初始角度是2Pi, 系统的角度是0-2pi,因此2pi等效是0,霍尔低速时估算角度不准,可以看到霍尔初始角不平滑,我们可以对比上图,得到的HFI的角度仿真和实际基本一致
代码生成与集成
1. 生成代码
生成代码的步骤有很多,这里我们生成嵌入式的C代码得到如下
自定义的观测量和标定量,在实际的调试中,我们需要去更改某些变量,达到我们的控制效果,我们可以生成如下所示的观测量和标定量。
2. 软件集成
这里我们已经配置好了相应的底层,主控芯片是STM32F401,集成好后如下:
开发板运行演示
这是一个24V的小电机,电机参数大致如下 ,运行效果:
脉振高频注入,STM32自动代码生成_哔哩哔哩_bilibili
版权声明:本文为CSDN博主「伊卡洛斯1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42665184/article/details/122511642
暂无评论