嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > BLDC驱动中级篇:在改进PID算法里,挖呀挖呀挖

BLDC驱动中级篇:在改进PID算法里,挖呀挖呀挖

 

-- The Start --

前言:

在和文中,我们掌握了PID算法的原理、两种类型的优缺点及其使用方法。尽管我建议大家在做BLDC驱动时使用增量式PID,但不乏一些同学已经习惯了使用位置式PID。在使用位置式PID的时候,由于积分项的存在,所以大概率会遇到超调、振荡和积分饱和等问题,针对这些问题,一些改进的PID算法出现了。本文就来梳理一下,希望对使用位置式PID的同学有帮助。


1. 复习位置式PID控制算法根据文中内容,可知数字域位置式PID公式,请见公式(1)。
Uout(k)=Kp*E(k)+Ki*∑E(kT)+Kd*[(E(k)-E(k-1))/T]--(1)公式(1)中,Kp、Ki和Kd分别为比例、积分和微分项的系数;T为采样周期,E(kT)为第0时刻到第K时刻的偏差值的累加和;k为采样序号,k=1,2,3......,E(k)为第k时刻的偏差值,E(k-1)为第(k-1)时刻的偏差值。
2. 积分分离PID控制算法积分分离的思想:偏差值|E(k)|较大时,不积分;偏差值|E(k)|较小时,才积分。

如果设定偏差值|E(k)|的门限值为A,那么积分分离PID控制算法的公式,请见公式(2)。
Uout(k)=Kp*E(k)+α*Ki*∑E(kT)+Kd*[(E(k)-E(k-1))/T]--(2)公式(2)中,α为积分项的开关系数。(1)当|E(k)|≤A时,α 为1;采用PID控制,消除静态误差,提高系统控制精度。(2)当|E(k)|>A时,α 为0;采用PD控制,避免产生过大超调、振荡以及积分饱和等。

3.抗积分饱和PID控制算法抗积分饱和的思想:如果上次输出的控制量|Uout(k-1)|<|UoutMax|,那么Uout(k)的积分项累加正偏差;如果|Uout(k-1)|≥|UoutMax|,那么Uout(k)累加负偏差。

正偏差和负偏差不是很好理解,公式也不好总结,具体举例说明如下:(1)如果上次输出的控制量Uout(k-1)≥UoutMax那么,如果E(k)>0,那么积分项不再累加本次偏差E(k)值。如果E(k)≤0,那么积分项累加本次偏差E(k)值。

(2)如果上次输出的控制量Uout(k-1)≤ -UoutMax那么,如果E(k)>0,那么积分项累加本次偏差E(k)值。如果E(k)≤0,那么积分项不再累加本次偏差E(k)值。

4.变速积分PID控制算法变速积分的思想:偏差|E(k)|越大,积分越慢;偏差|E(k)|越小,积分越快。
如果将|E(k)|分为三个区间【0,A】,[A,B],[B,+∞],请见公式(3)。Uout(k)=Kp*E(k)+Ki*(∑E((k-1)T)+α*E(k))+Kd*[(E(k)-E(k-1))/T]--(3)系数α是E(k)的函数,α函数值范围【0,1】,请见下图1。

图1

(1)当|E(k)|≤A,那么α=1。累加当前偏差值E(k),积分速度最快。(2)当A<|E(k)|≤B,那么α=( B - |E(k)| )/(B - A)。累计部分当前偏差值E(k),积分速度与E(k)呈线性变化(3)如果|E(k)|>B,那么α=0。不再累加当前偏差值E(k),积分速度归0。
小结:(1)以上改进PID算法,都是为了消除积分项带来的各种问题。(2)改进的PID算法还有很多,使用哪一种要根据具体情况而定。(3)正因为有很多改进的PID算法,所以我们更应该多挤时间学习。(4)正因为还有很多改进的PID算法,所以还需要大家一起持续挖呀挖呀挖。
-- The End --往期文章:


欢迎点分享、收藏、点赞、在看!谢谢!