一个PID控制理解的误区

关于PID控制的原理就不多说了,相关的教程实在太多。由于本人是光电相关专业,并非自动化出身,因此对自动控制学习并不深入。但本身我做的是软硬件结合的,常常会遇到需要自动控制的场合,简单的PID基本上就够用了。虽然N年前我就熟知PID,但是对其缺乏深入的理解和实践也导致自己在当年参加电子设计竞赛时没有做出好的结果。现在又遇到需要运用PID的场合,打算再次学习并实践之。这的确是一个有用好用的工具。

在学习的过程中,我发现自己对PID认识的一个误区,也许很多对PID不够熟悉的同事和我有一样的误解。

以控制一个直流电机转速为例,假设转速s(t)与电机两端电压y(t)成正比。PID控制框图如图1所示。其中plant是指设备。PID控制器输出u(t)公式如图2所示。我一直误以为,u(t)就是实际施加到执行设备上的y(t),比如之前我可能会直接用u(t)当做施加到电机两端的电压。但实际上,u(t)是在当前电压上的一个变化量。也就是说输出y(t)=y(t-1)+u(t-1)。使用PID控制器产生一个电压的变化量,plant根据这个变化量调整自己的输出电压。

 一个PID控制理解的误区_第1张图片


设想如果让我们手动控制(P控制),我们也是根据现在的速度与目标速度的偏差,然后对当前电压进行一个微调。同样自动控制的目标是使误差变为0,这时u(t)的输出显然是0.

同样上述误解导致我以为,增量式PID的Δu(t)是控制器调整的变化量,比如步进电机接下来移动的步长,这显然是不对的。而变化量u(t)才应该是接下来移动的步长。


一些关于编写PID控制代码的tricks可以参考《http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/》和《PID控制算法的C语言实现》


你可能感兴趣的:(自动控制)