PID是对误差的比例,积分,还有微分。比例很好理解,就是到达目标位置,系数就是到达目标位置的快慢。微分也很好理解,就是要保证变化速度要和目标一致,微分系数就是速度到达目标速度的快慢。误差的积分,实际是面积差,目标信号对时间积分,就是目标信号和时间轴围成的区域的面积,然后和实际输出的面积做差,积分作用是让二者一致。

    下面举例尽量说明一下PID控制是怎么一回事。

1)假设我们面对的系统是一个简单的水箱的液位,要从空箱开始注水直到达到某个高度,而你能控制的变量是注水笼头的开关大小。那么这个简单的数学模型就是   dx=u         

对于这个简单的系统,我们甚至只需要一个比例环节   u=k_{p} e

就能将其控制住。
说白了,也就是水箱液位离预定高度远的时候就开大点,离的近的时候就开小点,随着液位逐步接近预定高度逐渐关掉水龙头。

此时,k_{p}的大小代表了水龙头的粗细(即出水量大小对液位误差的敏感程度,假设水龙头开度与误差正比关系),越粗调的越快,也就是所谓的"增大比例系数一般会加快系统响应"。如下图:wKiom1mLvS3hV_6FAAA6lrWXSjo397.jpg-wh_50

2)假设咱们这个水箱不仅仅是装水的容器了,还需要持续稳定的给用户供水。

那这个系统的数学模型就需要增加一项:

dx=u-c,这里这个c是个正的常数。

这时候我们发现如果控制器只有一个比例环节,那么当系统稳定,也就是dx=0的时候,恰好e=\frac{c}{k_{p}}e在系统稳定时不为0,液位离我们想要的高度总是差那么一点,这也就是所谓的稳态误差,或者叫静差。

这时候c是固定的,那么当然k_{p}越大,e就越小。这也就是所谓的增大比例系数P在有静差的情况下有利于减小静差。如下图:

wKioL1mLvcDSUdjnAADB-EqvlPU223.png-wh_50

3) 从上面的式子e=\frac{c}{k_{p}}大家可以看出来,k_{p}再大那也只是个分母,不可能把e变成0的。老是调不到预定位置老板是会骂人的,这可咋办?

然后有人就想到,第二小节里头那个水箱跟第一小节的相比,不就是多了一个漏水的窟窿么。它漏多少我给它补多少,那不就成了第一小节里的简单系统了么。靠谁补呢?积分环节这时候就派上用场了。
我们把之前的控制器变成比例环节+积分环节:u=k_{p} e +k_{i}\int_{0}^{t} edt

积分环节的意义就相当于你增加了一个水龙头,这个水龙头的开关规则是水位比预定高度低就一直往大了拧,比预定高度高就往小了拧。如果漏水速度不变,那么总有一天这个水龙头出水的速度恰好跟漏水的速度相等了,系统就和第一小节的那个一样了。那时,静差就没有了。这就是所谓的积分环节可以消除系统静差。

4)啥叫积分时间常数呢?一般PID控制里,表示积分环节敏感度的那个系数k_{i}=\frac{k_{p} }{T_{i}}, 这个T_{i}就是积分时间常数。从这个式子我们可以看出,积分时间常数越大,积分环节系数就越小,积分环节就越不敏感(也就是第二个水龙头越细)。

当咱们只有一个比例环节的水龙头注水的时候,是不会注水注多的,因为离得越近水龙头关的越小啊。

但是当咱们用俩水龙头注水的时候,在没到预定高度前第二个积分环节的水龙头可以一直在往大了拧的,那当到达预定高度的时候它恰好拧到最大,自然而然就会注水注多了。而多出去的这部分水就叫做“超调”。第二个水龙头越粗,多注的水就会越多,它调到恰好等于漏水速度的时间就会越快,但同时会多更多波折。
于是,老师告诉我们增大积分时间I有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。如下图:

wKiom1mL6q7RomtxAADjyn-5ay0367.png-wh_50

5)接下来我们来看点有意思的东西。还是上面这个系统,假如我们选用相同的积分时间常数,但是选择不同的比例系数会如何呢?

wKiom1mL6t7jAcChAAA4IB4BMTw142.jpg-wh_50

看到上面这幅图,一些记性好的童鞋可能就有疑问了。因为老师明明说过”过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏“,但是上面这幅图里怎么比例大的反而超调小呢?
其实上面这幅图很好解释,小节4里我们说明了PI控制器超调出现原因是积分这个水龙头在到达目标液位时也恰好开到了最大。而比例这个水龙头越粗,那么它在超出目标液位时对超调的抑制也就越明显。
这里,我想再强调的是:PID参数整定的结论是根据普遍经验总结的,但是针对某个具体的系统不一定完全适用。

6) 在上面的系统中,我们假设用户用水的固定的一个值,但是实际情况中用户的用水量往往是变化的。假如我们的系统是dx=u-c(t)呢?
来分析一下:
我们的控制目标是让x=x_{d},系统误差的定义是:e=x_{d} -x;
那么误差状态方程就是de=dx_{d}-dx=dx_{d}-k_{p} e -\frac{k_{p} }{T_{i}}  \int_{0}^{t} edt+c(t)
上面我们设定的控制目标是个常数,所以dx_{d}=0
那么de=-k_{p} e -\frac{k_{p} }{T_{i}}  \int_{0}^{t} edt+c(t)
从上面这个式子我们可以看出,当e=0时,\frac{k_{p} }{T_{i}}  \int_{0}^{t} edt不再变化,而c(t)是始终变化的。
那么此时de不恒为零,也就是说e不恒为零。
也就是说,当c变成c(t)的时候,e=0就不再是系统的稳定平衡点了,经典意义上系统不再稳定。

7)这里加一个微分环节D变成PID控制会不会让系统重新稳定呢?
当加入微分环节,de=-k_{p} e -\frac{k_{p} }{T_{i}}  \int_{0}^{t} edt-k_{p}\tau  de  +c(t)

那么de=\frac{-k_{p} e -\frac{k_{p} }{T_{i}}  \int_{0}^{t} edt+c(t)}{1+k_{p}\tau  }
对于任意\tau\tau >0),微分环节都让de的变化减慢了,这也就是
微分环节主要作用是在响应过程中抑制偏差向任何方向的变化
微分常数不能过大,否则会使响应过程提前制动,延长调节时间
而至于“微分环节会提高系统抗扰动能力,降低系统抗噪声能力”,更多指的是大多数细微测量噪声造成的e很小,但瞬时的de较大,微分环节相对于PI环节更容易收到这些细微噪声的影响。
但是,无论如何选取微分参数\tau,PID控制都不能使系统稳定。从这里,我们可以看到PID控制的局限。


--------------

1.比例环节P可以反映输入信号当前的信息(现在)

2.积分环节I可以反映输入信号“历史变化”的信息(过去)

3.微分环节D可以反映输入信号未来的变化趋势的信息。(将来)

根据这三点可以定性地理解PID参数对系统的影响。



作者:忘川孤帆
链接:https://www.zhihu.com/question/23088613/answer/23942834
来源:知乎