古典控制

致動器飽和與積分飽和

每一台真實的馬達、閥門或加熱器都有一個上限:它有轉得最快的極限、推得最猛的極限、能達到的最高溫度。所謂致動器飽和,就是當控制器要求的輸出超過這個上限時發生的情況。控制器可能算出「以 150% 的功率驅動」,但馬達最多只能給出 100%,於是多出來的那部分指令根本不起任何作用。從那一刻起,機器已經在拼盡全力,紙面上要求它「更使勁」,在真實世界裡卻毫無效果。

積分飽和則是常常隨之而來的麻煩副作用。許多控制器都含有一個積分項,它是一筆不斷累加的總帳,會持續把誤差(你想到達的位置與實際所在位置之間的差距)累積起來,好讓那些微小而頑固的誤差最終也能被糾正掉。可是當致動器被死死壓在極限上時,誤差遲遲無法縮小,這筆總帳便越積越多——就像一隻被擰過頭的發條,被「越繞越緊」。等到機器終於到達目標時,控制器卻還壓著一個巨大的、積攢下來的指令,於是繼續過度驅動、衝過了目標,造成很大的超調,並伴隨緩慢而拖沓的回穩。最經典的畫面是一部電梯:在全速爬升很長一段後,它會徑直衝過你要去的那一層,正是因為積分項在爬升途中被繞得太緊了。

對應的解決辦法叫抗飽和(抗積分飽和):控制器一旦察覺致動器已經觸頂,就立刻停止往那筆積分總帳上繼續累加(或者悄悄把它放回去一些),直到指令重新落進可達範圍之內。抗飽和加起來成本很低、卻也很容易被遺忘,正是這種不起眼的小處理,把一台一衝一頓、動輒超調的機器,和一台平順、規矩的機器區分了開來。

有人命令一架無人機爬升到一個遠超其螺旋槳短時間內所能企及的高度。螺旋槳被推到極限,在漫長的爬升中控制器仍不斷把高度誤差累加進積分項;等無人機終於抵達時,它會大幅衝過目標高度,然後才慢慢往回飄落。

飽和的螺旋槳,加上一個越繞越緊的積分項,結果就是一次大幅超調——這正是抗飽和要防止的事情。

繞死(飽和繞死)專門是積分項的毛病——純比例控制器或純微分控制器不會發生積分飽和,因為它們都不會保留對過去誤差的累加記憶。

又稱
saturationintegral windupreset windup饱和积分饱和飽和積分飽和