STM32 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
STM32 Simulink 自动代码生成电机控制——脉振高频注入相关推荐
- STM32 Simulink 自动代码生成电机控制——DTC控制仿真到代码生成
目录 传统DTC控制仿真 1. DTC简单介绍 2. 传统DTC仿真模型 3. DTC仿真效果 改进DTC SVPWM控制仿真 1. SVPWM替换查表 2. 无传感磁链估算 改进后的DTC控制仿真 ...
- STM32 Simulink 自动代码生成电机控制:基于反电动势观测器的锁相环设计
目录 锁相环设计 参数设计 总结 锁相环设计 全阶滑模的锁相环和前面的非线性磁链观测器锁相环原理类似,同样反正切函数计算方法包含除法运算,尤其是当反电动势观测值过零时,转子位置观测误差会进一步放大,这 ...
- Simulink 自动代码生成电机控制:非线性磁链观测器
目录 电机方程 电压方程 磁链方程 定义状态变量和输出变量 非线性观测器方程 电角度的计算--锁相环 锁相环调参 电机方程 电压方程 磁链方程 定义状态变量和输出变量 非线性观测器方程 在对反电势进行 ...
- Simulink 自动代码生成电机控制:自动定点化Fixed-Point Tool 使用
目录 1. 定点化前模型准备及注意事项 2.定点化步骤 3.生成代码 1. 定点化前模型准备及注意事项 1)模型参数设置 创建两组完全一样的电机参数,一组是浮点数放到电机模型里面,一组是算法的参数,由 ...
- 改进型脉振高频注入源码 stm32工程 脉振高频注入是一种通过在d轴注入正弦电压
改进型脉振高频注入源码 stm32工程 脉振高频注入是一种通过在d轴注入正弦电压,通过电机的凸极效应(饱和凸极效应)估算同步电机转子位置的方法. 不需要电机旋转即可获得电机转子位置,能够实现0速带载. ...
- 该模型为PMSM的脉振高频注入法识别电机在低速下的位置,注入d轴,信号进在q轴进行幅值调制经LPF得到转子误差信号
该模型为PMSM的脉振高频注入法识别电机在低速下的位置,注入d轴,信号进在q轴进行幅值调制经LPF得到转子误差信号,经过PLL得到电机的转子位置. 附带参考文献. ID:691786767712953 ...
- 磁同步电机(pmsm,无位置传感器控制(扩张状态观测器,超螺旋滑模,扩展卡尔曼滤波) 脉振高频注入(有方波和正弦两种)仿真模型。
永磁同步电机参数辨识模型,在线辨识,离线辨 机械参数在线离线,电气参数在线离线. 永磁同步电机模型预测控制仿真模型,有三矢量,双矢量,占空比矢量三种,效果不错 算法采用定步长实现,效果很好,三矢量效果 ...
- 永磁同步电机无速度传感器控制(二)——脉振高频注入法(一)【位置估计原理】
1.高频注入法 前面已经讲过了一种无速度传感器实现方法--滑模观测器法.在开始一个新的位置估计策略之前,我们先聊一聊这个方法本身的特点.从前面对滑模的讲述可知,滑模观测器法是通过构造一个滑模面,然后设 ...
- 一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b)
一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b) 写在前面 1.stm32cub ...
- Simulink自动代码生成:生成代码的基本设置
Simulink自动代码生成也被称作基于模型开发(BMD),相比于传统的手写代码方式能够尽量减少人为错误.模型本身可以用于仿真,单元测试等,更便于提前发现逻辑错误.同时只要约定好模型接口,就可以多 ...
最新文章
- linux ip rcv处理,linux ip选项处理(二)
- Unity -- 入门教程三
- 前端:JS字符串操作函数类库
- 2020年书法落款_快来排排2020鼠年书法落款时间表,收!
- 使用过滤器实现网站访问计数器的功能
- Java fluent风格
- 03.SpringBoot入门案例及详解
- 机器学习的1000+篇文章总结
- 《统计学习方法》python代码资料
- android启用hdcp_如何在Android Auto上启用开发人员设置
- stm32毕业设计 单片机指纹识别考勤系统
- SpringDataRedis事务 专题------转载
- Symbol类型详解
- Python爬虫随笔
- java二进制保存图片_Java中如何把图片转换成二进制流
- 大一新生必看,自学必看,里昂详解数据结构之队列
- SQL Prompt 4试用
- 计算机网络——物理层和信道复用(频分、时分、码分)技术
- Docker容器化技术
- C++经验:做题技巧、思路