NXP数学电机库PI控制器参数的理解

NXP数学电机库的PI控制器实现

PI控制器在连续时域上的函数表达式: u ( t ) = e ( t ) ∗ K p + K i ∫ 0 t e ( t ) d t u(t)=e(t)*K_p+K_iint_0^te(t)dt u(t)=e(t)∗Kp+Ki∫0te(t)dt 因为在计算机内数据是离散的,将上述函数离散化: u ( k ) = u p ( k ) + u i ( k ) u p ( k ) = K p e ( k ) u i ( k ) = K i ∑ 1 k ( e ( k ) + e ( k − 1 ) ) T s 2 = K i ∗ T s 2 ∑ 1 k ( e ( k ) + e ( k − 1 ) ) u(k)=u_p(k)+u_i(k)\ u_p(k)=K_pe(k)\ u_i(k)=K_isum_1^kfrac{(e(k)+e(k-1))T_s}{2}=frac{K_i*T_s}{2}sum_1^k(e(k)+e(k-1)) u(k)=up(k)+ui(k)up(k)=Kpe(k)ui(k)=Ki1∑k2(e(k)+e(k−1))Ts=2Ki∗Ts1∑k(e(k)+e(k−1))

u ( k ) = K p e ( k ) + u i ( k − 1 ) + K i ∗ T s 2 ( e ( k ) + e ( k − 1 ) ) = K p e ( k ) + u ( k − 1 ) − u p ( k − 1 ) + K i ∗ T s 2 ( e ( k ) + e ( k − 1 ) ) = K p e ( k ) + u ( k − 1 ) − K p e ( k ) + K i ∗ T s 2 ( e ( k ) + e ( k − 1 ) ) = ( k p + K i ∗ T s 2 ) e ( k ) + ( − k p + K i ∗ T s 2 ) e ( k − 1 ) + u ( k − 1 ) u(k)=K_pe(k)+u_i(k-1)+frac{K_i*T_s}{2}(e(k)+e(k-1))\ =K_pe(k)+u(k-1)-u_p(k-1)+frac{K_i*T_s}{2}(e(k)+e(k-1))\ =K_pe(k)+u(k-1)-K_pe(k)+frac{K_i*T_s}{2}(e(k)+e(k-1))\ =(k_p+frac{K_i*T_s}{2})e(k)+(-k_p+frac{K_i*T_s}{2})e(k-1)+u(k-1) u(k)=Kpe(k)+ui(k−1)+2Ki∗Ts(e(k)+e(k−1))=Kpe(k)+u(k−1)−up(k−1)+2Ki∗Ts(e(k)+e(k−1))=Kpe(k)+u(k−1)−Kpe(k)+2Ki∗Ts(e(k)+e(k−1))=(kp+2Ki∗Ts)e(k)+(−kp+2Ki∗Ts)e(k−1)+u(k−1)

令 C C 1 s c = k p + K i ∗ T s 2 CC1_{sc}=k_p+frac{K_i*T_s}{2} CC1sc=kp+2Ki∗Ts、 C C 2 s c = − k p + K i ∗ T s 2 CC2_{sc}=-k_p+frac{K_i*T_s}{2} CC2sc=−kp+2Ki∗Ts则:

u ( k ) = ( C C 1 s c ) e ( k ) + ( C C 1 s c ) e ( k − 1 ) + u ( k − 1 ) u(k)=(CC1_{sc})e(k)+(CC1_{sc})e(k-1)+u(k-1) u(k)=(CC1sc)e(k)+(CC1sc)e(k−1)+u(k−1) 因此只需记录上次的结果 u ( k − 1 ) u(k-1) u(k−1)和误差 e ( k − 1 ) e(k-1) e(k−1),上面的公式即可完成本次的PI迭代计算。

电流环PI控制器的实现

AMCLIB_CurrentLoop_FLT,该函数实现了DQ轴两个电流环的计算。本质上就是两个PI控制器。 通过上面分析可以知道为什么在代码中,PI控制器的参数要转换成fltCC1sc、fltCC2sc这样格式。 然而 k p 、 k i k_p、k_i kp、ki该设置为多少就是另外一个故事了。

经验分享 程序员 微信小程序 职场和发展