浅谈PID

时间飞逝,不知不觉就到了大二下学期,比起以前大一时的青涩,现在倒是成熟了不少。从一开始目睹学长参加各种比赛,分享自己的经验,到现在亲身经历这些,确实是很不一样的感受。。。尤其瑞哥弄了光科这个博客,我本人本来又不太会讲话,又是第一次写这个,写的不好的还请大家多多包涵。。

今天给大家分享的是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比1
一看二调多分析,调节质量不会低

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或者其他的东西,就得通过实践来让自己理解更深刻。

你可能感兴趣的:(知识分享)