时间飞逝,不知不觉就到了大二下学期,比起以前大一时的青涩,现在倒是成熟了不少。从一开始目睹学长参加各种比赛,分享自己的经验,到现在亲身经历这些,确实是很不一样的感受。。。尤其瑞哥弄了光科这个博客,我本人本来又不太会讲话,又是第一次写这个,写的不好的还请大家多多包涵。。
今天给大家分享的是PID算法,我将从两个个方面来介绍PID。
一.什么是PID
1.PID控制原理
由图可以清晰的看出,PID据给定值rin(k)与实际输出值yout(k)构成控制方案,由比例,积分和微分三个环节来使被控对象输出目标值。
比例环节:成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。
积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T,T越大,积分作用越弱,反之则越强。
微分环节:反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
2.基本公式
常用的有两种,位置式和增量式,增量式启示就是位置式推导而来。下面列出位置式PID公式:
其中
Ti为积分时间常数,TD为微分时间常数,KP为比例系数。
二.怎么用PID
1.公式的离散化
很显然,由于积分的作用,公式适用于连续性函数,但在我们实际控制中,例如使用单片机,我们通常有个采样时间,即当这个时间很小时候,可以将公式离散化,近似看作相等。
高等数学大家都学过,积分效果可以表示面积,将横坐标以T0采样时间为间隔划分,时间很短的时候,可以把误差面积分成一个一个小长方形,因此上述公式可以化为:
而我们常见的形式就是:
很显然Ki=Kp*T0/Ti,Kd=Kp*Td/T0。
2.增量式PID
所谓增量式PID,就是将前后两个位置式u(t)相减。因此得到:
3.PID参数的整定
参数整定一般有两种方法,一种是利用一些算法寻找PID系数最优解,例如SOA,PSO,GA等算法。第二种就是根据经验和实际效果去调试,这种方法也用的比较多,口诀如下:
4.PID的优化方法
(1)积分分离
具体实现的步骤是:
1、根据实际情况,人为设定阈值ε>0;
2、当∣e (k)∣>ε时,采用PD控制,可避免产生过大的超调,又使系统有较快 的响应;
3、当∣e (k)∣≤ε时,采用PID控制,以保证系统的控制精度。
(2)抗积分饱和
具体实现的步骤是:
在计算u(k)时,首先判断上一时刻的控制量u(k-1)是否己超出限制范围。若超出,则只累加负偏差;若未超出,则按普通PID算法进行调节。
(3)梯形积分
在PID控制律中积分项的作用是消除余差,为了减小余差,应提高积分项的运算精度,为此,可将矩形积分改为梯形积分。
梯形积分的计算公式为:
(4)带死区的PID
在计算机控制系统中,某些系统为了避免控制作用过于频繁,消除由于频繁动作所引起的振荡,可采用带死区的PID控制算法,控制算式为:
(5)模糊控制
当|error|较大时,不论e_error的趋势如何,Kp取较大的值使系统快速响应。防止|e_error|瞬间过大,Kd取值小。为控制超调,Ki取值小。
当|error|中等时,为控制超调和提高响应速度,则Kp减小,Kd中等,Ki值增大。
当|error|较小时,保证系统的稳定性,加大Kp、Ki的值。为了避免振荡Kd值根据|e_error|具体而定。
其中,实际速度与期望速度的误差error 前后两次error的变化率为e_error
最后,理论和实际是有很大差别的,因此如果你想学好PID或者其他的东西,就得通过实践来让自己理解更深刻。