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

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

相关推荐
FreakStudio4 小时前
0 元学嵌入式 GUI!保姆级 LVGL+MicroPython 教程开更,从理论到实战全搞定
python·单片机·嵌入式·面向对象·电子diy
AI成长日志4 小时前
【datawhale】hello agents开源课程学习记录第5章 智能体应用实践:低代码平台构建指南
学习·低代码·开源
GHL2842710905 小时前
RAG相关问题整理学习
学习·ai
程序员夏末5 小时前
【LeetCode | 第七篇】算法笔记
笔记·算法·leetcode
yongui478345 小时前
基于STM32的Lora SX1278程序设计与实现
stm32·单片机·嵌入式硬件
开源盛世!!6 小时前
3.23-3.25笔记
笔记
hanlin037 小时前
刷题笔记:力扣第43、67题(字符串计算)
笔记·算法·leetcode
多看书少吃饭8 小时前
Vue + Java + Python 打造企业级 AI 知识库与任务分发系统(RAG架构全解析)
java·vue.js·笔记
了一梨8 小时前
[T113] 交叉编译 OpenCV 4.5.2 + face 模块
linux·笔记·opencv
知识分享小能手8 小时前
MongoDB入门学习教程,从入门到精通,MongoDB创建、更新和删除文档(3)
数据库·学习·mongodb