PID是一种控制算法,它的中文名称是比例积分微分控制。

这种控制的基本思路是根据偏差的大小运用比例、积分、微分计算出一个控制量,将这个控制量输入被控制的系统,系统接收到该输入量后会输出一个相应的输出量,PID控制器再检测该输出量,并再计算偏差,然后再循环以上过程,以下就是控制框图。这里P,I,D并不是都要加上去的,有时只用P或者只用PI。

水温调节pid 强化学习 python 水温控制pid_框图

上面的描述对初学者可能比较不好理解,下面用一个例子在结合上面的控制框图做一下说明,可能会对理解有帮助。

这个例子的场景是: 你在用煤气灶烧一壶水,但是让人蛋疼的不是让你把水烧开,而是要你把水加热到50度,并一直保持在50度。这个场景中给你配了温度计,你能看到水温是多少度。你可以控制的只有煤气灶的阀门开度,从而控制火的大小,并且每隔一定的时间——如一分钟——调一次阀门开度。

结合上面的控制框图,把水温控制在50度,即框图中的设定值Set point value就是50度;通过温度计测到的水温就是被控系统的输出,即图中的y(t);Set point value-y(t)就是偏差e(t);你的大脑现在就是PID控制器;你调节的煤气灶阀门开度就是被控系统的输入量,即u(t);调节阀门开度的间隔为控制器的采样时间;

比例控制作用

刚开始是你发现水温接近0度,这时我想你会把阀门开到最大,以便快速的升温,当水温慢慢接近50度,阀门的开度也响应的慢慢关小,当水温达到50度或以上时就把火关了。当火关了后水温可能就很快又降下来,然后你又打开煤气灶,如此反复操作,水温在50度上下波动。如果操作的间隔过大,温度的波动就哎,好累啊,这就是比例控制的作用。

微分控制作用

上面的控制法中,你发现虽然水温可以控制在50度附近,但是温度在50度上下波动。为了不让温度超过50度太多,即不要超调太多,你可能会考虑关注水温的上升斜率,如果升温上升的太快,你可能会相应的调小阀门开度,让火稍小一点,这样处理的结果可能是水温超过50度不是很多,但相应的水温上升时间变长了。这个就是微分控制的作用。

积分控制作用

有时有通过以上两种控制后可能会出现水温已经稳定了,但精度不是很高,比如稳定在49度或者52度。积分控制的作用是提高控制,积分控制的输出与偏差的累积和有关,当水温稳定为50后偏差为零时,积分控制的输出是一个常数,而比例控制和微分控制的输出为零。