执行器饱和与积分饱和
每一台真实的电机、阀门或加热器都有一个上限:它有转得最快的极限、推得最猛的极限、能达到的最高温度。所谓执行器饱和,就是当控制器要求的输出超过这个上限时发生的情况。控制器可能算出“以 150% 的功率驱动”,但电机最多只能给出 100%,于是多出来的那部分指令根本不起任何作用。从那一刻起,机器已经在拼尽全力,纸面上要求它“更使劲”,在真实世界里却毫无效果。
积分饱和则是常常随之而来的麻烦副作用。许多控制器都含有一个积分项,它是一笔不断累加的总账,会持续把误差(你想到达的位置与实际所在位置之间的差距)累积起来,好让那些微小而顽固的误差最终也能被纠正掉。可是当执行器被死死压在极限上时,误差迟迟无法缩小,这笔总账便越积越多——就像一只被拧过头的发条,被“越绕越紧”。等到机器终于到达目标时,控制器却还压着一个巨大的、积攒下来的指令,于是继续过度驱动、冲过了目标,造成很大的超调,并伴随缓慢而拖沓的回稳。最经典的画面是一部电梯:在全速爬升很长一段后,它会径直冲过你要去的那一层,正是因为积分项在爬升途中被绕得太紧了。
对应的解决办法叫抗饱和(抗积分饱和):控制器一旦察觉执行器已经触顶,就立刻停止往那笔积分总账上继续累加(或者悄悄把它放回去一些),直到指令重新落进可达范围之内。抗饱和加起来成本很低、却也很容易被遗忘,正是这种不起眼的小处理,把一台一冲一顿、动辄超调的机器,和一台平顺、规矩的机器区分了开来。
有人命令一架无人机爬升到一个远超其螺旋桨短时间内所能企及的高度。螺旋桨被推到极限,在漫长的爬升中控制器仍不断把高度误差累加进积分项;等无人机终于抵达时,它会大幅冲过目标高度,然后才慢慢往回飘落。
饱和的螺旋桨,加上一个越绕越紧的积分项,结果就是一次大幅超调——这正是抗饱和要防止的事情。
绕死(饱和绕死)专门是积分项的毛病——纯比例控制器或纯微分控制器不会发生积分饱和,因为它们都不会保留对过去误差的累加记忆。