Chinaunix首页 | 论坛 | 博客

Lzy

  • 博客访问: 208301
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-27 15:50
文章分类

全部博文(56)

文章存档

2014年(56)

我的朋友

分类: C/C++

2014-04-13 20:35:20

  PID算法原理及调整规律

一、PID算法简介

在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。

首先必须明确PID算法是基于反馈的。一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。

顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律:

比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。从而达到了调节速度的目的。显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。从而,加大P值,可以减少从非稳态到稳态的时间。但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。

积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。当差值不是很大时,为了不引起振荡。可以先让电机按原转速继续运行。当时要将这个差值用积分项累加。当这个和累加到一定值时,再一次性进行处理。从而避免了振荡现象的发生。可见,积分项的调节存在明显的滞后。而且I值越大,滞后效果越明显。

微分D:微分项部分其实就是求电机转速的变化率。也就是前后两次差值的差而已。也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。可见微分项的调节是超前的。并且D值越大,超前作用越明显。可以在一定程度上缓冲振荡。比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。

二、参数调整一般规则

由各个参数的控制规律可知,比例P使反应变快,微分D使反应提前,积分I使反应滞后。在一定范围内,P,D值越大,调节的效果越好。各个参数的调节原则如下:

PID调试一般原则

a. 在输出不振荡时,增大比例增益P。

b. 在输出不振荡时,减小积分时间常数Ti。

c. 输出不振荡时,增大微分时间常数Td。

三、参数调整一般步骤

a.确定比例增益

P确定比例增益P 时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0,PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。

b.确定积分时间常数Ti

比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。

c.确定积分时间常数Td

    积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。

   d.系统空载、带载联调,再对PID参数进行微调,直至满足要求

 

