目录

  • 1 基本情况
  • 1.1 位置式PID
  • 1.2 增量式PID
  • 1.3 PID控制适用系统
  • 2 PID三个量的含义解析
  • 2.1 P:比例
  • 2.2 I:积分
  • 2.3 D:微分
  • 2.4 PID:三者的关系
  • 3 PID控制中特殊情况考虑
  • 3.1 积分限幅
  • 3.2 积分分离
  • 3.3 积分饱和
  • 3.4 梯形积分
  • 3.5 变积分PID
  • 3.6 不完全微分PID
  • 3.7 微分先行
  • 3.8 死区PID
  • 3.9 模糊PID
  • 3.10 步进PID
  • 3.11 使用带时间的PID
  • 3.12 其他
  • 4 位置型PID中如何使用与调节PID的值
  • 4.1 如何使用
  • 4.2 如何调整PID参数值
  • 5 增量型PID中参数整定
  • 5 参考文献
  • 1 基本情况

    1.1 位置式PID

    (1)基本的连续PID控制
    公式:

    (2)离散PID控制
    将连续的进行离散化。表述。

    1.2 增量式PID

    (1)公式推到过程
    (a)k-1时刻的离散表示:

    (b)利用U(k) – U(K-1),得到本次的增量:

    (c)控制的输出是增量式的,就是deltUk。
    (2)说明
    (a)增量式PID的输出是增量,不是累加的。即为deltUk,而不是Uk
    (b)在有的地方,提到了输出是U(k) = U(k) – U(k-1),这个本质上也是位置式的,只是计算过程不一样而已!!!
    ( c) 如果要使用增量式,因为只输出增量,所以要求控制系统自己能够保持之前的输出效果,而不需要之前的量来累积。也就是有点地方说的机构具有积分作用。如步进电机。这有点像无PD控制了。
    (d)其只依赖于最近三次的数据,就能计算计算量小,对误差容忍小等。
    最最重要的:
    (e)增量式的PID的参数值虽然也叫PID,但是与位置式PID的PID的意义不同!! 具体说,在增量式中:I是比例,P是微分,D是二阶微分(微分的微分)。
    (f)因此,后面讲的很多涉及积分调整和控制的不涉及这里
    (g)后面说的比例对应这里的I,微分控制对应这里的P,输出类似。
    (h)位置PID整定的方法,在增量式整定时使用其思想,不能简单的将PID进行对应

    1.3 PID控制适用系统

    虽然PID控制在实际控制中有非常多的应用,据说在工业上,达到95%以上应用。但是它也是有适用范围的,不是包打天下的。
    它适用于线性系统,准确未二阶以内线性系统。
    所谓二阶线性系统,需要满足两个特性:
    (1)齐次性。要求:y = f(x),则ky = f(kx)
    (2)叠加性。要求:y1 = f(x1),y2 = f(x2),则有y1 + y2 = f(x1) + f(x2)。

    不适用系统包括:
    (1)高阶线性系统。
    如果高阶系统可以简化为二阶系统,则可以用PID控制。
    (2)非线性系统。
    这个可以用李雅普诺夫方法,在非线性系统的平衡点处,进行转化为线性后应用。具体可以参见这里的介绍:https://zhuanlan.zhihu.com/p/58738073

    2 PID三个量的含义解析

    重要说明:下面章节说的PID针对位置型PID说的。增量式的参照执行:
    (1)下面章节的P比例对应增量的I。
    (2)下面章节涉及到的D微分对应P。
    (3)下面章节涉及到的输出,增量式的输出可参照执行。

    2.1 P:比例

    (1)他当前的输出只与当前偏差有关系,与历史没有关系。
    (2)只要有偏差,该输出就存在。没有了偏差,就没有输出。
    (3)他的输出值与偏差值是一个线性关系。
    (4)从大的偏差开始控制,随着控制的时间拉长,偏差值越来越小,他的输出也会越来越小。(当然,接近控制值后,可能会有震荡的情况除外)。如下图示意所示:

    (5)注意上图中,输出跟偏差是线性关系,但是跟时间不是线性关系。因为P的输出越大,则偏差较少越快,对应P的减少越快,到最后,在趋近设置值时会越来越缓慢。

    2.2 I:积分

    (1)他的输出是历史上所有偏差的累积。如果是离散PID的话就是历史偏差累加。
    (2)他不仅与当前偏差有关系,也与历史偏差有关系。因此,即使当前偏差为0,他也会有输出。
    (3)积分的引入,是由于某种阻力的存在。来达到以下两个目的:
    (a)积分的作用,是为了抵抗某种阻力,保持当前积累的效果。
    是把历史上所有的误差进行了累计,所以即使当前没有了误差,他也会有输出,这个输出会保持住当前状态,以抵抗某种阻力。例如:旋翼无人机的持续旋转,抵消重力,实现空中某个位置的悬停。
    因此,一般,需要抵消某种阻力存在时,必须需要积分的存在,I是不能少的。
    (b)积分的作用,是为了解决稳态误差(也有叫做静态误差的)。
    如上面说的那样,有某种外面阻力存在的话,如果只靠P调节的话,会导致P无论怎么调,都会存在以下情况:最后进入稳态后,与设置值,之间会有一个稳定的误差,称为稳态误差。
    这个就需要通过积分,将其消除掉。
    (4)从大的偏差开始控制,随着控制的时间拉长,偏差值越来越小,他的输出也会越来越小。直到为0(当然,这里假设没有考虑震荡情况,按照特列,直接到0,实际这是不太可能的。只是示意一下)。如下图示意所示:

    (5)从上图可以看出,输出一直在增大的,但是随着时间拉长,偏差越来越小,其累积的值也越来越小,最后称为定值(偏差为0).。当然,这种情况是理想的,因为往往会超调,超调后,方向相反,则累加和会变小。后续的图就没办法用这个图表示了,这里没有表示。可以同样逻辑分析。
    (6)积分的副作用
    积分会带来很多的辅作用,比如积分饱和、积分意外累积,对变化影响不利等。详见3章中相关章节。

    2.3 D:微分

    (1)输出与偏差的变化有关系,如果偏差一直保持不变,则D没有输出;
    (2)这个输出的结果阻尼,是要抵消PI的输出结果,使其不至于让他们的输出变化太快。
    (3)这个阻尼有两种结果:
    (a)当PI的输出促使偏差减小,向设置值靠拢时,微分会阻止这种靠拢。如果D值设计合理,这种阻尼是阻止其较快的到达,提前刹车,防止过充引起超调震荡;
    (b)当PI的输出,过充后,促使偏差减大时,微分也会阻止这种变大,设置合理,能够将其拉回到设置点。
    (4)D实现这种阻尼的方式是基于预测的方式来实现的,预测的方式是将过去的偏差变化,认为是下面也会有的变化。将这个变化结果作为预测结果,提前减少输出。
    (5)D的副作用。
    (a)如果D太小,则起不到较好的阻尼效果,会使震荡收敛时间长;
    (b)如果D值设置太大,则会使得微分阻尼过调,引起高频震荡。设置无法收敛。
    (c)D的出现,使得系统对噪声、干扰、变化(如设置值变化)特别敏感,因为噪声和干扰的出现会使得偏差出现剧烈变化,从而导致系统出现高频震荡,或者无法快速收敛。解决方法:低通滤波器,微分先行等,详见3.6,3.7。

    2.4 PID:三者的关系

    (1)PI关系。
    (a)从上面的图中可以看出,从开始控制到偏移量逐渐缩小到偏差为0的过程中,二者是一个P输出逐渐减小,I输出逐渐增大过程。理想情况偏差为0时,二者的输出,最好能保持一个抵消阻力的情况,这样正好能够平衡稳定。
    (b)但是以上所说的情况,由于起始点不同,每次积分累积的输出也不同,在偏差为0时,所以往往有超调,这就引起了震荡。
    (c)上述情况的一个特例,就是如果没有外力时,应该没有I,此时输出为0。此时虽然没有了输出,但是由于延迟输出及系统的惯性,所以也会有震荡。
    (2)PID关系,上面的情况,往往会引起震荡,此时D能阻尼、对冲这种过调。

    3 PID控制中特殊情况考虑

    上面介绍了最基本的PID控制情况,实际在控制中会遇到很多特殊情况,包括:
    (1)意外偶发阻力干扰;
    (2)启动停止时控制;
    (3)大范围的误差控制;
    (4)单向误差累积。
    还需要再基本的PID控制中引入其他辅助或变换的做法。

    3.1 积分限幅

    (1)针对问题
    在开始控制后,有一个较大误差,且有一个非常大干扰的话,例如外界阻力,阻止其误差减小,如上面说的旋翼飞机被人死死的按住。虽然他的PI都在输出,但是误差一直没变。这时候,随着时间的拉长,积分的输出值会越来越大。如下图所示:

    这将导致以下问题:
    (a)这种输出可能超过了控制系统承受范围
    (b)而一旦这种阻力去掉,会使得这种输出很大很大,引起很大的超调和震荡。
    (2)解决方法
    引入积分限幅。原理给定一个积分输出的最大值限制,一旦超出,则不再增加。
    上述被意外阻挡情况下的输出图如下图所示:

    这个在这里有介绍:https://www.bilibili.com/video/BV1B54y1V7hp?p=4

    3.2 积分分离

    (1)针对问题
    在大幅度增减设定值,或者控制启动、结束过程中,短时间内会有很大偏差。而积分由于会累积这种误差,造成后面都持续偏大,会使得整个过程中的输出过大,从而引起超调和震荡。
    (2)解决方法
    引入了积分分离的思想。其思路是::
    (a)偏差值较大时,取消积分作用,以免于超调量增大。实际上利用PD进行控制。
    (b)偏差值较小时,引入积分作用,以便消除静差,提高控制精度。利用PID进行控制。

    问题关键是如何选择这个偏差阈值。
    详见:https://blog.csdn.net/foxclever/article/details/80274790
    在这里有介绍:https://www.bilibili.com/video/BV1B54y1V7hp?p=4

    3.3 积分饱和

    (1)针对问题
    如果一个系统总是存在统一个方向的偏差,就可能无限累加为一个很大的输出,称为饱和。饱和后,如果此时又有一个反向的偏差,会使得这个反向误差首先抵消饱和部分,然后才能响应反向偏差。从而影响系统收敛的性能。
    (2) 解决方法
    引入了抗积分饱和的PID算法。所谓抗积分饱和算法,其思路是在计算U(k)的时候,先判断上一时刻的控制量U(k-1)是否已经超出了限制范围。若U(k-1)>Umax,则只累加负偏差;若U(k-1)<Umin,则只累加正偏差。从而避免控制量长时间停留在饱和区。
    具体参见:https://blog.csdn.net/foxclever/article/details/80294264

    3.4 梯形积分

    从微积分的基本原理看,积分的实现是在无限细分的情况下进行的矩形加和计算。但是在离散状态下,时间间隔已经足够大,矩形积分在某些时候显得精度要低了一些,于是梯形积分被提出来以提升积分精度。

    https://blog.csdn.net/foxclever/article/details/80297989

    3.5 变积分PID

    积分的系数分段,误差越大时I越小,误差越小时,I越大。
    类似于积分分离,积分分离应该是这个的一个特例。具体参见:https://blog.csdn.net/foxclever/article/details/80466623

    3.6 不完全微分PID

    微分信号的引入可改善系统的动态特性,但也存在一个问题,那就是容易引进高频干扰,在偏差扰动突变时尤其显出微分项的不足。为了解决这个问题人们引入低通滤波方式来解决这一问题。
    微分项有引入高频干扰的风险,但若在控制算法中加入低通滤波器,则可使系统性能得到改善。方法之一就是在PID算法中加入一个一阶低通滤波器。即高频降低通过,低频通过。
    详细见:https://blog.csdn.net/foxclever/article/details/80551919

    实现时,只对D加了一个一阶低通滤波:
    d * (1 – alpha) * (Ek – Ek-1) + alphaEk-1。

    3.7 微分先行

    针对频繁切换设定值时,微分会有干扰,不稳定。因此,改进为不对偏差取微分,而是对输出值取微分。
    详见:https://blog.csdn.net/foxclever/article/details/80633275

    3.8 死区PID

    在计算机控制系统中,由于系统特性和计算精度等问题,致使系统偏差总是存在,系统总是频繁动作不能稳定。为了解决这种情况,我们可以引入带死区的PID算法。带死区的PID控制算法就是检测偏差值,若是偏差值达到一定程度,就进行调节。若是偏差值较小,就认为没有偏差.
    https://blog.csdn.net/foxclever/article/details/80778748

    3.9 模糊PID

    在PID的基础上,增加一个PID的变化值。
    这个变化值与偏差的范围和大小建立一个关系。
    https://blog.csdn.net/foxclever/article/details/83932107

    3.10 步进PID

    (1)针对问题:
    当设置值突然大幅变化时,会造成微分项产生较大的输出,当然这个可以使用微分先行的方式解决;但是同时比例输出也会有大的变化,当然我们可以利用比例先行,但这样会破坏原来的PID控制,带来别的问题。
    (2)解决方法
    采用步进式的方式设置设定值,就是通过分几步增加设置值,逐步到最终的设定值。
    详见:https://blog.csdn.net/foxclever/article/details/105747647

    3.11 使用带时间的PID

    简化的PID中是已经包含了时间的,且这个时间间隔是相等的,如果不相等,则可能需要引入原来的时间运算。
    这里有介绍:
    https://blog.csdn.net/foxclever/article/details/122801130

    3.12 其他

    还有不少控制的,可以参看这里:https://blog.csdn.net/foxclever/category_9281151.html

    4 位置型PID中如何使用与调节PID的值

    4.1 如何使用

    实际使用时,PID可能不是都使用的,有:
    (1)PI,D=0
    有自然的阻尼的情况。如水中弹簧震荡,水有阻尼,或者阻尼能够较好的平衡掉该中情况下PI的震荡。

    (2)PD,I=0
    没有外界阻力情况,物理机械能够保证自平衡。
    比如在水平面上小车控制运动到指定位置,且这个小车电机等没有阻力,到位置后不需要再输出就可以保持。

    (3)PID,比较常见的

    (4)PIDT,也用上了T
    如上面3.11中,就需要考虑将T,也加入了。

    4.2 如何调整PID参数值

    (1)先调P
    从小到大,依次增加调节。
    那么增加到什么情况合适呢,考虑两个因素:
    (a)最大误差情况下,是否能够达到设定值
    (b)最大误差情况下,达到设定值的时间
    上面两个因素,都是考虑最大误差情况下。这个最大误差根据控制对象,有的有明显的边界,如果没有明显边界,则应该考虑先定一个边界,在边界之外使用固定的输出,或者使用固定的P来输出,类似于积分限界、防过饱和的情况。在边界之内再进行精确调节。
    这两个因素考虑时,(a)主要在有明显的外界阻力需要抵抗,则如果P小的时候,是否无法达到设定的值的,需要调节P到达设定值,可以适当超调一些。让其震荡得到。
    (b)主要是看效率,在有外力需要抵消情况下看,还要看时间。没有外力时,虽然一直可以达到,但是要考虑时间。

    综合考虑一下上面,两种情况后,确定P。

    (2)第二个调节I的情况
    如果认为D影响较小的情况下。可以先调节这个。

    (3)第二个调节D的情况
    以下情况可以使用第二个调节D:
    (a)如果认为I较小的情况
    (b)调节P后有较大低频震荡,需要先把震荡调节下来。
    在进行了PD调节后,发现有静态误差,则调节一下I,补充进入。

    5 增量型PID中参数整定

    第4章说的PID针对位置型PID说的,增量式的参照执行:
    (1)下面章节的P比例对应增量的I。
    (2)下面章节涉及到的D微分对应P。
    (3)下面章节涉及到的输出,增量式的输出可参照执行。

    因此,增量型PID参数整定过程如下:
    (1)先调节I,P=0,D=0。I从小到达,这个过程中会有如下过程:
    (a)能够收敛,但是收敛速度太慢!
    (b)稳定加快,出现震荡趋势,并趋势逐渐明显
    (c)有震荡,震荡的幅度在逐渐减小,收敛
    (d)振幅增大,收敛时间过长,甚至无法收敛,
    上述过程中,选c那个参数。
    (2)在步骤1基础上(I已经选取了上面步骤c的值),D=0,调节P,从小到大,经历以下过程:
    (a)对上面的震荡效果没有影响,影响逐渐出现,振幅减小,收敛加快
    (b)有较好的振幅减小,收敛效果
    (c)新的震荡出现,更加不稳定
    上述过程中,选b步骤的值给I
    (3)在步骤2基础上,选取P、I值,然后调节D,从小到大,经历如下过程:
    (a)对上面的震荡效果没有影响,影响逐渐出现,振幅减小,收敛加快
    (b)有较好的振幅减小,收敛效果
    (c)新的震荡出现,更加不稳定
    上述过程中,选b步骤的值给D。
    (4)PID关联、精细化调节
    上面已经初步调节好了PID,确定了他们的量级。由于PID是相关联的,且还需要处理很多特殊情况,做多的实验,所以,还需要再精细的调节。

    这里可以参考一个其他人做的实验过程,更加形象直观:
    狂暴战车 直流电机转速闭环,增量式pid调试过程

    5 参考文献

    【1】这里有比较抽象的介绍:https://blog.csdn.net/foxclever/article/details/80250994
    【2】其中很多出自这个英文的网站,可以查看这里:http://brettbeauregard.com/blog/2011/04/improving-the-beginner%e2%80%99s-pid-derivative-kick/
    【3】关于PID,这里有一个较好的解释: PID算法原理 一图看懂PID的三个参数
    【4】同样,这里有视频课程介绍
    【5】狂暴战车 直流电机转速闭环,增量式pid调试过程

    来源:一叶清风扬

    物联沃分享整理
    物联沃-IOTWORD物联网 » PID控制

    发表评论