pid是什么

  • Post author:
  • Post category:其他


本人想做做之前的电赛题–滚球平衡,但这涉及到了一些自动控制的东西,比如PID。

对PID之前只是略有耳闻,为了复现滚球平衡,只能来现学PID了。

本系列内容是看了MATLAB的教学视频后写的,

视频链接在此

PID的公式在此

看着是不是觉得挺复杂,不过放心,让我们先抛弃公式,从PID是什么以及为什么要有PID开始讲起

这里有这么一个我们需要控制的设备,我们需要使用

驱动信号(actuating signal)

取控制它,同时,我们可以获得设备的当前信息,也就是

受控变量(controlled variable)

这个驱动信号由一个控制器产生,控制器的作用是使得系统的error为0,error则是控制变量减去受控变量的值。

控制变量(commanded variable)

是我们对这个系统的需求,比如将烙铁加热到xx度;

受控变量

是从设备获得的信息,比如当前烙铁xx度。

接下来就将这个PID模型具象化,以球场上一个人走向半场的过程为例

如图所示,假设这个人离半场的距离有50m,那么控制变量为50m,设定控制器的值为0.1,那么初始速度为5m/s,人接收到速度的指令后行走,反馈回路将当前位置返回累计器,从而调整走路速度,随着人离中场越近,人的速度越慢,直到走到中场,速度为0

右下角的两张图分别是

路程/时间



走路速度/时间

的关系图,体现了控制器不同的值时的区别

看起来似乎一个比例就可以解决控制器的问题了,那还要积分和微分器干嘛,下面换一个无人机的例子来说明

如的图所示,有这么个无人机,想悬停在50m的空中

无人机无法像上面人走路一样简单的比例就可以完成了,因为无人机会因为重力的作用下坠,如果到了50m的空中电机就定制转动,无人机会直接下坠

我们假定无人机的悬停需要100rpm的电机速度

通过增加增益,无人机电机转速会增加,然后上升,反馈使得误差减小,转速降低,降到100rpm时保持悬浮。只有继续增大增益,无人机才会继续上升

但是无论增益怎么增加,都没办法悬浮在50m处,如图中表格所示,最终会有误差无法消除,管这种误差叫做

稳态误差(steady state error)

为了消除这种

稳态误差

,可以请积分器出场了

如图所示,一个常数值经过积分器后得到一个增大的函数,会使得转速增加,从而使得无人机上升减小误差

当误差为0时,只有积分器的输出100rpm,而比例输出为0

但是现实中并不是这么理想的,当误差E比较小的时候积分器的输出会大于100rpm,而比例的输出大于0,会使得总输出大于100rpm,会使得无人机突然超越50m的高度。这种情况叫做

超调

为了减小这种

超调

的问题,就需要使用微分器了

对函数的求导可以得到它的斜率。误差函数由于是下降的趋势,微分得到的斜率是小于0的,并且随着下降的速度增大,误差函数斜率的绝对值也增大,这个负值的斜率输出到电机时会减慢电机的速度,这样就可以减小超调量

比例、微分、积分组合起来就是我们常说的PID控制器了,通过调整Kp Ki Kd权重因子,还可以只使用PI PD P等等

下一篇会讲到

积分器的保护

或者说

抗饱和积分

问题



个人博客


公众号:greedyhao



版权声明:本文为juhou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。