矛盾

本文引用自知乎凸头匠的文章:文章链接

PID转速控制系统存在如下一个矛盾:即PID需要靠偏差控制系统消除偏差,然而偏差完全消除以后,PID又没能力去维持系统偏差为0。
并不是所有系统都存在上述问题,问题的状态关键在于目标状态或者平衡点是否稳定。如果稳定,那么PID促使系统从别的状态转移到这个状态后,系统保持稳定,此时PID输出为0,系统也可以自行维持该状态,无需额外损耗,则控制器只有K或者KD就可以使得物体保持稳态。如果不稳定,系统需要一直依靠PID不断产生足额输出,(虽然此时偏差为0)来保持系统的稳定性。

例子

pid 算法 偏差大时才启用积分 pid当偏差为负_pid 算法 偏差大时才启用积分


左边图像中,质量块被放在地上拖动,质量块在外力F的拖动下可以到达任意位置pid 算法 偏差大时才启用积分 pid当偏差为负_知乎_02时,偏差为0,控制器输出为0,此时PID控制器不需要工作,系统依然可以稳定在pid 算法 偏差大时才启用积分 pid当偏差为负_知乎_02处,此时F=0。

右边图像中,若要系统已经在 pid 算法 偏差大时才启用积分 pid当偏差为负_稳态误差_04处,虽然此时偏差为0,然而PID控制器的输出却不能为0,因为此时F不能为0,F的值应该与G相同,用来平衡重力。

高度控制系统仿真

pid 算法 偏差大时才启用积分 pid当偏差为负_控制系统_05


物体的质量为pid 算法 偏差大时才启用积分 pid当偏差为负_控制系统_06,初始高度为pid 算法 偏差大时才启用积分 pid当偏差为负_知乎_07,仿真中期望上升并维持在pid 算法 偏差大时才启用积分 pid当偏差为负_知乎_08的高度。按照前面的论述,直接设计PD控制器,(没有积分项,pid 算法 偏差大时才启用积分 pid当偏差为负_控制系统_09),输入为高度偏差信号,输出为控制信号作为拉力,并且最终与重力相减作为垂直方向上控制系统高度的合力。

高度响应如下,可以看出,存在稳态误差。

pid 算法 偏差大时才启用积分 pid当偏差为负_pid 算法 偏差大时才启用积分_10


可以发现,在达到稳态之前,系统曾经达到过目标高度,但此时由于偏差为0,比例和微分共同作用的输出也为0,此时不产生拉力,在重力作用下,物体又开始掉落,在掉落的过程中,比例和微分开始起作用,最后稳态时,控制器的输出恰好等于重力,而之后系统也将一直保持这个偏差(稳态误差为0.098,经过PD作用后恰好为9.8,与重力抵消)。

pid 算法 偏差大时才启用积分 pid当偏差为负_知乎_11


控制器输出,最后为9.8,如上图所示。

将积分项加上

期望加上积分项以后的控制效果:当系统偏差为0时,PID控制器在输入为0时,也可以获得一个稳定的输出F去克服重力G,这样使得物体最后以0偏差的状态稳定在期望高度。

在sumulink中设置积分系数为pid 算法 偏差大时才启用积分 pid当偏差为负_知乎_12 ,其他条件不变,下图为仿真结果。

pid 算法 偏差大时才启用积分 pid当偏差为负_稳态误差_13


所以积分作用可以做到无差控制。

电机转速控制问题

同上面的例子一样,在电机转速控制模型中,非0转速是不可能在不加外力条件下维持下去的,这是因为阻尼的存在,(摩擦和反电动势的存在)。如果在电机模型中,将转动摩擦和反电动势效应设置为0,则控制器只有比例或者比例积分作用就可以使得电动机转速稳定在设定值。为了达到期望转速后,系统可以一直维持在期望转速,不会成为有差系统,需要加入积分项,使得控制器在偏差为0时,继续保持恒定的输出。