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