PID算法学习心得
PID控制算法:一种能精确控制的实用性经典算法。
P-I-D 所代表的含义
P—比例 I—积分 D—微分
为什么要用pid算法?
因为它的特点就是能够精准控制,如果使用一些开环控制的话总是会达不到预期结果。
结果会在期望值附近上下波动。究其原因就是实际环境中会有很多干扰。例如温控,如果
只是用开环控制算法,温度达到预期温度后,其余热会使温度升高加热停止。而温度低于预期温度时
开始加热,但是得经过一段时间才能到达预期温度。又例如平衡车,,使用开环控制的话直接就反应不过来。
而PID算法则是一个闭环控制,通过输入一个预期值经过PID算法输出一个实际值,再由传感器采集数据回传
给pid算法进行输出的改进,从而达到一个循环控制的效果。
如果将他们单独拆开来进行控制:
首先,用户输入一个期望值Sv,而实际输出为Pv
误差设为Ek
则满足:
Ek = Sv - Pv
1.P—比例控制
引入一个参数:比例系数Kp
引入公式 输出:
POut = Kp*Ek+OUT0
(为常数,为了始终有一个输出的值)
其意义就是根据当前值的变化而变化。
比如实际值小与期望值时误差Kp*Ek为正值,
所以对POut进行了增幅,使其输出加快达到期望值。
反之。
目的:对当前值进行适当调整,使实际输出更快达到期望值。
2.I—积分控制
考虑从开机开始到当前的误差,求和总和为SEk:
SEk = E1+E2+E3+E4+......+Ek_1+Ek
引入公式:
IOut = Kp*SEk+OUT0
不能单独的进行积分控制:当前后误差值均为0的时候
积分控制失去作用,因为Ki*SEk为0。从而输出值为零,
系统失控。所以必须要加入OUT0使其存在输出。
其意义就是针对历史的输出来对实际输出进行调整
当实际输出小于期望值时:Ek都是正数,其输出给OUT0增幅,
使其输出值更快的达到期望值。
当实际输出大于期望值时:Ek都负数,OUT0减小,使输出值
降低到期望值。
缺点:不能单独控制,得与比例控制相配合;开机到达到其望值
积分值过大。因为这段时间内的Ek都是正值
3. D—微分控制
考虑前一次误差的现在误差的变化趋势,从而去预测未来的输出值
前后误差的差值DelEk:
DelEk = Ek_1-Ek
引入公式:
DOut = Kp*DelEk+OUT0
微分靠的是前后误差的变化趋势从而对其输出值进行增幅或者削弱
从是其趋向期望值
变化趋势==也就是前后误差的斜率
如果其值为正,就是对输出进行增幅。
如果其值为负,就是对输出进行削弱。
如果其中为0,不对输出进行增幅或削弱
反而导致误差的出现,所以要加上OUT0的辅助
一般情况下至少与比例控制配合。
最后将三种控制算法进行整合,相辅相成,就是传说
中的PID算法了
将前面的公式整合起来得到数学模型:
PID.Out=POut+IOut+DOut
=(Kp*Ek+OUT0)+(Kp*SEk+OUT0)+(Kp*DelEk+OUT0)
=Kp*(EK+SEK+DelEk)+OUT0
未完待续