Simulink 自动代码生成电机控制——脉振高频注入

最近在做一些电机控制代码生成的相关学习,记录一些学习心得和成果

目录

模型简介

运行仿真

代码生成与集成

开发板运行演示


模型简介

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

生成海报
点赞 0

伊卡洛斯1

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

PCA9555详细学习

2022.01.27 控制寄存器和命令寄存器,及英文理解 一般8位作为地址,其中前四位时固定的,中间三位为地址配置,最后一位是读写位,即读是1,写是0 当地址

【KEIL-MDK】系列——如何使用PC-Lint代码检查工具

系列文章目录 01.【KEIL-MDK】系列——主题配色 前言 当我们在做一些代码编辑工作时,经常会因为不小心粗心大意而造成一些不容易发现的错误(潜意识认为没问题、编译器编译没报错(一些除了语法等外更其他问题)),