控制教程 —— 介绍篇:3.PID控制器设计
承接上一篇(控制教程 —— 介紹篇:2.系統分析)
介紹完系統建模和基本的系統分析后,我們已經了解了被控對象的特性,這時,就需要用一個合理的控制器,讓這個被控對象在該控制器下按照指定的給定來執行,最為廣泛使用的那就是PID控制器了。
在本教程中,我們將介紹一個簡單而通用的反饋補償結構,比例積分微分(PID)控制器,PID控制器之所以被廣泛采用,是因為它非常容易理解并且非常有效,工程師不需要太理解控制論,只需要理解積分和微分就可以實施控制系統。此外,即使微分積分很簡單,它也很復雜,因為它可以包含了系統的歷史(積分),并可以預測系統的未來行為(微分)。我們將討論每個PID參數對閉環系統動力學的影響,并將演示如何使用PID控制器來改善系統性能。
本教程中使用的主要MATLAB命令是:
文章目錄
- PID概述
- P I D 的特征
- 例子
- 設計PID控制器的一般流程
- 自動PID參數整定
PID概述
在本教程中,我們將考慮以下統一的反饋系統:
PID控制器的輸出等于被控對象的輸入,它在時域中根據反饋誤差計算如下:
u(t)=Kpe(t)+Ki∫e(t)dt+Kddedtu(t) = K_p e(t) + K_i \int e(t)dt + K_d \frac{de}{dt} u(t)=Kp?e(t)+Ki?∫e(t)dt+Kd?dtde?首先,讓我們使用上面顯示的示意圖了解PID控制器在閉環系統中的工作方式,變量 eee 表示跟蹤誤差,即期望輸出 rrr 與實際輸出 yyy 之差。該誤差信號(eee)被送PID控制器,并且控制器計算該誤差信號相對于時間的導數和積分,發送到被控對象的控制信號 uuu 等于比例增益 KpK_pKp? 乘以誤差幅度加積分增益 KiK_iKi? 乘以誤差積分加微分增益 KdK_dKd? 乘以誤差導數。
該控制信號(uuu)被送到被控對象,并獲得新的輸出(yyy),然后,將新的輸出(yyy)反饋并與參考進行比較計算新的誤差信號(eee),控制器獲取這個新的誤差信號,并計算新的控制信號。
通過對上式進行拉普拉斯變換,可以找到PID控制器的傳遞函數。
Kp+Kis+Kds=Kds2+Kps+KisK_p + \frac {K_i} {s} + K_d s = \frac{K_d s^2 + K_p s + K_i} {s} Kp?+sKi??+Kd?s=sKd?s2+Kp?s+Ki??其中, KpK_pKp? 是比例增益, KiK_iKi? 是積分增益,KdK_dKd? 是微分增益.
我們可以使用傳遞函數直接在MATLAB中定義PID控制器,例如:
或者,我們可以使用MATLAB的pid對象生成等效的連續時間控制器,如下表示:
讓我們將pid對象轉換為傳遞函數,可以看到產生的結果與上述相同:
P I D 的特征
增加比例增益(KpK_pKp?)具有在相同誤差水平下按比例增加控制信號的效果,對于給定的誤差級別,控制器將更"有力",會使閉環系統做出更快的反應,但也會導致超調,增加KpK_pKp?的另一個效果是它將穩態誤差趨于減少,但不能消除誤差。
在控制器中添加一個微分項(KdK_dKd?),可以增加控制器對“未來”誤差的判斷能力,對于簡單的比例控制,如果 KqK_qKq? 是固定的,要想增大控制輸出,則必須增大誤差,而利用微分項,即使誤差的幅值很小,但如果誤差的斜率是增大的,那么控制輸出也會增大,這種方式往往會增加系統阻尼,從而減少超調。但是,增加導數項并不會對穩態誤差產生影響。
在控制器中添加一個積分項(KiK_iKi?),有助于降低穩態誤差,如果存在持續的,穩定的誤差,則積分器會不斷累積,從而增加控制輸出來降低誤差。但是,積分項的一個缺點是,但誤差的正負發生改變時,積分器可能需要一段時間才能“改變符號”,這會使系統更加緩慢和振蕩。
下表總結了每個控制器參數( KpK_pKp?,KdK_dKd?,KiK_iKi?)對閉環系統的一般影響。請注意,這些準則在許多情況下適用,但并非全部適用。如果你想知道調整各個增益的效果,則必須進行更多分析,或者必須在實際系統上進行測試。
| KpK_pKp? | 減小 | 增大 | 變化小 | 減小 |
| KdK_dKd? | 減小 | 增大 | 增大 | 減小 |
| KiK_iKi? | 變化小 | 減小 | 減小 | 減小 |
例子
假設我們有一個簡單的質量塊彈簧阻尼器系統,這個在前面建模部分有介紹過。
該系統的控制方程為:
mx¨+bx˙+kx=Fm\ddot{x} + b\dot{x} + kx = F mx¨+bx˙+kx=F對控制方程進行拉普拉斯變換,可以得到:
ms2X(s)+bsX(s)+kX(s)=F(s)ms^{2}X(s) + bsX(s) + kX(s) = F(s) ms2X(s)+bsX(s)+kX(s)=F(s)輸入力 F(s)F(s)F(s) 和輸出位移 X(s)X(s)X(s) 之間的傳遞函數變為:
X(s)F(s)=1ms2+bs+k\frac{X(s)}{F(s)} = \frac{1}{ms^2 + bs + k} F(s)X(s)?=ms2+bs+k1?給定:
m = 1 kg
b = 10 N s/m
k = 20 N/m
F = 1 N
將這些值代入上述傳遞函數
X(s)F(s)=1s2+10s+20\frac{X(s)}{F(s)} = \frac{1}{s^2 + 10s + 20} F(s)X(s)?=s2+10s+201?此問題的目的是展示 KpK_pKp?,KdK_dKd?,KiK_iKi?的調整來滿足一下目標:
- 快速的上升時間
- 最小過沖
- 零穩態誤差
開環階躍響應
讓我們首先查看開環階躍響應:
被控對象的傳遞函數的直流增益為1/20,因此0.05是單位階躍輸入的最終值,這相當于95%的穩態誤差,這是非常大的。此外,上升時間約為1s,穩定時間約為1.5s,讓我們設計一個控制器,該控制器將減少上升時間,減少穩定時間并消除穩態誤差。
比例控制
從上表中可以看出,比例控制器(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)T(s)=\frac{X(s)}{R(s)} = \frac{K_p}{s^2+10s+(20+K_p)} T(s)=R(s)X(s)?=s2+10s+(20+Kp?)Kp??讓比例增益(KpK_pKp?)等于300。
上圖顯示比例控制器減少了上升時間,穩定時間和穩態誤差,但增加了過沖。
比例微分控制
現在,讓我們看一下PD控制,從上表中可以看出,添加微分控制(KdK_dKd?)可以減少過沖和穩定時間,具有PD控制器的給定系統的閉環傳遞函數為:
T(s)=X(s)R(s)=Kds+Kps2+(10+Kd)s+(20+Kp)T(s) = \frac{X(s)}{R(s)} = \frac{K_d s + K_p}{s^2 + (10 + K_d) s + (20 + K_p)} T(s)=R(s)X(s)?=s2+(10+Kd?)s+(20+Kp?)Kd?s+Kp??令 KpK_pKp? 等于300,并讓 KdK_dKd? 等于10
該圖表明,微分項的增加減少了超調和穩定時間,并且對上升時間和穩態誤差的影響可忽略不計。
比例積分控制
在進行PID控制之前,讓我們研究一下PI控制,從表中可以看出,積分控制(KiK_iKi?)的增加有減少上升時間,增加超調和穩定時間,減小穩態誤差的趨勢。對于給定的系統,帶有PI控制器的閉環傳遞函數:
T(s)=X(s)R(s)=Kps+Kis3+10s2+(20+Kp)s+KiT(s) = \frac{X(s)}{R(s)} = \frac{K_p s + K_i}{s^3 + 10 s^2 + (20 + K_p )s + K_i} T(s)=R(s)X(s)?=s3+10s2+(20+Kp?)s+Ki?Kp?s+Ki??讓我們將 KpK_pKp? 減少到30,并使 KiK_iKi? 等于70
在MATLAB命令窗口中運行,即可生成上面的圖,我們減小了比例增益(KpK_pKp?),因為積分控制器也像比例控制器那樣減少上升時間和增加超調(雙重作用),上面的響應表明,在這種情況下,積分控制器消除了穩態誤差。
比例積分微分控制
現在,讓我們研究一下PID控制,具有PID控制器的給定系統的閉環傳遞函數為:
T(s)=X(s)R(s)=Kds2+Kps+Kis3+(10+Kd)s2+(20+Kp)s+KiT(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 } T(s)=R(s)X(s)?=s3+(10+Kd?)s2+(20+Kp?)s+Ki?Kd?s2+Kp?s+Ki??經過多次調整,比例增益KpK_pKp? = 350,KiK_iKi? = 300 和 KdK_dKd? = 50
現在,我們設計了一種閉環系統,該系統沒有超調,上升時間快且沒有穩態誤差
設計PID控制器的一般流程
在為給定系統設計PID控制器時,請遵循以下所示的步驟來獲得所需的響應
最后,請記住,你可以不用再系統中都使用三個控制環節,例如,如果PI控制器可以滿足所定的要求(如上述示例),則無需在系統上實現PID控制器,保持控制器盡可能的簡單。
在以下鏈接上可以找到在實際物理系統上調整PI控制器的示例,該示例還說明實現控制的一些挑戰:控制飽和,積分器飽和以及噪聲放大。
自動PID參數整定
MATLAB提供了用于自動選擇最佳PID增益的工具,從而無需進行上述反復試驗。您可以直接使用pidtuner訪問調優算法,也可以使用pidTuner通過美觀的圖形用戶界面(GUI)訪問調優算法
MATLAB自動整定算法選擇PID增益來平衡性能(響應時間,帶寬)和魯棒性(穩定性裕度)。默認情況下,該算法設計為60度的相位裕度。
讓我們探索這個自動化工具,方法是首先輸入一下所示命令為質量塊彈簧阻尼器系統生成比例控制器,在所示的語法中,P是之前生成的模型,"p"指控制器采用比例控制器。
將會顯示pidTuner GUI窗口,如下所示:
注意,所示的階躍響應比我們手動設計的比例控制器要慢,現在,單擊右上方的Show Parameters按鈕,正如預期的那樣,比例增益KpK_pKp? 小于我們采用的比例增益 KpK_pKp? = 94.86 < 300.
現在,我們可以調整控制器參數,并立即在GUI窗口中看到生成的響應。嘗試將”Response Time slider“滑塊向右拖動到0.14s,如下所示,這確實會加快響應,并且我們可以看到KpK_pKp?現在更接近于手動選擇的值。我們還可以看到系統的其他性能和魯棒性參數,請注意,在調整滑塊之前,目標相位裕度為60度,這是pidTuner的默認設置,通常可以再魯棒性和性能之間取得良好的平衡。
現在,讓我們嘗試為我們的系統設計PID控制器,通過將先前設計的控制器指定第二個參數”C“,pidTuner將設計另一個PID控制器(而不是P或PI),并將系統與自動控制器的響應與參考的響應進行比較
我們在輸出窗口中看到,自動控制器的響應較慢,并且比參考表現出更多的超調,現在,從工具欄中選擇"Domain:Frequency"選項,該選項顯示了頻域調整參數。
現在輸入32rad/s(帶寬)和90deg(相位裕量),以生成性能與參考相似的控制器,請記住,較高的閉環帶寬會導致更快的上升時間,而較大的相位裕量會減小超調并提高系統穩定性。
最后,我們注意到我們可以使用命令行工具pidtune代替使用pidTuner的GUI
opts = pidtuneOptions('CrossoverFrequency',32,'PhaseMargin',90); [C, info] = pidtune(P, 'pid', opts)總結
以上是生活随笔為你收集整理的控制教程 —— 介绍篇:3.PID控制器设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: W3School 离线手册最新版下载
- 下一篇: [现代控制理论]8.5_线性控制器设计_