STM32G4 速度环开环,电流环闭环 IF模式建模

目录

一、STM32G4 速度环开环,电流环闭环 IF模式建模

1 IF模式建模

  • IF模式是速度环开环,电流环闭环的模式来启动电机,在上一章电流环仿真的模型中我们已经建立起了电流环的闭环模型,而模型中的theta角度来自电机输出的角度,然而在实际的电机系统中没有这样的角度可以输出,故在IF模式下我们需要自己来生成这样的角度。
  1. 增加点击角度生成模块;电机的角度等于速度的积分,电机的速度来自于加速度的积分;加速度等于开环速度除以开环时间;

  2. 将该部分算法封装为子系统,并命名为ThetaGenerator;

  3. 在模块中增加q轴的输入和输出参考电流

  4. 由于IF启动需要从0速度慢慢拉起,其存在几个启动状态的切换,故需要使用simulink中的Chart(stateflow)模块;

  5. IF启动分为转子初定位,开环拉起,且速度闭环几个状态,由于目前没有学到速度环,再切速度闭环状态过程中给一个开环固定速度让电机旋转;在Chart模块中插入状态和默认转移模块,搭建如下状态机;

    其中各状态之间的切换条件在默认转移线上有定义;Motor_Onoff为状态机输入的启动电机命令,Motor_State为状态机输出的状态,一共四个状态;[Motor_OnOff ==1]表示当 Motor_OnOff 为1时,切换到下一个状态;[after(1000,tick)]表示当该状态在 1000 个计数周期后切换至下一个状态;

  6. 使用 Switch Case 以及 If Action Subsystem 模块来判断在不同状态下执行对应的内容,状态

    机输出4个状态,则需要建立对应的4种状态下的执行系统;

  7. 状态一为空闲状态,此时输出的电机角度和q轴参考电流应该为0,在case1中建立如下部分

  8. 状态二为转子角度对齐阶段,我们需要将转子角度对齐到0度,此时输出的theta角度需要为0,q轴的参考电流有给一个能够驱动电机转动的电流,此处给1;

  9. 状态三为电机开环拉起状态,我们将之前建立的ThetaGenerator模块内部的内容复制到case3中;

  10. 在状态四我们只要将电机的转速进行积分就可以获得电机的转子角度,在case4中建立以下部分;

  11. 整个状态机模型建立完毕之后,将开环速度设置为800rpm/min;开环时间为3s,与状态机的[after(30000,tick)]相对应(30000*1e-4);开环拉起阶段以及运行阶段的参考电流设置为1,使用Merge模块,将四个状态的theta和q轴电流组合输出;

  12. 将状态机输出的theta和q轴电流参考值作为电流环的输入,外部增加MotorOnOff的输入为1

    13.电机仿真按钮,查看电机的速度值和三相电流值

  • 通过上图可以看出转速从0上升到800后,在800上下波动,三相电流也存在波动,这是由于给定的q轴电流参考值与实际负载不匹配导致
  • 总体上看,电机从开环被拉到期望的开环转速,实现了这个实验的目的。

附学习参考网址

  1. STM32G4 FOC开发实战

欢迎大家有问题评论交流 (* ^ ω ^)

相关推荐
龘龍龙11 小时前
Python基础学习(四)
开发语言·python·学习
charlie11451419112 小时前
深入解构:MSVC 调试机制与 Visual Studio 调试器原理
c++·ide·windows·学习·visual studio·调试·现代c++
Lv117700812 小时前
Visual Studio 中的密封类和静态类
ide·笔记·c#·visual studio
Darken0312 小时前
基于C语言的学习---if语句
c语言·学习·if语句
ghomeway12 小时前
keil使用虚拟的调试串口给调试助手发送数据
单片机·嵌入式硬件
LiYingL12 小时前
LAMIC:一种无需学习、布局可控的多参考图像生成方法
学习
小严家12 小时前
Java基础教程大全完整学习路径
java·开发语言·学习
yesyesyoucan13 小时前
在线魔方解谜站:从零入门到精通的智能魔方学习平台
学习·算法
Jason_zhao_MR13 小时前
米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
linux·嵌入式硬件·物联网·架构·嵌入式·嵌入式实时数据库
小痞同学13 小时前
stm32跑马灯实验
stm32·单片机·嵌入式硬件