PID算法的理解与学习
我对PID算法可以简单的总结如下一句话:P管现在,I管曾经发生的一切累计至今的影响,D根据现在的情况预测未来,及时把控。但是具体三个参数如何起作用还需要进一步学习和研究,同时深刻的理解也能够帮助我们在后期的参数调试中做到心中有数,不至于糊里糊涂。
首先针对PID,不得不提的就是其公式,具体如下:
离散化的公式可大致写成如下形式:
公式中有三项:比例项、积分项以及微分项。其具体的作用效果我们可以假设一种柴油机的转速控制进行理解。
**情景假设:**柴油机以怠速600r/min的速度行驶,现在接收到信号要加速到710r/min,由于柴油机的机械特性,每秒至多增加20r可以最好的保护机械,因此不能增加太快,所以在设置Kp参数时要针对最大的变化率进行大致的估算,本次暂且以710作为最大值。
1、仅适用P的算法
此时误差值最大为110;最大不能增加超过20,则可以将参数定位kp=20/110约为0.1818,为了好说明,暂定为0.1,则增加过程如下:
时间 | 误差e | 比例项增加量 | 这一秒末转速 |
---|---|---|---|
0 | 110 | 11 | 611 |
1 | 99 | 9.9 | 620.9 |
2 | 89.1 | 8.91 | 629.81 |
3 | 80.19 | (约为)8 | (约为)639 |
4 | 71 | 7.1 | 646.1 |
5 | 63,9 | 6.39 | 652.49 |
6 | 57.51 | 5.75 | 658.1 |
如上表所示:增加量随着比例系数以及误差大小进行调节,在趋近控制量的过程中越来越慢,并且有可能产生一定的静态误差,所谓的静态误差可以解释我当有风浪涌等外界条件影响时可能会产生一定的速度抵消,导致增加量和影响量相互抵消,转速增加上去了但是船速却并不会如设想的速度运行。
2、PI算法控制流程
此时加上了积分项,所谓的积分项由公式可知是将以前所有的误差项累计起来进行调节,现取Kp=0.1,
Ki=(20-11)/110=0.08181,暂时取0.01,也可用一个表格表示如下:
时间 | 误差e | 比例项增加量 | 积分项误差积累值 | 积分项增加量 | 这一秒末转速 |
---|---|---|---|---|---|
0 | 110 | 11 | 110 | 1.1 | 612.1 |
1 | 97.9 | 9.79 | 207.9 | 2.08 | 623.97 |
2 | 86.03 | 8.6 | 293.93 | 2.94 | 635.51 |
3 | 74.49 | 7.4 | 368.42 | 3.68 | 646.59 |
由于计算较为复杂,现只计算以上四组数据,但依然能够明显的表现出来积分的作用:即在上升期的控制中,将以前的误差积累,一方面加快了调节进程,另一方面,即便产生静态误差,随着时间的积累,积分项也将积累的更大,此时即便比例项不在变化,但是积分项也会不断增大,直至继续增加至控制值。
3、PD算法的控制流程
对于PD,微分项涉及到两次误差之间的变化值,可以取0.001的微分项参数,继续表格进行说明;
时间 | 误差e | 比例项增加量 | 上一秒误差值 | 误差变化量 | 积分项增加量 | 这一秒末转速 |
---|---|---|---|---|---|---|
0 | 110 | 11 | 0 | 110 | 0.11 | 611.11 |
1 | 98.89 | 9.89 | 110 | -11.11 | -0.01 | 620.99 |
2 | 89.01 | 8.9 | 98.89 | -9.88 | -0.009 | 629.881 |
3 | 80.119 | 8.0119 | 89.01 | -8.891 | -0.009 | 637.8839 |
由上表与前面的表格对比,可知转速增加较慢,而从数学的角度来说,在转速增加的过程中误差是一直减少的,于是误差的变化量是个负值,此时表现出阻碍转速增加的作用,当转速减少时,可知此时误差是个负数由于绝对值是减小的,因此误差变化量是正数,阻碍转数减小。相当于起到了一个前后平衡的作用,而不是一味向前。当然了,一位向前的参数如果调节的好也就不用前后平衡了。
4、PID参数的调整
从网上找了一下关于PID参数调节的方法,入门的话这个试凑法还是很不错的,如果过想继续深入学习,推荐https://max.book118.com/html/2017/0309/94802600.shtm,这位老师的文章我虽然只看了一部分,但是受益匪浅。
5、总结
本篇文章致力于从PID的经典公式的底层运算原理来理解PID的工作过程,理解了最底层的PID原理后再去学习PID的相关知识则会事半功倍,例如增量式PID等,除此之外,上面数据是本人在学习过程中一步步手工计算得来的,不敢保证计算没有纰漏,如有错误,还请批评指针。求知如渴,虚心若愚,盼与诸君共进步!!!