PID 控制的步階響應
決定受控對象與 PID 增益 Kp、Ki、Kd 後,即可計算目標值從 0 變為 1 時輸出的變化。可用圖表確認:只有 P 時會留下穩態誤差、加入 I 後誤差消失、增益過大會振盪,以及操作量上限造成的積分飽和。
結果
- 最終值
- –
- 穩態誤差(目標值 − 最終值)
- –
- 超越量
- –
- 上升時間(10→90%)
- –
- 安定時間(±2%)
- –
- 操作量的最大值(絕對值)
- –
上圖藍線為輸出,虛線為目標值(1)。下圖綠線為控制器輸出的操作量;設定上限時以虛線表示。
以圖表檢視
其他輸入維持目前的值,只讓選擇的輸入在目前值的 1/4 到 4 倍之間變化時的結果。紅點是目前的值。
P、I、D 各自的作用
PID 控制把三項相加來決定操作量:與目標值和輸出之差(誤差)e 成正比的 P、與 e 對時間積分成正比的 I,以及與 e 變化速度成正比的 D。P 越大響應越快,但對一階延遲的對象會留下誤差。範例「只有 P 控制」(K = 1、Kp = 4)的最終值為 K·Kp/(1 + K·Kp) = 0.8,留下 0.2 的穩態誤差。加入 I 後,只要還有誤差操作量就會持續增加,因此穩態誤差會消失。D 會預先抑制誤差的變化,減少超越量與振盪,但容易放大雜訊,一般會搭配濾波器使用。
超越量與阻尼比
二階系統的阻尼比 ζ 越小,超越量越大,步階響應的最大超越量為 exp(−πζ/√(1 − ζ²))。範例「二階延遲 + P 控制」中,閉迴路的 ζ 約為 0.14,超越量約 64%。大致上 ζ = 0.5 時約 16%,ζ = 0.7 時約 5%。對含積分的對象(如馬達位置)施加 P 控制的範例中,閉迴路成為 ζ = 0.5 的二階延遲,超越量約 16%。對象含積分時,只用 P 控制,對步階輸入也不會留下穩態誤差。
時間延遲與增益過大
時間延遲是從操作到開始影響輸出之間的延遲,來自管線中的輸送時間、量測或通訊的延遲等。有時間延遲時,控制器是根據已經延遲的輸出來決定操作量,因此增益過大會振盪,再加大就會發散。範例「增益過大」中,Kp = 20 時輸出發散。像 Ziegler–Nichols 法那樣,可由時間延遲與時間常數決定增益的參考值,但在實際設備上,從較小的增益開始、一邊觀察響應一邊調整較為安全。
積分飽和與對策
操作量有上限,例如馬達電壓或閥的開度。在操作量卡在上限、輸出追不上的期間,積分仍持續累積誤差。到達目標值後,要等累積的積分減少,操作量才會下降,因此產生很大的超越量,這就是積分飽和(windup)。範例中上限為 1.5 時超越量約 35%,加入對策後減為約 7%。本工具的對策是:在操作量卡在上限、且誤差會讓它更往上限方向時,停止積分。另一種常見方法是把要求值與受限後的差回饋給積分器(反算法)。
練習控制工程的題目
- A約16%
- B約21%
- C50%
查看答案與解析
正確答案:A. 約16%
標準形二階系統的過衝以 exp(−πζ/√(1 − ζ²)) 表示,與自然角頻率 ωn 無關。ζ = 0.5 時為 exp(−π × 0.5/√0.75) ≈ exp(−1.81) ≈ 0.163,約16%。ζ ≈ 0.707(1/√2)時約為4.3%,常被當作過衝小的響應的參考值。超越量最大的時刻為 π/ωd(ωd = ωn√(1 − ζ²))。
- A0
- B0.1
- C約0.11
查看答案與解析
正確答案:B. 0.1
單位回授系統對步階的穩態誤差為 1/(1 + Kp),Kp = G(0) 稱為位置誤差常數。此處 Kp = 9,因此穩態誤差為 1/(1 + 9) = 0.1。在前向路徑不含積分的(0型)系統中,提高增益可使誤差變小,但不會變成0。要使誤差為0,需以PI控制等加入積分。
- A穩態誤差變小但不會變成0,增益太大時響應會變得振盪或不穩定
- B穩態誤差正好變成0,無論增益加到多大,響應都不會振盪,一定保持穩定
- C響應的快慢不變,只有穩態誤差持續變大
查看答案與解析
正確答案:A. 穩態誤差變小但不會變成0,增益太大時響應會變得振盪或不穩定
比例控制是輸出與誤差成正比的操作量、最基本的控制。加大 Kp 會使響應變快,對步階的穩態誤差 1/(1 + Kp·K)(K 為受控體的穩態增益)也變小,但沒有誤差時操作量也會變成0,因此誤差不會變成0(偏移)。此外,提高增益會使相位邊限減少、過衝變大,延遲大的系統會變得不穩定。要消除穩態誤差,需加入積分動作。
- A目的是去除高頻的雜訊,副作用是穩態誤差變大
- B目的是消除對固定目標值或擾動的穩態誤差,副作用是相位落後而容易振盪
- C目的是預先察覺誤差的變化以加快響應並抑制超越,副作用是大幅放大高頻的雜訊
查看答案與解析
正確答案:B. 目的是消除對固定目標值或擾動的穩態誤差,副作用是相位落後而容易振盪
積分動作把誤差隨時間累積成操作量,因此只要還殘留一點誤差,就會持續改變操作量,最後使穩態誤差為0。另一方面,積分元件會使相位落後90°,因此相位邊限減少,容易發生過衝與振盪。所以要調整積分時間 Ti,避免設得太短。加快響應、抑制超越並容易放大雜訊,是微分動作的特徵。
- A微分項放大雜訊,使操作量持續細微振盪的現象,在微分加入低通濾波器即可防止
- B因積分計算的取樣週期取得太長,而持續殘留穩態誤差的現象
- C操作量卡在上限的期間,積分項仍持續累積誤差,因此即使誤差的正負號改變,操作量也有一段時間不會下降,造成大幅過衝的現象
查看答案與解析
正確答案:C. 操作量卡在上限的期間,積分項仍持續累積誤差,因此即使誤差的正負號改變,操作量也有一段時間不會下降,造成大幅過衝的現象
像馬達的電壓或閥的開度,操作量都有上限與下限。大的誤差持續、操作量在上限飽和時,操作量雖然不能再增加,積分項卻持續累積誤差而變得很大。即使受控量超過目標值、誤差的正負號改變,在累積的積分值減少之前,操作量仍卡在上限,因此造成大幅的過衝與長時間的振盪。對策是使用抗積分飽和(anti-windup),在飽和期間停止積分,或限制積分的值。
- A飽和期間加大比例增益,讓它早點脫離飽和
- B只要以浮點數計算積分項就不會溢位,因此不需要特別的對策
- C輸出飽和期間,若誤差的方向會加深飽和就停止積分,或把與限制後的值之差回饋到積分,以壓低積分的值
查看答案與解析
正確答案:C. 輸出飽和期間,若誤差的方向會加深飽和就停止積分,或把與限制後的值之差回饋到積分,以壓低積分的值
第1種方法是條件積分(箝制):輸出飽和且誤差的方向會使飽和加深時,不更新積分。第2種是反算法(back-calculation):把限制前的計算值與實際輸出的值之差乘上係數回饋到積分,把積分的值拉回來。在計算操作量變化量的速度型PID控制中,只要限制輸出,就不容易發生積分飽和。以整數的定點數計算時,也要以飽和運算等防範積分變數本身的溢位。
常見問題
PID 增益要怎麼決定?
基本流程是先只用 P,把增益調高到開始振盪之前,再加入 I 消除穩態誤差,超越量太大時再加入 D。若已知時間延遲與時間常數,可用 Ziegler–Nichols 等調整法則求得參考值。在實際設備上,也要考慮操作量上限與雜訊,從較小的增益開始調整。
為什麼只用 P 控制會留下穩態誤差?
因為 P 控制的操作量與誤差成正比,要持續輸出操作量就必須留有誤差。對一階延遲 K/(Ts+1),最終值為 K·Kp/(1 + K·Kp),誤差為 1/(1 + K·Kp)。加入 I,或對象本身含積分時,對步階輸入的穩態誤差就會消失。
為什麼微分(D)要加濾波器?
微分會放大變化快的成分,因此會放大量測雜訊,目標值突然改變的瞬間操作量也會大幅跳動。因此會用一階低通濾波器抑制高頻。本工具的濾波時間常數為 Kd/(N·Kp),N 越小濾波越強。