PID控制器(比例-積分-微分控制器),首先以一個通俗而又經(jīng)典的小故事來介紹它,。 /************************小故事分界線*****************************/ 小明接到這樣一個任務(wù): /************************小故事分界線*****************************/ 好,,故事看完了,相信大家對PID算法有了初步認識,,接下來就深入一點進行講解: PID控制器由比例單元(P)單元(I)單元(D),其輸入err(t)與輸出u(t)的關(guān)系為: ①比例P控制 理解:比例控制中控制器的輸出u與輸入誤差信號err成比例關(guān)系,。假如某一刻t你的預(yù)期值是E,而實際值為A,,那么誤差值就為err(t)=E-A,,這時候控制器輸出就為u(t)=Kp*err(t)。 *問:假設(shè)你有一個加減計算器,,由于某種原因你每次只能加或減u(t)并且比例系數(shù)Kp=0.4,,讓你從0開始去逼近100。 *解:顯然,,這時候你的預(yù)期值E為100,,而實際值為0,那么誤差值就為err(t1)=100-0,進行第一次加減運算(你按計算器加的值為u(t1)=0.4*100=40),,好了,,第一次計算器從0加到了40; 第二次,,預(yù)期100,,實際40,誤差60,,進行加減運算(你按計算機加的值為u(t2)=0.4*60=24),,第二次計算器從40加到了64; 第三次,,預(yù)期100,,實際64,誤差36,,進行加減運算(你按計算器加的值為u(t3)=0.4*36=14.4),,第三次計算器從64加到了78.4; 第四次從78.4加到87.04,; 第五次87.04加到92.224 . . . 剩下的就不打了,,貼圖吧(data0) 由于比例系數(shù)較低,大家可以看到數(shù)據(jù)是慢慢地逼近100,,實際上加減運算到第23次時,,實際值A=99.999,顯然比例控制已經(jīng)到達一個比較可觀的精度了,。如果比例系數(shù)Kp設(shè)為1則可以一次運算到達100,。 ②積分I控制 理解:在積分控制中控制器的輸出與輸入誤差信號的積分成正比關(guān)系。如果系統(tǒng)進入穩(wěn)態(tài)后存在穩(wěn)態(tài)誤差,,必須引入積分環(huán)節(jié)以消除誤差,。積分項為誤差對時間的積分,即便誤差很小,,隨著時間的增加積分項也會增大,,引導(dǎo)控制器增大輸出使穩(wěn)態(tài)誤差減小,直至穩(wěn)態(tài)誤差為0,。如下圖所示(圖中紅色為穩(wěn)態(tài)誤差,,積分控制下逐漸消除) ③微分D控制 理解:在微分控制中,控制器的輸出與輸入誤差信號的微分(即誤差的變化率)成正比關(guān)系,。誤差變化越快,,其微分絕對值越大。誤差增大時,,其微分為正,;誤差減小時,其微分為負;只有誤差為常數(shù)時,,微分才為0,。總體來講微分環(huán)節(jié)能預(yù)測變化的趨勢來提前抑制誤差直至微分為0,。如上圖所示(曲線的斜率為微分值,,當誤差為常數(shù)或者為0時,微分值即曲線的斜率為0) /*****************************總結(jié)********************************/ 對于上述3種控制環(huán)節(jié): 比例(P)+積分(I)控制器可以使系統(tǒng)在進入穩(wěn)態(tài)后無穩(wěn)態(tài)誤差,; 比例(P)+微分(D)控制器能改善系統(tǒng)在調(diào)節(jié)過程中的動態(tài)特性; 總的來說,,PID控制其實是對反饋的誤差進行控制的過程,,如果誤差為0,則比例環(huán)節(jié)不起作用,,只有誤差存在才進行比例調(diào)節(jié),;積分環(huán)節(jié)是用來消除穩(wěn)態(tài)誤差;微分環(huán)節(jié)根據(jù)誤差信號的變化趨勢進行超前調(diào)節(jié),。 /**************************************************************************/ PID基本原理講解到此結(jié)束,,接下來講講編程實現(xiàn)。 原始公式是連續(xù)狀態(tài)的,,為了方便在處理器上實現(xiàn),,通常對PID連續(xù)系統(tǒng)離散化。 假設(shè)采樣周期間隔為T,,則在KT時刻: 偏差err(K)=E(k)-A(k),; 積分環(huán)節(jié)用加和形式表示:err(k)+err(K-1)+…err(0); 微分環(huán)節(jié)用斜率形式表示:[err(k)-err(k-1)]/T; 比例系數(shù):Kp,; 積分系數(shù):Ki=Kp*T/Ti; 微分系數(shù):Kd=Kp*Td/T; 從而得到PID離散表示形式: 上式也是位置式PID的表達形式,。 我們求出u(k-1),然后求出△u(k)=u(k)-u(k-1),就得到增量式PID的表達形式: 既然表達式都有了,,那現(xiàn)在就用C語言來實例化PID控制器:
曲線1:設(shè)初始值為0,,期望值ExpectedValue為100,,比例系數(shù)Kp為0.5,積分系數(shù)Ki為0.2,微分系數(shù)kd為0.1,,采樣周期為20ms,讓PID進行200次調(diào)節(jié),,得到如下曲線(data1): 設(shè)當實際值ActualValue達到199.999時認為穩(wěn)態(tài),通過查看數(shù)據(jù)得第84次運算時達到條件,,所用時間為84*20(ms)=1680(ms)=1.68(s) 曲線2:設(shè)初始值為0,,期望值ExpectedValue為100,比例系數(shù)Kp為0.5,積分系數(shù)Ki為0.3,微分系數(shù)kd為0.0,,采樣周期為20ms,讓PID進行200次調(diào)節(jié),,得到如下曲線: 設(shè)當ActualValue達到199.999時認為穩(wěn)態(tài),通過查看數(shù)據(jù)得第56次運算時達到條件,,所用時間為56*20(ms)=1120(ms)=1.12(s),,可見調(diào)參之后系統(tǒng)達到穩(wěn)態(tài)時間縮減33.3%,并且調(diào)節(jié)過程更為穩(wěn)定,。 *注:上面用反應(yīng)曲線法進行粗略地參數(shù)整定,,但PID控制器的參數(shù)整定往往需要實際工程操作進行調(diào)整修改才能得出最優(yōu)解,這就要求大家要多動手實操了,。 下一篇文章將淺談PID算法的改進(PS:本來想一次性寫完的,,奈何時間太久了,眼睛難受/(ㄒoㄒ)/溜了溜了~~),。 |
|
來自: lixinhecom > 《待分類》