JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

極點、零點與步階響應

在第 2 級你學會把系統寫成[[ee-transfer-function|轉移函數]]——一個 s 的多項式比值。那個比值看起來像枯燥的代數,其實是一份隱藏的電影劇本:分母的根,在你還沒動手做出實物之前,就告訴你一撥開關它會怎麼急衝、振鈴、或平順滑入。這篇導讀把那些根——也就是**極點**——變成你在示波器上看得見的曲線,再交給你每位控制工程師談步階響應時必引的四個數字:上升時間、過衝、安定時間,以及阻尼比 ζ。讀完之後,只要瞄一眼極點落在 s 平面的哪裡,你就能判斷一顆馬達是俐落地咬住目標、還是把自己抖散。

從代數到運動:極點到底在做什麼

拿起一根吉他弦,把它往旁邊一撥,然後鬆手。它不會直接跳回靜止位置——它彈回去、衝過頭、盪向另一邊,然後在一兩秒內衰減成靜止。汽車的懸吊撞到坑洞時是這樣;無人機修正一陣亂流是這樣,恆溫器追逐設定值、硬碟磁頭猛撞到磁軌也都是這樣。這每一個都是被擾動後放開的系統,每一個都有一份特徵簽名——多快、多彈、多久才安定。控制理論最驚人的主張是:這整份簽名,全都編碼在幾個叫做極點的數字裡。

回想轉移函數 H(s) = N(s)/D(s),它是拉普拉斯變數 s 的兩個多項式之比值。極點是分母 D(s) 的根——那些讓 H(s) 衝向無限大的 s 值;零點是分子 N(s) 的根——那些讓 H(s) 歸零的值。在幾何上,我們把它們畫到複數的 s 平面上:水平軸是實部 σ,垂直軸是虛部 jω。極點畫成 ✕,零點畫成 ◯。這一小撮符號組成的星座圖,就是系統的個性。

為什麼分母的根竟然能掌管「時間」?因為拉普拉斯轉換有一個關鍵事實:位於 s = p 的單一極點,會對輸出貢獻一個形如 A·e^(p·t) 的項。極點就是那個指數。如果你把響應做部分分式展開,每個極點都交給你一個指數模態,而整體運動不過就是這些模態的總和。所以讀極點就是讀指數——而一個指數,就是一條指數曲線的完整描述。

實極點 對 複數共軛對:衰減 對 振鈴

極點只有兩種口味,而兩者的差別,就像關門與撥弦的差別。實極點坐在水平軸上,比如 s = −3。它的模態是 e^(−3t):一條純指數,平滑地滑向零,不彈、不抖。極點越負,衰減越快。位於 −10 的極點,比位於 −3 的衰減快三倍多,因為它的時間常數 τ = 1/|p| 較小。

複數共軛對才是好戲所在。帶虛部的極點一定成對出現,s = −σ ± jω_d(係數為實數的多項式不可能有單獨一個複根)。它們的兩個指數模態 e^((−σ+jω_d)t) 與 e^((−σ−jω_d)t),透過尤拉公式,合成一個實數的、會*振盪*的包絡:e^(−σt)·cos(ω_d·t + φ)。實部 −σ 是衰減率;虛部 ω_d 是阻尼振盪頻率,單位 rad/s。所以這一對給你一條振幅隨指數縮小的正弦波:會消退的振鈴。這正是那根吉他弦、那組懸吊、那架衝過頭的無人機。

        jω  (imaginary)
         |        x  ← complex pole at -σ + jω_d
         |       /:
         |      / :  ω_d  (sets oscillation rate)
  STABLE |    /φ  :         UNSTABLE
  (LHP)  |  /     :          (RHP)
 --------+--------+----------------> σ (real)
      -σ |        0
         |  \     :
         |    \   :
         |      \ :
         |        x  ← its mirror twin at -σ - jω_d

  distance from origin ω_n = sqrt(σ^2 + ω_d^2)   (natural frequency)
  angle from -axis     ζ   = cos(angle) = σ / ω_n (damping ratio)
