在日常工作中,PID控制系统是一种非常常见的工具,但很多人对于PID究竟是什么以及如何进行调节感到困惑。今天,我们将用通俗易懂的方式为大家详细讲解PID。
一、PID的应用场景
实际上,无论是在自动化领域还是日常生活中,我们都或多或少地接触过PID。例如,空调系统、定速巡航系统以及恒压供水系统(如图1)等设备中都应用了PID技术。这些系统的共同特点是需要我们设定一个目标值,然后设备会根据这个目标值自动进行调节。
例如:在恒压控制系统中,我们设定一个压力值(10MPa),系统就需要稳定在这个压力值附近;在空调系统中,我们设定一个温度值(26℃),希望室内温度能够稳定在这个值附近。当我们设定好参数后,设备如何自动调节呢?这就是通过PID功能实现的。
图1:PID应用场景示意图
二、PID控制系统
在深入了解PID各参数的作用之前,我们先从宏观角度了解一下PID控制系统。如图2所示,一个完整的PID控制系统主要由以下几个部分组成:给定环节、控制器、执行机构、被控对象和反馈环节。
图2:PID控制系统结构图

我们逐一解释每个环节的作用。为了更好地说明这些环节的作用,我们以生活中的一个例子来说明:
假设我们需要骑自行车沿着直线行驶1000米。那么,直线行驶1000米就是“给定环节”,因为我们预先知道需要行驶的距离和方向。骑车的人相当于“控制器”,由大脑控制,大脑不能直接控制自行车,而是通过发出指令来控制我们的手和脚,从而控制自行车,手和脚就是“执行机构”,而自行车就是“被控对象”。在骑行过程中,可能会遇到一阵风或路面上的障碍物,这些障碍物就是“扰动”。
我们在骑行过程中是否沿着直线走,可以通过眼睛观察来判断,眼睛收集自行车的信息(是否走偏),这个过程就是“反馈环节”。仅仅知道是否走偏还不够,需要及时调整,如何调整呢?就是通过预期设定(给定环节)与实际路线(反馈环节)相比较,得到的差值进行修正。
将这个生活中的例子应用到工业中,是非常相似的。如图4所示的是:恒液位控制系统。我们通过触摸屏设置水池中需要达到的液位高度,当PLC接收到我们设置的命令后,通过传感器反馈实际的液位高度与我们设定的液位高度进行比较,得到差值。如果实际液位低于设定值,则驱动变频器带动水泵向水池中加水;当实际液位高于设定值时,变频器则停止加水。
三、PID三个参数的作用
在了解了PID控制系统之后,我们再来探讨PID这三个参数的作用。首先,我们从整体的角度来看这个公式,如图3所示:
①u(t) :输出曲线,即PID输出值随时间的变化曲线,也就是最终输出信号的大小。
②Kp:比例系数。这个系数由人为设定,可以大也可以小,调节PID参数时,Kp系数尤为重要。
③e(t) :偏差,即设定值与实际值的差值。
④Ti:积分时间。
⑤Td:微分时间。
图3:PID公式示意图
在图3这个公式中,u(t)和e(t)是比较容易理解的,剩下的Kp、Ti、Td参数是我们需要人为调节的(当然,很多设备也具有自动调节功能,例如PLC就可以自动整定这三个参数)。但是,在这个公式中,我们可以得出几个结论。
第一个结论是:当e(t)为0时,整个PID结果为0,即偏差为0时,PID没有输出,这说明PID输出一定是需要有偏差的。
第二个结论是:P+I+D的结果等于u(t)。
01
比例系数:Kp
比例调节是根据当前值与目标值的差值,乘以一个Kp系数,得到一个输出值,这个输出值直接影响了下次当前值的变化。公式为:U(t)=Kp*e(t)
举例:(1) 如图4所示,有一个水池,需要时刻保持1米的高度,目前水桶里有0.2米的水。
图4:水池示意图
那么采用P(比例)的方法加水:即每次测量与1米的误差,并加入与误差成比例的水量,比如设Kp=0.5:
第一次,误差是1-0.2=0.8米,那么加入水量是:Kp*0.8= 0.4毫米,
第二次,误差是1-0.6 =0.4米,那么加入水量是:Kp*0.4=0.2米。
按照这种方式,我们加若干次水,然后绘制成表格(如图5)及曲线图(如图6)。我们可以看到,加到第8次水之后,误差基本上就消失了,基于误差的输出也只有0.00313。而从图6的曲线图也可以看到,从第6次开始,水位基本上就是趋于稳定的。那么,这不正是我们想要的结果吗?预期是需要保持1米的高度,加了8次水刚好就到了1米左右。但在实际的工程中,可能是一边放水,一边往水池里加水。如图4所示,如果说有人把水池的水龙头打开了一边加水一边放水,还是加8次水就刚好到了1米的位置吗?
图5
图6
我们一起来分析一边放水一边加水的这种情况。有一个水池下面安装了水龙头,仍需保持1米的高度,目前水桶里有0.2米的水,但每次加水都会流出0.1米。
我们仍然设Kp=0.5
第一次:误差是 1-0.2=0.8米,那么加入水量是 Kp*0.8=0.4米。最终水位时是0.4+0.2-0.1=0.5
第二次:误差是1-0.5 =0.5毫米,那么加入水量是 Kp*0.5=0.25米,最终水位是0.5+0.25-0.1=0.65
我们按照这种方式推算,绘制成表格(如图7)及曲线图(如图8)。从表格和曲线中可以看到,从第6次开始水位基本上稳定在0.79左右,也就是水再也上不去了,这其实也很好理解,因为每次加的水量基本上等于流出的水量(0.1米),所以水位基本上就没上升,也没下降。那么这种情况就叫做稳态误差,这也是比例调节的不足之处,需要积分参数来弥补。当然,有的人会提出,那是不是把Kp这个参数往大了调,是不是就可以让水时刻稳定在1米的位置呢?
为了验证,我们把Kp修改成2,而不再是0.5了,那这个表格(如图9所示)和曲线(图10所示)。可以看到比例控制引入了稳态误差,且无法消除。比例常数增大可以减小稳态误差,但如果太大则引起系统震荡,不稳定。
图7
图8
图9
图10
02
积分系数:Ki
为了消除稳态误差,加入积分,积分控制就是将历史误差全部加起来乘以积分常数。公式为Ki*( e(1)+ e(2)+ e(3)……)。e(1)代表的是第一次误差,e(2)代表的是第二次误差,依次类推。
还是先设Kp=0.5,Ki= 0.3
第一次: 误差为0.8, 比例部分 Kp*0.8=0.4, 积分部分 Ki*(e(1))= 0.24,加入水量u为0.4+0.24=0.64,最终水位0.2+0.64-0.1= 0.74米。
第二次: 误差为0.26,比例部分Kp * 0.26=0.13,积分部分Ki*(e(1)+e(2))= 0.318,加入水量u为 0.13+0.318=0.448,最终水位:0.74+0.448-0.1=1.088米。将推算的数据绘制成表格(如图11)及曲线图(如图12)。从表格及曲线图可以看到,水位第一次到第5次水是有些波动,但是随着积分项发挥作用,水位逐渐趋于稳定在1米左右。这就完美解决了比例项的弊端(存在稳态误差)。
图11
图12
最后,还是微分参数没有写出来,那如果加入微分项,你觉得这个PID输出曲线是如何变化的呢?欢迎大家评论留言!
如何获取电气热门资料?
操作指引如下!