概念


公式

Kp,Ki,Kd分别是比例项、积分项、微分项的权重占比。
比例项



比例项的调控力度只和现在 时刻的误差值有关,和过去未来均无关。误差值是确定的,系数Kp越大,比例项占比越大,输出力度也就越大,所以系统响应越快,但超调振荡也越来越严重 。如果只有纯比例项控制,系统最后会存在稳态误差。
稳态误差产生过程:以电机为例,当实际值达到目标值后,误差此时=0,由于是纯比例项控制,调控力度只和当前误差有关,现在误差=0了,调控力度就直接也=0了,即驱动电机旋转的PWM=0,电机没了驱动力,同时由于摩擦力 而不断减速,一减速就导致又产生误差,开始误差较小,调控力度就小,还无法抵抗摩擦力,电机继续减速,误差继续增大,直到误差大到让调控力度和摩擦力相等了,电机此时相当于不受力了,不再减速,但也没办法加速了因为out=Kp*error,由于平衡使得误差error不再改变,输出力度也不改变了,只能使得力度和摩擦力平衡,所以最后存在稳态误差。如果Kp大的话会使得减速时输出力度等于摩擦力的用时缩短,最后稳态误差会更小。
如果改为out += Kp*error,这样会使得只要有误差存在,输出力度就会一直加大,最后一定能消除稳态误差。但问题是比例项只与现在时刻的误差有关,它不知道上一次的误差,也就不知道上一次的输出,所以引入积分项来消除稳态误差,这样的写法就是积分项。
积分项

积分项是将从开始到现在产生的所有时刻误差相加,输出力度与误差积分有关,即和过去有关。在比例项基础上再加上积分项,现在再看电机的例子:在一开始实际值=目标值时误差=0,比例项输出=0了,但积分项仍然有输出力度,此时误差=0只是让其输出力度不变了而已,所以电机不会减速,稳态误差不存在了。
Ki越大,稳态误差消除越快,但系统的滞后性会增强。滞后性:当目标值突然改变之后,积分项会先负向积分,一点一点将自己累计的正向积分消解掉,完毕后才能反向累计去追赶目标值,这就是积分项的滞后性,响应速度慢会导致系统不稳定。相比之下比例项 Kp*error就没有滞后性,因为它只与现在误差有关,目标值变向后它的当前误差也会马上改变,所以调控力度也会马上改变,反应很迅速。
所以通常将比例项和积分项搭配使用,优势互补。比例项响应很快,但有稳态误差;积分项响应慢,但能消除稳态误差。

微分项


微分项可以抑制系统超调振荡,它根据误差的变化预判未来 趋势并提前抑制,但这种抑制一直存在,比例项和积分项正常调控时微分项也会产生阻尼,那么微分项过大就会导致系统卡顿,调控不顺滑。
一般来说定速控制使用PI控制即可,因为超调振荡的情况很少,用不着D项;定位置控制用PD控制,因为稳态误差较小,不太需要I项。