系统理解PID控制,这篇文章就够了,通俗易懂!

发布时间 2023-08-07 14:43:13作者: 一杯清酒邀明月

  在我们实际工作经常会用到PID控制系统,但是对这个PID到底是什么?该如何调节,我们相信大家都比较头痛。但是今天,我们就用大白话的方式给大家讲讲PID。

一、PID应用场景

  其实不管是在自动化行业还是在生活中,我们都或多或少都会接触PID。比如空调系统、定速巡航系统、恒压供水系统(如图1)上都可以见到PID的影子。在这些系统中,最大的一个特点就是我们需要设定一个我们想要的数据,然后设备就根据我们的设定,自动进行调节。

  比如:在恒压控制系统中,设定一个压力(10MPa),那么这个系统就需要稳定在我设定的压力值10MPa左右;在空调系统中,我们设定好了一个温度(26℃)之后,我们当然希望室内的温度就一直稳定在26℃左右嘛。在我们设定好了参数之后,设备如何自动调节呢?就是通过PID功能进行调节的!

二、PID控制系统

  在PID各参数的作用之前,我们先宏观来了解一下PID控制系统。如图2所示,一个完整的PID系统中主要由以下几部分组成:给定环节、控制器、执行机构、被控对象、反馈环节。

  我们逐个来说明每个环节的作用。为了说明这些环节的作用,我们举一个生活的例子:

  现在我们接到一个任务,需要骑一辆自行车沿着直线走1000米。那么直线走1000米就是“给定环节”了,因为我预先就知道了需要走多少米距离并且走的是直线。骑车的是“人”,人由大脑控制,那么大脑就是“控制器”了,大脑不能直接控制车辆,然后大脑发命令的方式去控制我们的手和脚从而控制自行车,那么手和脚就是“执行机构了”,而最终我们控制的是自行车,那么自行车就是“被控对象”了。那么在骑车的过程中,可能会出现一阵风或者路上出现石头或者坑等,那么这些石头或者坑呢,就是“扰动”。我们在走直线的过程中,到底有没有沿着直线走呢?我们可以通过眼睛看,那么眼睛把自行车的信息收集起来(是否走歪了),这个过程就是“反馈环节”。仅仅知道是否走歪了还不行,需要及时调整,如何调整呢?就是通过预期设定(给定环节)与实际路线(反馈环节)相比较,得到的差值进行修正。

  那么把生活中的这个例子应用到工业中来,其实是非常类似的。如图4所示是:恒液位控制系统。我们通过触摸屏设置水池里需要到达的液位高度,当PLC接到我们设置的命令之后,通过传感器反馈实际的液位高度与我们设定的液位高度相比较,得到差值。如果低于我们设定的液位值,则驱动变频器带动水泵往水池里加水,当高于我们设定的液位值,变频器则停止加水。

三、PID三个参数的作用

我们了解了PID控制系统是怎么回事之后,再来了解PID这三个参数的作用就会相对简单了。首先我们从全局的眼光来看这个公式,如图3所示:

①u(t) :输出曲线,pid输出值随时间的变化曲线。也就是最终输出信号的大小。

②Kp:比例系数。这个系数由人为给定,可以大也可以小,我们要调节PID参数的话,Kp这个系数尤为重要。

③e(t) :偏差,设定值与实际值的偏差。

④Ti:积分时间。

⑤Td:微分时间。

  在图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所示,有个水池,需要时刻保持1m的高度,目前水桶里有0.2m的水。

  那么采用P(比例)的方法加水:即每次测量与1m的误差,并加入与误差成比例的水量,比如设Kp=0.5:

第一次,误差是1-0.2=0.8m,那么加入水量是:Kp*0.8= 0.4mm,

第二次,误差是1-0.6 =0.4m那么加入水量是:Kp*0.4=0.2m。

  按照此种方式,我们加若干次水,然后绘制成表格(如图5)及曲线图(如图6)。我们可以看到加到了第8次水之后,基本上就没有误差,基于误差的输出也只有0.00313。而从图6的曲线图也可以看到,从第6次开始,水位基本上就是趋于稳定的。那么,这不正是我们想看到的结果吗?预期是需要保持1m的高度,加了8次水刚好就到了1m左右。但是在实际的工程中,可能是一边放水,一边往水池里加水。如图4所示,如果说有人把水池的水龙头打开了一边加水一边放水,还是加8次水就刚好到了1m的位置吗?

  我们一起来分析一边放水一边加水的这种情况。有个水池下面安装了水龙头,仍需保持1m 的高度,目前水桶里有0.2m 的水,但每次加水都会流出0.1m。

我们仍然设Kp=0.5

第一次:误差是 1-0.2=0.8m,那么加入水量是 Kp*0.8=0.4m.最终水位时是0.4+0.2-0.1=0.5

第二次:误差是1-0.5 =0.5mm 那么加入水量是 Kp*0.5=0.25m,最终水位是0.5+0.25-0.1=0.65

  我们按照这种方式推算,绘制成表格(如图7)及曲线图(如图8)。从表格和曲线中可以看到,从第6次开始水位基本上稳定在0.79左右,也就是水再也上不去了,这其实也很好理解,因为每次加的水量基本上等于流出的水量(0.1m),所以水位基本上就没上升,也没下降。那么这种情况呢,就叫做稳态误差,这也就是比例调节的不足,需要积分参数来弥补。当然,有的人会提出,那是不是把Kp这个参数往大了调,是不是就可以让水时刻稳定在1m的位置呢?

  为了验证,我们把Kp修改成2,而不再是0.5了,那这个表格(如图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.74m。

第二次: 误差为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.088m。将推算的数据绘制成表格(如图11)及曲线图(如图12)。从表格及曲线图可以看到,水位第一次到第5次水是有些波动,但是随着积分项发挥作用,水位逐渐趋于稳定在1m左右。这就完美解决了比例项的弊端(存在稳态误差)。

 最后,还是微分参数没有写出来,那如果加入微分项,你觉得这个PID输出曲线是如何变化的呢?欢迎大家评论留言!