SISOTool
Matlab 的 SISO Design Tool(sisotool)可以在根軌跡圖與波德圖上用滑鼠拖拉極點、零點與增益,即時看到閉迴路響應,很適合用來設計 PID。以下是原講義的操作步驟(截圖為 Matlab 6.5 版,新版 Control System Designer 的操作邏輯相同;步驟說明為改寫的中文)。範例受控體:
▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 9 節:SISOTool 設計結果的驗證),可以直接在瀏覽器執行、修改參數。⬇ 下載 PID.ipynb
操作步驟 Steps
- 在命令視窗建立受控體並開啟工具:
sys = tf([1],[1 1 2]),再輸入sisotool。
- File → Import,從 Workspace 選
sys,按 G 欄位旁的箭頭匯入成受控體 G(H、F、C 先維持 1)。

- 匯入後左邊是根軌跡、右邊是開迴路波德圖。受控體的兩個極點在 \(s = -0.5 \pm j1.32\),目前控制器 \(C(s) = 1\)。

- PID 可以寫成「一個積分器+兩個零點」:
$$C(s) = K_P + \frac{K_I}{s} + K_D s = \frac{K_D s^2 + K_P s + K_I}{s} = K_I\,\frac{1 + \frac{K_P}{K_I}s + \frac{K_D}{K_I}s^2}{s}$$
所以先在原點加一個極點(積分器):在根軌跡上按右鍵加實數極點,再到 Edit Compensator 把位置改成 0。



- 再加一對共軛複數零點(約在 \(s = -1.57 \pm j0.95\)),把根軌跡往左拉,讓閉迴路極點遠離虛軸。

- 拖動根軌跡上的粉紅色方塊(閉迴路極點)調整增益,這裡增益調到 5.42,相位邊限 51.7°。


- Analysis → Response to Step Command 看閉迴路步階響應:超越量約 13%、約 1.1 s 到峰值、穩態誤差為零。


換算成 PID 增益 Converting to PID Gains
最後的控制器是 \(C(s) = 5.42\,\dfrac{1 + 0.94s + (0.55s)^2}{s}\)。對照第 4 步的形式(補充):
$$K_I = 5.42,\qquad K_P = 5.42 \times 0.94 = 5.09,\qquad K_D = 5.42 \times 0.55^2 = 1.64$$以 verify_pid.py 用這組增益重新模擬,步階響應的峰值與峰值時間和第 7 步的截圖一致。





