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开发实战

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

相关推荐
简单中的复杂1 分钟前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
r i c k21 分钟前
数据库系统学习笔记
数据库·笔记·学习
上海合宙LuatOS26 分钟前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
野犬寒鸦35 分钟前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
Hhh __灏38 分钟前
stm32的SRAM内存不足如何分析和优化?堆栈空间如何优化?
单片机
LS_learner1 小时前
Snapd和Apt—Linux 上两种完全不同的软件包管理系统
嵌入式硬件
点灯小铭1 小时前
基于51单片机的双档交流电压表设计与实现
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业
shandianchengzi1 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-2 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法