s 平面上的一對複數共軛極點。它離原點多*遠*決定速度(ω_n);它偏離負實軸的*角度*決定彈跳程度(ζ)。

標準二階系統

幾乎每本教科書——以及多得驚人的真實硬體——都歸結成一個母模板,標準二階系統。兩個參數就道盡一切:自然頻率 ω_n(若完全無阻尼,它會振盪多快,單位 rad/s)與阻尼比 ζ(一個從 0 到 ∞ 的無因次數,量度彈跳被壓制了多少)。它的閉迴路轉移函數為:

                 ω_n^2
  H(s) = -----------------------------
          s^2 + 2·ζ·ω_n·s + ω_n^2

  Poles (roots of denominator):
     s = -ζ·ω_n  ±  ω_n·sqrt(ζ^2 - 1)

  ζ = 0       poles on jω-axis     -> pure, undying oscillation (marginal)
  0 < ζ < 1   complex pair         -> UNDERDAMPED: overshoots, then rings
  ζ = 1       repeated real pole    -> CRITICALLY damped: fastest, no overshoot
  ζ > 1       two distinct real     -> OVERDAMPED: slow, sluggish, no overshoot

  damped frequency:  ω_d = ω_n · sqrt(1 - ζ^2)   (only when ζ < 1)
標準二階模板,以及它唯一的旋鈕 ζ 如何把極點從虛軸(ζ=0)滑到實軸(ζ≥1)。

看 ζ 在幾何上做了什麼。在 ζ = 0 時,極點正好落在虛軸上的 ±jω_n——沒有衰減,系統永遠振鈴。當 ζ 爬向 1,極點沿著半徑 ω_n 的圓弧朝負實軸擺去,一路累積越來越多衰減。在 ζ = 1 時它們在實軸上相撞(臨界阻尼——零過衝下你能達到的最快速度)。超過 ζ = 1,它們分裂成兩個各自獨立的實極點,系統變得遲鈍(過阻尼)。這個單一數字 ζ,字面上就是極點與負實軸夾角的餘弦:ζ = cos(θ)。

人人必引的四個數字——附真實算術

當你盯著示波器上的步階響應時,你其實是在從曲線上讀出四個量。以下是欠阻尼二階系統(0 < ζ < 1)的標準公式,接著我們會代入真實數字,讓它們不再只是符號。

  1. 上升時間 t_r——大致是第一次到達目標所需的時間。一個好用的近似:t_r ≈ 1.8 / ω_n。ω_n 越大,上升越快。(欠阻尼系統的 0–100% 上升時間為 t_r = (π − θ)/ω_d,其中 θ = arccos ζ。)
  2. 尖峰過衝 M_p——它衝過目標多遠,以比例表示:M_p = exp( −ζ·π / sqrt(1 − ζ^2) )。注意它只取決於 ζ,與 ω_n 無關。彈跳程度純由阻尼決定。
  3. 安定時間 t_s——它停留在最終值 ±2% 以內的時刻。t_s ≈ 4 / (ζ·ω_n)。乘積 ζ·ω_n 恰好就是 σ,即極點的實部——所以安定由極點往*左*坐多遠所主宰。
  4. 尖峰時間 t_p——過衝最大的瞬間:t_p = π / ω_d,其中 ω_d = ω_n·sqrt(1 − ζ^2) 是阻尼頻率。半個振盪週期就讓你到達第一個尖峰。
WORKED EXAMPLE — a small positioning servo
  Design target: ω_n = 10 rad/s,  ζ = 0.5

  Poles:   s = -ζ·ω_n ± jω_n·sqrt(1-ζ^2)
             = -(0.5)(10) ± j(10)sqrt(1-0.25)
             = -5 ± j8.66          (a complex pair, underdamped)

  Damped frequency:
     ω_d = 10·sqrt(0.75) = 8.66 rad/s

  Rise time (approx):
     t_r ~ 1.8 / 10        = 0.18 s

  Peak overshoot:
     M_p = exp(-0.5*pi / sqrt(1-0.25))
         = exp(-1.5708 / 0.8660)
         = exp(-1.814) = 0.163   ->  16.3% overshoot

  Peak time:
     t_p = pi / 8.66       = 0.363 s

  Settling time (2%):
     t_s = 4 / (0.5*10)    = 0.80 s

  READ-OUT: this servo reaches its target in ~0.18 s,
  overshoots by 16%, peaks at 0.36 s, and rings down
  to within 2% by 0.80 s.  Want less overshoot? Raise ζ.
  Want it all faster? Raise ω_n (push the poles further out).
