PID控制器设计
PID控制器設計
- PID概述
- P、I 和 D 項的特征
- 示例問題
- 開環階躍響應
- 比例控制
- 比例微分控制
- 比例積分控制
- 比例積分微分控制
- 設計 PID 控制器的一般技巧
- 自動PID整定
介紹一種簡單但通用的反饋補償器結構:比例-積分-微分 (PID) 控制器。PID 控制器被廣泛采用,因為它非常易于理解并且非常有效。PID 控制器的一大吸引力在于,所有工程師都理解概念上的微分和積分,因此即使沒有深入了解控制理論,他們也可以實施控制系統。此外,盡管補償器很簡單,但它非常復雜,因為它捕獲系統的歷史(通過集成)并預測系統的未來行為(通過微分)。
PID概述
我們將考慮以下統一反饋系統:
PID 控制器的輸出(等于設備的控制輸入)在時域中根據反饋誤差計算如下:
u(t)=Kpe(t)+Ki∫e(t)dt+Kpdedt????????????(1)u(t) = K_p e(t) + K_i \int e(t)dt + K_p \frac{de}{dt} ------------(1)u(t)=Kp?e(t)+Ki?∫e(t)dt+Kp?dtde?????????????(1)
首先,讓我們使用上圖所示的原理圖來看看 PID 控制器如何在閉環系統中工作。變量 ( eee) 表示跟蹤誤差,即期望輸出 ( rrr) 與實際輸出 ( yyy)之間的差異。該誤差信號 ( eee) 被饋送到 PID 控制器,控制器計算該誤差信號相對于時間的導數和積分。設備的控制信號 ( uuu) 等于比例增益 ( KpK_pKp?) 乘以誤差幅度加上積分增益 ( KiK_iKi?) 乘以誤差積分加上微分增益 ( KdK_dKd?) 乘以誤差導數。
該控制信號 ( uuu) 被饋送到工廠并獲得新的輸出 ( yyy)。yyy然后反饋新的輸出 ( ) 并與參考進行比較以找到新的錯誤信號 ( eee)。控制器采用這個新的錯誤信號并計算控制輸入的更新。當控制器有效時,此過程將繼續。
PID 控制器的傳遞函數是通過對等式 (1) 進行拉普拉斯變換來找到的。
Kp+Kis+Kds=Kds2+Kps+Kis????????????(2)K_p + \frac {K_i} {s} + K_d s = \frac{K_d s^2 + K_p s + K_i} {s} ------------(2) Kp?+sKi??+Kd?s=sKd?s2+Kp?s+Ki??????????????(2)
其中KpK_pKp?= 比例增益,KiK_iKi?= 積分增益,和KdK_dKd?= 微分增益。
我們可以直接使用傳遞函數模型在 MATLAB 中定義 PID 控制器,例如:
Kp = 1; Ki = 1; Kd = 1;s = tf('s'); C = Kp + Ki/s + Kd*s
或者,我們可以使用 MATLAB 的pid 對象來生成等效的連續時間控制器,如下所示:
讓我們將 pid 對象轉換為傳遞函數以驗證它是否產生與上述相同的結果:
P、I 和 D 項的特征
增加比例增益 ( KpK_pKp?) 具有在相同誤差水平下按比例增加控制信號的效果。對于給定的誤差水平,控制器將更用力地“推動”這一事實往往會導致閉環系統反應更快,但也會導致更多的過沖。增加的另一個效果KpK_pKp?是它趨于減少,但不會消除穩態誤差。
將微分項添加到控制器 ( KdK_dKd?) 增加了控制器“預測”錯誤的能力。對于簡單的比例控制,如果KpK_pKp?是固定的,那么控制增加的唯一方法就是誤差增加。對于微分控制,如果誤差開始向上傾斜,即使誤差幅度仍然相對較小,控制信號也會變大。這種預期往往會增加系統的阻尼,從而減少過沖。然而,添加微分項對穩態誤差沒有影響。
將積分項添加到控制器 ( KiK_iKi?) 有助于減少穩態誤差。如果存在持續、穩定的誤差,積分器會不斷累積,從而增加控制信號并降低誤差。然而,積分項的一個缺點是它會使系統更加緩慢(和振蕩),因為當誤差信號改變符號時,積分器可能需要一段時間才能“展開”。
下表總結了每個控制器參數 ( KpK_pKp?, KdK_dKd?, KiK_iKi?) 對閉環系統的一般影響。請注意,這些準則適用于許多情況,但不是全部。如果您真的想知道調整單個增益的效果,則必須進行更多分析,或者必須對實際系統進行測試。
示例問題
假設我們有一個簡單的質量彈簧阻尼器系統。
該系統的控制方程為
mx¨+bx˙+kx=F???????????????????(3)m\ddot{x} + b\dot{x} + kx = F-------------------(3) mx¨+bx˙+kx=F???????????????????(3)
對控制方程進行拉普拉斯變換,我們得到
ms2X(s)+bsX(s)+kX(s)=F(s)????????????(4)ms^{2}X(s) + bsX(s) + kX(s) = F(s) ------------(4)ms2X(s)+bsX(s)+kX(s)=F(s)????????????(4)
輸入力F(s)F(s)F(s)和輸出位移之間的傳遞函數X(s)X(s)X(s)變為
X(s)F(s)=1ms2+bs+k??????????????????(5)\frac{X(s)}{F(s)} = \frac{1}{ms^2 + bs + k} ------------------(5)F(s)X(s)?=ms2+bs+k1???????????????????(5)
讓
m = 1 kg
b = 10 N s/m
k = 20 N/m
F = 1 N
這些值代入上述傳遞函數
X(s)F(s)=1s2+10s+20??????????????????(6)\frac{X(s)}{F(s)} = \frac{1}{s^2 + 10s + 20} ------------------(6)F(s)X(s)?=s2+10s+201???????????????????(6)
快速上升時間
最小的過沖
零穩態誤差
開環階躍響應
先來看看開環階躍響應。創建一個新的m 文件并運行以下代碼:
s = tf('s'); P = 1/(s^2 + 10*s + 20); step(P)
對象傳遞函數的直流增益為 1/20,因此 0.05 是單位階躍輸入的輸出最終值。這對應于 0.95 的穩態誤差,這是相當大的。此外,上升時間約為 1 秒,穩定時間約為 1.5 秒。讓我們設計一個控制器來減少上升時間、減少穩定時間并消除穩態誤差。
比例控制
從上表中,我們看到比例控制器(KpK_pKp?)減少了上升時間,增加了超調量,減少了穩態誤差。
我們帶有比例控制器的單位反饋系統的閉環傳遞函數如下,其中X(s)X(s)X(s)是我們的輸出(等于Y(s)Y(s)Y(s)),我們的參考R(s)R(s)R(s)是輸入:
T(s)=X(s)R(s)=Kps2+10s+(20+Kp)????????????(7)T(s) = \frac{X(s)}{R(s)} = \frac{K_p}{s^2 + 10s + (20 + K_p)} ------------(7)T(s)=R(s)X(s)?=s2+10s+(20+Kp?)Kp??????????????(7)
讓比例增益 ( KpK_pKp?) 等于 300 并將 m 文件更改為以下內容:
Kp = 300; C = pid(Kp) T = feedback(C*P,1)t = 0:0.01:2; step(T,t)
上圖顯示比例控制器減少了上升時間和穩態誤差,增加了超調,并少量減少了穩定時間。
比例微分控制
來看看 PD 控制。從上表中,我們看到添加微分控制 ( KdK_dKd?) 趨于減少超調和穩定時間。具有 PD 控制器的給定系統的閉環傳遞函數為:
T(s)=X(s)R(s)=Kds+Kps2+(10+Kd)s+(20+Kp)?????????????(8)T(s) = \frac{X(s)}{R(s)} = \frac{K_d s + K_p}{s^2 + (10 + K_d) s + (20 + K_p)} -------------(8)T(s)=R(s)X(s)?=s2+(10+Kd?)s+(20+Kp?)Kd?s+Kp???????????????(8)
讓KpK_pKp?等于 300 和以前一樣KdK_dKd?等于 10。將以下命令輸入到 m 文件中,并在 MATLAB 命令窗口中運行它。
該圖表明,微分項的添加減少了過沖和穩定時間,對上升時間和穩態誤差的影響可以忽略不計。
比例積分控制
在進行 PID 控制之前,讓我們研究一下 PI 控制。從表中,我們看到,除了積分控制(的KiK_iKi?)趨于減小的上升時間,同時增加過沖和穩定時間,并降低了穩態誤差。對于給定系統,帶有 PI 控制器的閉環傳遞函數為:
T(s)=X(s)R(s)=Kps+Kis3+10s2+(20+Kp)s+Ki?????????????(9)T(s) = \frac{X(s)}{R(s)} = \frac{K_p s + K_i}{s^3 + 10 s^2 + (20 + K_p )s + K_i} -------------(9)T(s)=R(s)X(s)?=s3+10s2+(20+Kp?)s+Ki?Kp?s+Ki???????????????(9)
讓我們減少KpK_pKp?到 30,讓KiK_iKi?等于 70。創建一個新的 m 文件并輸入以下命令。
在 MATLAB 命令窗口中運行這個 m 文件,你應該生成上面的圖。我們降低了比例增益 ( KpK_pKp?),因為積分控制器也像比例控制器一樣減少了上升時間并增加了過沖(雙重效應)。上述響應表明積分控制器消除了這種情況下的穩態誤差。
比例積分微分控制
現在,讓我們檢查 PID 控制。具有 PID 控制器的給定系統的閉環傳遞函數為:
T(s)=X(s)R(s)=Kds2+Kps+Kis3+(10+Kd)s2+(20+Kp)s+Ki????????????(10)T(s) = \frac{X(s)}{R(s)} = \frac{K_d s^2 + K_p s + K_i}{s^3 + (10 + K_d)s^2 + ( 20 + K_p)s + K_i } ------------(10)T(s)=R(s)X(s)?=s3+(10+Kd?)s2+(20+Kp?)s+Ki?Kd?s2+Kp?s+Ki??????????????(10)
經過多次迭代調整后,增益KpK_pKp?= 350、KiK_iKi?= 300 和KdK_dKd?= 50 提供了所需的響應。要確認,請在 m 文件中輸入以下命令并在命令窗口中運行它。您應該獲得以下階躍響應。
現在,我們設計了一個無過沖、快速上升時間和無穩態誤差的閉環系統。
設計 PID 控制器的一般技巧
當您為給定系統設計 PID 控制器時,請按照下面顯示的步驟獲得所需的響應。
教程”頁面中顯示的表格,以找出哪個控制器控制哪些特性。
最后,請記住,如果沒有必要,您不需要將所有三個控制器(比例、微分和積分)都實現到一個系統中。例如,如果 PI 控制器滿足給定要求(如上面的示例),那么您不需要在系統上實現派生控制器。使控制器盡可能簡單。
自動PID整定
MATLAB 提供了用于自動選擇最佳 PID 增益的工具,這使得上述試錯過程變得不必要。則可以直接使用訪問調諧算法pidtune或通過使用一個漂亮的圖形用戶界面(GUI)pidTuner。
MATLAB 自動調整算法選擇 PID 增益來平衡性能(響應時間、帶寬)和穩健性(穩定性裕度)。默認情況下,算法設計為 60 度相位裕度。
讓我們首先通過輸入如下所示的命令為質量彈簧阻尼器系統生成比例控制器來探索這些自動化工具。在所示語法中,P是先前生成的對象模型,“p”指定調諧器采用比例控制器。
pidTuner(P,'p')所述pidTuner GUI窗口,像如下所示,應該出現。
請注意,顯示的階躍響應比我們手工設計的比例控制器慢。現在單擊右上角的“顯示參數”按鈕。正如預期的那樣,比例增益KpK_pKp?小于我們采用的比例增益KpK_pKp?= 94.86 < 300。
我們現在可以交互式地調整控制器參數,并立即在 GUI 窗口中看到結果響應。嘗試將響應時間滑塊向右拖動到 0.14 秒,如下圖所示。這導致響應確實加快了,我們KpK_pKp?現在可以看到 更接近于手動選擇的值。我們還可以看到系統的其他性能和穩健性參數。請注意,在我們調整滑塊之前,目標相位裕度為 60 度。這是 pidTuner 的默認設置,通常在健壯性和性能之間提供良好的平衡。
現在讓我們嘗試為我們的系統設計一個 PID 控制器。通過指定先前設計的或(基線)控制器 C 作為第二個參數,pidTuner 將設計另一個 PID 控制器(而不是 P 或 PI),并將系統與自動控制器的響應與基線的響應進行比較。
我們在輸出窗口中看到,自動控制器的響應速度較慢,并且比基線表現出更多的過沖。現在從工具條中選擇域:頻率選項,它顯示頻域調諧參數。
現在,在輸入32弧度/秒為帶寬和90度為相位裕量,以產生在性能與基線類似的控制器。請記住,更高的閉環帶寬會導致更快的上升時間,更大的相位裕度會減少過沖并提高系統穩定性。
最后,我們注意到我們可以使用命令行工具pidtune而不是pidTuner GUI 使用以下語法生成相同的控制器。
opts = pidtuneOptions( 'CrossoverFrequency' ,32, 'PhaseMargin' ,90); [C, info] = pidtune(P, 'pid' , opts)
MATLAB 和 Simulink (CTMS) 控制教程
總結
- 上一篇: 硬件维修日志
- 下一篇: SPSS统计分析行业应用实战--SPSS