本帖最后由 Angus 于 2025-6-5 17:40 编辑
电机启动流程
更新转速设定值 RPM_Set ,不是一个很紧急的事件,在 main() 主循环中,按旋钮 ADC 值确定转速设定值 RPM_Set 是多少。
在main() 主循环代码中,电机可能在同步转,也可能未在同步转。分别做如下处理:
一,如果电机在同步转(Motor_Status 的 bit4 非0),下图331行,做以下事情:
如果 RPM_Set <= 0, 电机在停转降速中,这时电流=0,当转速降到最小值以下或无法同步时,就去状态 1 刹车停转。
如果 RPM_Set >0, 这里不需要做什么。电流大小由SysTick 中断里、转速 PI 计算结果决定;电压角度和 PWM 输出占空比,由 ADC 中断里计算、输出。
二,如果电机未在同步转, 下图343 行,要么不需要起动(RPM_Set <= 0),要么需要启动(RPM_Set >0)。
1>,如果不需要起动(RPM_Set <= 0),又已在起动流程(状态3,4,5,6),则直接刹车停转(349行, 去状态1)、或关功率管(去状态0)就行了。
如果未在启动流程,未转、也未在启转,就判断是否取消故障状态,转向开关是否变了等等。
2>,如果需要起动、又未在启动流程,执行到 390 行,先调用函数 Test_Period() 判断是否已顺风吹转,若是则跳转到状态6 顺风起转(401行)。若电机静止就跳转到状态 2 先给自举电容充电,充电结束后,在状态 2,按宏定义决定跳转到状态 3 开始快速起转、还是跳转到状态 5 普通模式起动。
若需要启动,又已在启动流程,这里什么都不需要做,ADC 中断里、启动代码会变换状态。
|