把兩個設計數字(ω_n、ζ)變成步階響應完整的預測形狀——在動手做任何東西之前。

注意這份俐落的分工。ω_n 是油門:把極點沿半徑往外推(離原點更遠),每一個時間——上升、尖峰、安定——都按比例縮短,而*形狀*維持不變。ζ 是懸吊硬度:把極點轉向實軸,過衝就崩降,而完全不碰速度尺度。兩個旋鈕,兩種獨立效果。這就是為什麼工程師用 (ω_n, ζ) 思考,而不是用原始的極點座標。

零點與極點位置如何改寫劇情

到目前為止劇本都由極點寫。但零點是共同作者,而且專精於劇情轉折。零點本身不會加入新的模態——它*重新加權*極點已經提供的那些模態,而且可以加得很激烈。位於左半平面、坐得*靠近*極點的零點,傾向於堆出額外的過衝與更陡更快的上升——響應往前傾。把零點往左推得很遠,它的影響就淡去,上面的二階公式便乾淨成立。

真正令人意外的情況是右半平面零點(一個正實數零點)。它造成反向響應:當你命令輸出上升,它會先往*下*掉,才回頭爬向目標。這不是故障——這是物理。腳踏車往左轉時先往錯誤一邊傾;水力渦輪被要求更多功率時先看到瞬間壓力下降;鍋爐汽包加入冷給水時水位先掉再升。右半平面零點出了名地難以快速控制,因為系統真的是先往錯誤方向出發。它們是根本的效能極限,不是你能靠調參數許願抹掉的問題。

而*極點*本身的位置,劃出整個控制中最硬的一條線——穩定性之線。它殘酷地簡單:每個極點都必須落在 s 平面的左半邊(實部為負)。為什麼?因為位於 s = p 的極點給出模態 e^(p·t)。若 p 的實部為負,e^(p·t) 衰減到零,系統安定。若實部為正,e^(p·t) 無界地增長——輸出衝向極限軌,越振越大,直到某處飽和、削波或損壞。一個極點越界進入右半平面,就是「無人機懸停」與「無人機翻覆俯衝」之間的差別。

為什麼這是設計工具,不只是分析

這就是回報,也是這一級重要的原因。到目前為止的一切,都是讀極點來*預測*行為。但迴授控制真正的威力在於反過來:你可以*把極點移到任何你想要的地方*。在受控體外面包一個控制器,會改變閉迴路轉移函數的分母——也就是說,它重新安置了極點。受控體太慢、振鈴太兇?加入迴授,把極點往左拖、並轉向實軸。整個設計遊戲就是:先決定你想要極點在哪(從你對過衝與安定時間的規格),再選出能把它們放在那裡的控制器增益。

  1. 寫下你的效能規格:例如「過衝 ≤ 5%、0.5 秒內安定」。
  2. 把它們翻譯成極點的目標區域:過衝 ≤ 5% 意味 ζ ≥ 0.69(一個極點角度);t_s ≤ 0.5 秒意味 ζ·ω_n ≥ 8,即極點落在 σ = −8 的左側。
  3. 挑選控制器增益(或使用極點配置/根軌跡法,這是後面幾級的主題),讓閉迴路極點落進那個區域。
  4. 模擬步階響應,確認那四個數字,再做出實物並在示波器上驗證——曲線應與你的預測相符。

這個迴圈——規格 → 極點區域 → 增益 → 量測曲線——正是控制工程師的日常工作,而它完全立基於你剛跨過的這座橋:極點是指數,指數是曲線,而曲線就是你的客戶在乎的那四個數字。當你領悟到自己能抓住一個極點、把它拖動來讓一台真實機器照你意思動作的那一刻,s 平面就不再抽象了。