PID算法

  在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、…)。

  下面对控制点所采用的PID控制算法进行说明。

  控制点目前包含三种比较简单的PID控制算法,分别是:增量式算法,位置式算法,微分先行。这三种PID算法虽然简单,但各有特点,基本上能满足一般控制的大多数要求。

  1) PID增量式算法

  离散化公式:

  注:各符号含义如下

  u(t);;;;; 控制器的输出值。

  e(t);;;;; 控制器输入与设定值之间的误差。

  Kp;;;;;;; 比例系数。

  Ti;;;;;;; 积分时间常数。

  Td;;;;;;; 微分时间常数。

  T;;;;;;;; 调节周期。

  对于增量式算法,可以选择的功能有:

  (1) 滤波的选择

  可以对输入加一个前置滤波器,使得进入控制算法的给定值不突变,而是有一定惯性延迟的缓变量。

  (2) 系统的动态过程加速

  在增量式算法中,比例项与积分项的符号有以下关系:如果被控量继续偏离给定值,则这两项符号相同,而当被控量向给定值方向变化时,则这两项的符号相反。

  由于这一性质,当被控量接近给定值的时候,反号的比例作用阻碍了积分作用,因而避免了积分超调以及随之带来的振荡,这显然是有利于控制的。但如果被控量远未接近给定值,仅刚开始向给定值变化时,由于比例和积分反向,将会减慢控制过程。

  为了加快开始的动态过程,我们可以设定一个偏差范围v,当偏差|e(t)|< β时,即被控量接近给定值时,就按正常规律调节,而当|e(t)|>= β时,则不管比例作用为正或为负,都使它向有利于接近给定值的方向调整,即取其值为|e(t)-e(t-1)|,其符号与积分项一致。利用这样的算法,可以加快控制的动态过程。

  (3) PID增量算法的饱和作用及其抑制

  在PID增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发生突变时,由算法的比例部分和微分部分计算出的控制增量可能比较大,如果该值超过了执行元件所允许的最大限度,那么实际上执行的控制增量将时受到限制时的值,多余的部分将丢失,将使系统的动态过程变长,因此,需要采取一定的措施改善这种情况。

  纠正这种缺陷的方法是采用积累补偿法,当超出执行机构的执行能力时,将其多余部分积累起来,而一旦可能时,再补充执行。

  2) PID位置算法

  离散公式:

  ;=

  对于位置式算法,可以选择的功能有:

  a、滤波:同上为一阶惯性滤波

  b、饱和作用抑制:

  (1) 遇限削弱积分法

  一旦控制变量进入饱和区,将只执行削弱积分项的运算而停止进行增大积分项的运算。具体地说,在计算Ui时,将判断上一个时刻的控制量Ui-1是否已经超出限制范围,如果已经超出,那么将根据偏差的符号,判断系统是否在超调区域,由此决定是否将相应偏差计入积分项。

  (2) 积分分离法

  在基本PID控制中,当有较大幅度的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调量和长时间的波动。特别是对于温度、成份等变化缓慢的过程,这一现象将更严重。为此可以采用积分分离措施,即偏差较大的时,取消积分作用;当偏差较小时才将积分作用投入。

  另外积分分离的阈值应视具体对象和要求而定。若阈值太大,达不到积分分离的目的,若太小又有可能因被控量无法跳出积分分离区,只进行PD控制,将会出现残差。

  离散化公式:

  Δu(t) = q0e(t) + q1e(t-1) + q2e(t-2)

  当|e(t)|≤β时

  q0 = Kp(1+T/Ti+Td/T)

  q1 = -Kp(1+2Td/T)

  q2 = Kp Td /T

  当|e(t)|>β时

  q0 = Kp(1+Td/T)

  q1 = -Kp(1+2Td/T)

  q2 = Kp Td /T

  u(t) = u(t-1) + Δu(t)

  注:各符号含义如下

  u(t);;;;; 控制器的输出值。

  e(t);;;;; 控制器输入与设定值之间的误差。

  Kp;;;;;;; 比例系数。

  Ti;;;;;;; 积分时间常数。

  Td;;;;;;; 微分时间常数。

  T;;;;;;;; 调节周期。

  β;;;;;;; 积分分离阈值

  (3) 有效偏差法

  当根据PID位置算法算出的控制量超出限制范围时,控制量实际上只能取边际值U=Umax,或U=Umin,有效偏差法是将相应的这一控制量的偏差值作为有效偏差值计入积分累计而不是将实际的偏差计入积分累计。因为按实际偏差计算出的控制量并没有执行。

  如果实际实现的控制量为U=U(上限值或下限值),则有效偏差可以逆推出,即:

  =

  然后,由该值计算积分项

  3) 微分先行PID算法

  当控制系统的给定值发生阶跃时,微分作用将导致输出值大幅度变化,这样不利于生产的稳定操作。因此在微分项中不考虑给定值,只对被控量(控制器输入值)进行微分。微分先行PID算法又叫测量值微分PID算法。公式如下:

  离散化公式:

  参数说明同上

  对于纯滞后对象的补偿

  控制点采用了Smith预测器,使控制对象与补偿环节一起构成一个简单的惯性环节。

  PID参数整定

  (1) 比例系数Kc对系统性能的影响:

  比例系数加大,使系统的动作灵敏,速度加快,稳态误差减小。Kc偏大,振荡次数加多,调节时间加长。Kc太大时,系统会趋于不稳定。Kc太小,又会使系统的动作缓慢。Kc可以选负数,这主要是由执行机构、传感器以控制对象的特性决定的。如果Kc的符号选择不当对象状态(pv值)就会离控制目标的状态(sv值)越来越远,如果出现这样的情况Kc的符号就一定要取反。

  (2) 积分控制Ti对系统性能的影响:

  积分作用使系统的稳定性下降,Ti大(积分作用强)会使系统不稳定,但能消除稳态误差,提高系统的控制精度。

  (3) 微分控制Td对系统性能的影响:

  微分作用可以改善动态特性,Td偏大时,超调量较大,调节时间较短。Td偏小时,超调量也较大,调节时间也较长。只有Td合适,才能使超调量较小,减短调节时间。

 

 

阅读(843) | 评论(0) | 转发(0) |
1

上一篇:PID(1)

下一篇:精简VIM配置

给主人留下些什么吧!~~