04.1 PID 控制#
本章導讀#
PID 是工業界最常用的控制器——全世界 95% 以上的控制迴路是 PID。 它只有三個動作:看現在(P)、看過去(I)、看趨勢(D), 卻能應付絕大多數工業場景。這一章把三項的數學說透。
淺顯說明#
開車比喻:
- P(比例):偏越多、方向盤轉越多——「現在錯多少」。
- I(積分):一直偏一點點,就慢慢多轉一點——「過去累積的錯」。
- D(微分):偏錯的速度太快就先收——「預判未來」。
P 是主力,I 負責消除穩態誤差,D 負責煞車防振盪。
正規理論#
PID 控制律#
\[ u(t) = K_p e(t) + K_i \int_0^t e(\tau)\, d\tau + K_d \frac{de(t)}{dt} \]
等價的時間常數形式( \(T_i = K_p/K_i\) 積分時間, \(T_d = K_d/K_p\) 微分時間):
\[ u(t) = K_p\left[e(t) + \frac{1}{T_i}\int_0^t e\,d\tau + T_d\frac{de}{dt}\right] \]
轉移函數形式#
\[ K(s) = K_p + \frac{K_i}{s} + K_d s = \frac{K_d s^2 + K_p s + K_i}{s} \]
三項的作用(頻域觀點)#
| 項 | 轉移函數 | 頻域角色 | 效果 |
|---|---|---|---|
| P | \(K_p\) | 全頻率增益 | 加快反應,但留穩態誤差 |
| I | \(K_i/s\) | 低頻增益 \(\to\infty\) | 消除穩態誤差(含常值擾動),但降低相位裕度 |
| D | \(K_d s\) | 高頻增益 | 提供預判(相位超前),抑制振盪,但放大高頻雜訊 |
積分項為何消除穩態誤差#
設系統含常值擾動 \(d_0\) ,穩態時若 \(e(\infty) = e_0 \ne 0\) ,則積分項 \(K_i \int e\,dt \to \infty\) ——控制量無界,矛盾。 所以穩態必 \(e(\infty) = 0\) (對常值參考與擾動)。
數學本質: \(1/s\) 在 \(s = 0\) 有極點,把直流誤差「無窮放大」逼成零。
Ziegler–Nichols 調諧法#
1942 年的經典法則,讓工程師不用懂理論也能調:
臨界增益法:純比例控制下加大 \(K_p\) 直到系統持續振盪(臨界),記下 臨界增益 \(K_u\) 與振盪週期 \(T_u\) :
| 控制器 | \(K_p\) | \(T_i\) | \(T_d\) |
|---|---|---|---|
| P | \(0.5K_u\) | — | — |
| PI | \(0.45K_u\) | \(T_u/1.2\) | — |
| PID | \(0.6K_u\) | \(T_u/2\) | \(T_u/8\) |
簡易範例:一階系統的 PI 控制#
\(G = \dfrac{1}{s+1}\) ,PI 控制器 \(K = K_p + \dfrac{K_i}{s}\) ,單位回饋:
\[ T(s) = \frac{K_p s + K_i}{s(s+1) + K_p s + K_i} = \frac{K_p s + K_i}{s^2 + (1+K_p)s + K_i} \]
- 穩態: \(T(0) = \dfrac{K_i}{K_i} = 1\) ——穩態誤差為零(積分項的功效)。
- 特徵方程 \(s^2 + (1+K_p)s + K_i = 0\) :二階系統,自然頻率 \(\omega_n = \sqrt{K_i}\) , 阻尼比 \(\zeta = \dfrac{1+K_p}{2\sqrt{K_i}}\) 。
取 \(K_p = 4\) , \(K_i = 4\) : \(\omega_n = 2\) , \(\zeta = 5/4 > 1\) (過阻尼,不振盪)。 追蹤階梯命令快、準、不振盪——PI 三行搞定。
歷史典故#
- 1922 年 Minorsky 分析船舶自動操舵,PID 三項結構首次被系統化,見 1922-Minorsky船舶PID.md——他研究了數千艘船的操舵資料。
- 1942 年 Ziegler 與 Nichols 發表調諧法則,見 1942-ZieglerNichols調諧法.md—— 化工廠的實驗數據變成通用法則。
- 1788 年 Watt 飛球調速器本質是 P 控制,其「獵振」問題正是缺 D 的教訓,見 1788-Watt飛球調速器.md。
習題#
- 上例取 \(K_p = 2\) , \(K_i = 4\) :求 \(\omega_n\) 、 \(\zeta\) ,判斷是否振盪,並算超越量。
- 說明為什麼 D 項會放大高頻雜訊,工程上常用什麼修正?(提示: \(K_d s\) 高頻增益無界; 實務用 \(\dfrac{K_d s}{1 + T_d s/N}\) 限制頻寬。)