目录
最好具备前置基础:【永磁同步电机数学模型全程推导】,如果没有前置基础,本节也有大白话环节。
现象描述
空载情况下,设置FOC为纯电流环,目标id设置为0,目标iq设置为0.3A之类的有数值,如下所示:
c
motor_mode_torque(0.0f, 0.3f);
此时会出现电机飞转,打印采样到的iq,会发现实际上iq始终到不了设定的0.3A,而是始终处于0附近;如果此时用手捏了一下电机,iq就能够达到目标值。如下图所示:

图片来自一个可以添加数学通道的数据波形软件:Ballet
做个实验
假设反馈iq能够达到目标iq,根据受力分析,空载负载极低,转子会不断加速。进行以下实验,纯电流环设定目标iq为0.3A和目标iq为5.0A,如果上述说法能够成立,理论现象将是目标iq为5.0A时电机转速会更高(且高很多)。但实际你会发现该两种情况下电机的极限转速是一致的,极限转速就像被提前封锁了,这说明轴承摩擦力并不是限制极限转速的主要原因,肯定有另一种隐藏的东西参与了 。从能量守恒角度看,处于稳定极限转速下,转子受力是平衡的,只有反馈iq无法达到目标iq,而是等于此时的负载(极低的摩擦力),即反馈iq接近0,才是能量守恒的。
接下来解释这期间隐藏的东西是什么,是怎么让反馈iq低下来的。
大白话解释
空载时,目标iq远大于负载,电机启动时处于加速过程,电机绕组线圈会不断切割转子永磁体磁场,转速越高,切割磁场越快,反电动势越大。反电动势逐渐挤占了母线电压,反馈iq出现下降的趋势 ,反馈iq一旦稍微跌到目标iq以下,FOC算法就会调高pwm占空比以维持反馈iq,这个阶段pwm占空比还没达到100%,电机电压还有余量,反馈iq是还是能够达到目标iq的,数据波形如下图所示,可以看到在转速升得很高之前,反馈iq能够达到0.3A:

由于负载极低,接下来转速越来越高,为了维持反馈iq,FOC输出占空比也越来越高,直到撞到了100%的上限,电机电压再也无法提高了,但是反电动势随着转速依然在升高,反电动势开始侵占输出给绕组的电压,绕组得到的有效电压逐渐接近0,于是反馈iq也逐渐接近0。
上述提到的隐藏的东西就是反电动势,电机最高转速限制主要受到反电动势限制,反馈iq无法达到目标iq就是因为反电动势影响。
数学模型层面分析
看下dq轴电压方程:
u d = R s i d + L d d i d d t − ω L q i q u q = R s i q + L q d i q d t + ω L d i d + ω ψ f \begin{aligned} u_d&=R_si_d+\bcancel{L_d\frac{di_d}{dt}}-\omega L_qi_q\\ u_q&=R_si_q+\bcancel{L_q\frac{di_q}{dt}}+\omega L_di_d+\omega\psi_f\end{aligned} uduq=Rsid+Lddtdid −ωLqiq=Rsiq+Lqdtdiq +ωLdid+ωψf
L d d i d d t , L q d i q d t L_d\frac{di_d}{dt},L_q\frac{di_q}{dt} Lddtdid,Lqdtdiq只有瞬间动态时影响,可以视作0。 ψ f \psi_f ψf是常数, u d , u q u_d,u_q ud,uq起初是0。
当转速 ω \omega ω不高时, u d , u q u_d,u_q ud,uq游刃有余,始终能cover式子右边的波动,维持 i d = 0 , i q = 0.3 A i_d=0,i_q=0.3A id=0,iq=0.3A;
当转速 ω \omega ω到达临界点时, u d , u q u_d,u_q ud,uq调节到达极限,从d轴电压方程分析, u d u_d ud是稳定不变的极限值, ω L q i q \omega L_qi_q ωLqiq继续升高,意味着 R s i d R_si_d Rsid会升高,即 i d i_d id会升高。再从q轴电压方程分析, u q u_q uq是稳定不变的极限值, ω L d i d + ω ψ f \omega L_di_d+\omega\psi_f ωLdid+ωψf继续升高,意味着 R s i q R_si_q Rsiq会降低,即 i q i_q iq会降低,到 ω ψ f \omega\psi_f ωψf几乎占满 u q u_q uq时, i q i_q iq就会接近0 。再代入 u d u_d ud,由于 i q i_q iq接近0, ω L q i q \omega L_qi_q ωLqiq项也接近0, i d i_d id也在0附近。
当手捏住电机时, ω \omega ω等于0,反电动势项消失了,此时 u q = R s i q u_q=R_si_q uq=Rsiq, i q i_q iq就能够达到目标值了。
应对方法
纯电流环运行时,当负载比iq小,电机就会失控飞转,可以加上pid中的积分限幅保护,防止长时间负载小于目标iq时积分项无限累计,否则会导致电机无法及时恢复控制或者换向。
可以监测电机转速,超过一定转速后认为跑飞了,直接报错停机。