PID 控制的步階響應

決定受控對象與 PID 增益 Kp、Ki、Kd 後,即可計算目標值從 0 變為 1 時輸出的變化。可用圖表確認:只有 P 時會留下穩態誤差、加入 I 後誤差消失、增益過大會振盪,以及操作量上限造成的積分飽和。

受控對象與控制器

結果

最終值
–
穩態誤差(目標值 − 最終值)
–
超越量
–
上升時間(10→90%)
–
安定時間(±2%)
–
操作量的最大值(絕對值)
–

上圖藍線為輸出,虛線為目標值(1)。下圖綠線為控制器輸出的操作量;設定上限時以虛線表示。

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%。本工具的對策是:在操作量卡在上限、且誤差會讓它更往上限方向時,停止積分。另一種常見方法是把要求值與受限後的差回饋給積分器(反算法)。

練習控制工程的題目

對阻尼比 ζ = 0.5 的二階系統(沒有零點的標準形)輸入步階。過衝(最大超越量相對於終值的比例)最接近下列何者?

  1. A約16%
  2. B約21%
  3. 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 − ζ²))。

以比例(P)控制不含積分元件的(0型)受控體。加大比例增益 Kp 時的一般變化,正確的是下列何者?

  1. A穩態誤差變小但不會變成0,增益太大時響應會變得振盪或不穩定
  2. B穩態誤差正好變成0,無論增益加到多大,響應都不會振盪,一定保持穩定
  3. C響應的快慢不變,只有穩態誤差持續變大
查看答案與解析

正確答案:A. 穩態誤差變小但不會變成0,增益太大時響應會變得振盪或不穩定

比例控制是輸出與誤差成正比的操作量、最基本的控制。加大 Kp 會使響應變快,對步階的穩態誤差 1/(1 + Kp·K)(K 為受控體的穩態增益)也變小,但沒有誤差時操作量也會變成0,因此誤差不會變成0(偏移)。此外,提高增益會使相位邊限減少、過衝變大,延遲大的系統會變得不穩定。要消除穩態誤差,需加入積分動作。

在PI控制中,加入積分(I)動作的主要目的與其副作用的組合,正確的是下列何者?

  1. A目的是去除高頻的雜訊,副作用是穩態誤差變大
  2. B目的是消除對固定目標值或擾動的穩態誤差,副作用是相位落後而容易振盪
  3. C目的是預先察覺誤差的變化以加快響應並抑制超越,副作用是大幅放大高頻的雜訊
查看答案與解析

正確答案:B. 目的是消除對固定目標值或擾動的穩態誤差,副作用是相位落後而容易振盪

積分動作把誤差隨時間累積成操作量,因此只要還殘留一點誤差,就會持續改變操作量,最後使穩態誤差為0。另一方面,積分元件會使相位落後90°,因此相位邊限減少,容易發生過衝與振盪。所以要調整積分時間 Ti,避免設得太短。加快響應、抑制超越並容易放大雜訊,是微分動作的特徵。

關於積分飽和(windup)的說明,正確的是下列何者?

  1. A微分項放大雜訊,使操作量持續細微振盪的現象,在微分加入低通濾波器即可防止
  2. B因積分計算的取樣週期取得太長,而持續殘留穩態誤差的現象
  3. C操作量卡在上限的期間,積分項仍持續累積誤差,因此即使誤差的正負號改變,操作量也有一段時間不會下降,造成大幅過衝的現象
查看答案與解析

正確答案:C. 操作量卡在上限的期間,積分項仍持續累積誤差,因此即使誤差的正負號改變,操作量也有一段時間不會下降,造成大幅過衝的現象

像馬達的電壓或閥的開度,操作量都有上限與下限。大的誤差持續、操作量在上限飽和時,操作量雖然不能再增加,積分項卻持續累積誤差而變得很大。即使受控量超過目標值、誤差的正負號改變,在累積的積分值減少之前,操作量仍卡在上限,因此造成大幅的過衝與長時間的振盪。對策是使用抗積分飽和(anti-windup),在飽和期間停止積分,或限制積分的值。

在微控制器上實作位置型的PI控制,以PWM的責任週期(0~100%)作為操作量。對積分飽和的對策,正確的是下列何者?

  1. A飽和期間加大比例增益,讓它早點脫離飽和
  2. B只要以浮點數計算積分項就不會溢位,因此不需要特別的對策
  3. 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 越小濾波越強。

相關名詞

PID控制 積分飽和 過衝 安定時間 穩態誤差 一階系統 二階系統 時間常數

相關比較

相關計算工具

半導體、電子電路與資訊計算工具 →