[i=s] 本帖最后由 lc115647 于 2025-1-24 10:38 编辑 [/i]<br />
<br />
一、了解APM32F035 软件运行状态机逻辑
035整体软件状态机有四个主状态:INIT 、STOP 、FAULT 、RUN;
对主状态机的描述如下:
- Init:此主状态执行变量初始化。
- Fault:当系统有错误发生时一直处于此状态,直到错误的标志位被清除。而后会延时一段时间,然后从Fault 状态跳转到STOP 状态等待起动命令。
- Stop:系统完成初始化等待速度命令。此状态内下关闭PWM 输出。
- Run:当在运行状态时,若有Stop 指令下发,便会执行系统停止运行操作。
同时主状态RUN 的五个子状态:run-calib 、run-ready 、run-align 、run-spin 、run-freewheel 。
当运行在Run 状态时,其子状态会相应被调用并执行:
- Run-Calib:可以执行电流偏置ADC 自校准功能。执行完此状态后系统将切Ready 状态,同时禁止PWM 输出。
- Run-Ready:使能PWM 输出,同步采样电流,并执行异常状态检查。
- Run-Align:执行采样电流,调用预定位算法,同时更新PWM 。在指定时间内执行态,同时采样直流母线电压并滤波处理。
- Run-Spin:采样电流,调用观测器估计转子转速和位置,调用相应算法,更新PWMPWM,电机开始切入闭环运行。
- Run-Freewheel:使能PWM 输出,并采用短接制动的方式进行停机,由于转子惯性,需等待到电机停止运行后在进行状态的切换,进而切换到Ready 状态。如果有错误发生则将进入Fault 状态。

二、035有感FOC例程如何进行电流PI调整
第一步、设定芯片进入Align 状态
由上图的状态机所示Align状态是运行在主状态RUN下面,先由calib到ready再到align,而电流环PI调节在快速环中,结合代码可知,在快环Ready 中进入align状态,因此需要开启宏定义HALL_PHASE_TEST,否则将执行的是Spin

快环ready实现代码:

第二步、调节D、Q轴KP、KI值
打开“parameter. h”,修改下面定义值

PID整定的口诀:
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢,微分时间应加长
理想曲线两个波,前高后低四比一
一看二调多分析,调节质量不会低
- 先调比例系数 :逐步增大 D轴、Q轴的 M1_IQ_KP_Q15和M1_ID_KP_Q15 的值,但需保证两个数值一致,观察电流响应(即观察Motor_Type.Foc.stc_ldq.s16q15_Q的值是否能快速跟随上Motor_Type.Foc.stc_ldqCmd.s16q15_Q的值)。随着D轴、Q轴的 M1_IQ_KP_Q15和M1_ID_KP_Q15 的增大,电流响应速度会加快,但可能会出现超调甚至振荡。当电流响应出现轻微超调且能较快稳定时,认为比例系数初步合适。
- 再调积分系数 :在确定了合适的D轴、Q轴的 M1_IQ_KP_Q15和M1_ID_KP_Q15 后,逐渐增大M1_IQ_KI_Q15和M1_ID_KI_Q15的值,同理也需要保证两个数值一致。这样做目的是消除电流稳态误差,但M1_IQ_KI_Q15和M1_ID_KI_Q15过大会导致系统不稳定或动态性能变差。观察电流在稳态时是否能完全跟踪给定值(即观察Motor_Type.Foc.stc_ldq.s16q15_Q的值是否能稳定),同时关注动态过程中的变化,直到电流能快速、稳定地跟踪给定值,且稳态误差基本消除。
具体效果可参照下图:

至此电流环的PI基本已经初步调好 |