您好, 歡迎來到化工儀器網(wǎng),! 登錄| 免費(fèi)注冊(cè)| 產(chǎn)品展廳| 收藏商鋪|
當(dāng)前位置:深圳市晧辰電子科技有限公司>>技術(shù)文章>>干貨 | 從原理上真正學(xué)會(huì)PID控制
PID控制應(yīng)該算是應(yīng)用非常廣泛的控制算法了,。小到控制一個(gè)元件的溫度,大到控制無人機(jī)的飛行姿態(tài)和飛行速度等等,都可以使用PID控制,。這里我們從原理上來理解PID控制,。
PID(proportion integration differentiation)其實(shí)就是指比例,積分,,微分控制,。先把圖片和公式擺出來,看不懂沒關(guān)系,。(一開始看這個(gè)算法,,公式能看懂,具體怎么用怎么寫代碼也知道,,但是就是不知道原理,,不知道為什么要用比例,微分,,積分這3個(gè)項(xiàng)才能實(shí)現(xiàn)hao的控制,,用其中兩個(gè)為什么不行,用了3個(gè)項(xiàng)能好在哪里,,每一個(gè)項(xiàng)各有什么作用)
總的來說,,當(dāng)?shù)玫较到y(tǒng)的輸出后,將輸出經(jīng)過比例,,積分,,微分3種運(yùn)算方式,疊加到輸入中,,從而控制系統(tǒng)的行為,,下面用一個(gè)簡(jiǎn)單的實(shí)例來說明。
比例控制算法
我們先說PID中簡(jiǎn)單的比例控制,,拋開其他兩個(gè)不談,。還是用一個(gè)經(jīng)典的例子吧。假設(shè)我有一個(gè)水缸,,終的控制目的是要保證水缸里的水位永遠(yuǎn)的維持在1米的高度,。假設(shè)初始時(shí)刻,水缸里的水位是0.2米,,那么當(dāng)前時(shí)刻的水位和目標(biāo)水位之間是存在一個(gè)誤差的error,,且error為0.8.這個(gè)時(shí)候,假設(shè)旁邊站著一個(gè)人,,這個(gè)人通過往缸里加水的方式來控制水位,。如果單純的用比例控制算法,就是指加入的水量u和誤差error是成正比的,。
即:u=kp*error
假設(shè)kp取0.5,, 那么t=1時(shí)(表示第1次加水,,也就是次對(duì)系統(tǒng)施加控制),那么u=0.5*0.8=0.4,,所以這一次加入的水量會(huì)使水位在0.2的基礎(chǔ)上上升0.4,,達(dá)到0.6.。
接著,,t=2時(shí)刻(第2次施加控制),,當(dāng)前水位是0.6,所以error是0.4,。u=0.5*0.4=0.2,,會(huì)使水位再次上升0.2,達(dá)到0.8,。
如此這么循環(huán)下去,,就是比例控制算法的運(yùn)行方法。 可以看到,,終水位會(huì)達(dá)到我們需要的1米,。
但是,單單的比例控制存在著一些不足,,其中一點(diǎn)就是 –穩(wěn)態(tài)誤差?。ㄎ乙彩强戳撕芏啵⑶蚁肓撕镁貌畔胪ㄊ裁词欠€(wěn)態(tài)誤差以及為什么有穩(wěn)態(tài)誤差),。
像上述的例子,,根據(jù)kp取值不同,系統(tǒng)后都會(huì)達(dá)到1米,,只不過kp大了到達(dá)的快,,kp小了到達(dá)的慢一些。不會(huì)有穩(wěn)態(tài)誤差,。但是,,考慮另外一種情況,假設(shè)這個(gè)水缸在加水的過程中,,存在漏水的情況,,假設(shè)每次加水的過程,,都會(huì)漏掉0.1米高度的水,。
仍然假設(shè)kp取0.5,那么會(huì)存在著某種情況,,假設(shè)經(jīng)過幾次加水,,水缸中的水位到0.8時(shí),水位將不會(huì)再變換,。因?yàn)?,水位?.8,,則誤差error=0.2。所以每次往水缸中加水的量為u=0.5*0.2=0.1.同時(shí),,每次加水,,缸里又會(huì)流出去0.1米的水,加入的水和流出的水相抵消,,水位將不再變化,。
也就是說,我的目標(biāo)是1米,,但是后系統(tǒng)達(dá)到0.8米的水位就不再變化了,,且系統(tǒng)已經(jīng)達(dá)到穩(wěn)定。由此產(chǎn)生的誤差就是穩(wěn)態(tài)誤差了,。
(在實(shí)際情況中,,這種類似水缸漏水的情況往往更加常見,比如控制汽車運(yùn)動(dòng),,摩擦阻力就相當(dāng)于是“漏水”,,控制機(jī)械臂、無人機(jī)的飛行,,各類阻力和消耗都可以理解為本例中的“漏水”)
所以,,單獨(dú)的比例控制,在很多時(shí)候并不能滿足要求,。
積分控制算
還是用上面的例子,,如果僅僅用比例,可以發(fā)現(xiàn)存在暫態(tài)誤差,,后的水位就卡在0.8了,。于是,在控制中,,我們?cè)僖胍粋€(gè)分量,,該分量和誤差的積分是正比關(guān)系。所以,,比例+積分控制算法為:
u=kp*error+ ki∗∫ error
還是用上面的例子來說明,,次的誤差error是0.8,第二次的誤差是0.4,,至此,,誤差的積分(離散情況下積分其實(shí)就是做累加),∫error=0.8+0.4=1.2. 這個(gè)時(shí)候的控制量,,除了比例的那一部分,,還有一部分就是一個(gè)系數(shù)ki乘以這個(gè)積分項(xiàng)。由于這個(gè)積分項(xiàng)會(huì)將前面若干次的誤差進(jìn)行累計(jì),,所以可以很好的消除穩(wěn)態(tài)誤差(假設(shè)在僅有比例項(xiàng)的情況下,,系統(tǒng)卡在穩(wěn)態(tài)誤差了,,即上例中的0.8,由于加入了積分項(xiàng)的存在,,會(huì)讓輸入增大,,從而使得水缸的水位可以大于0.8,漸漸到達(dá)目標(biāo)的1.0.)這就是積分項(xiàng)的作用,。
微分控制算法
換一個(gè)另外的例子,,考慮剎車情況。平穩(wěn)的駕駛車輛,,當(dāng)發(fā)現(xiàn)前面有紅燈時(shí),,為了使得行車平穩(wěn),基本上提前幾十米就放松油門并踩剎車了,。當(dāng)車輛離停車線非常近的時(shí)候,,則使勁踩剎車,使車輛停下來,。整個(gè)過程可以看做一個(gè)加入微分的控制策略,。
微分,說白了在離散情況下,,就是error的差值,,就是t時(shí)刻和t-1時(shí)刻error的差,即u=kd*(error(t)-error(t-1)),,其中的kd是一個(gè)系數(shù)項(xiàng),。可以看到,,在剎車過程中,,因?yàn)閑rror是越來越小的,所以這個(gè)微分控制項(xiàng)一定是負(fù)數(shù),,在控制中加入一個(gè)負(fù)數(shù)項(xiàng),,他存在的作用就是為了防止汽車由于剎車不及時(shí)而闖過了線。從常識(shí)上可以理解,,越是靠近停車線,,越是應(yīng)該注意踩剎車,不能讓車過線,,所以這個(gè)微分項(xiàng)的作用,,就可以理解為剎車,當(dāng)車離停車線很近并且車速還很快時(shí),,這個(gè)微分項(xiàng)的值(實(shí)際上是一個(gè)負(fù)數(shù))就會(huì)很大,,從而表示應(yīng)該用力踩剎車才能讓車停下來,。
切換到上面給水缸加水的例子,,就是當(dāng)發(fā)現(xiàn)水缸里的水快要接近1的時(shí)候,,加入微分項(xiàng),可以防止給水缸里的水加到超過1米的高度,,說白了就是減少控制過程中的震蕩,。
現(xiàn)在再回頭看這個(gè)公式,就很清楚了
括號(hào)內(nèi)項(xiàng)是比例項(xiàng),,第二項(xiàng)是積分項(xiàng),,第三項(xiàng)是微分項(xiàng),前面僅僅是一個(gè)系數(shù),。很多情況下,,僅僅需要在離散的時(shí)候使用,則控制可以化為
每一項(xiàng)前面都有系數(shù),,這些系數(shù)都是需要實(shí)驗(yàn)中去嘗試然后確定的,,為了方便起見,將這些系數(shù)進(jìn)行統(tǒng)一一下:
這樣看就清晰很多了,,且比例,,微分,積分每個(gè)項(xiàng)前面都有一個(gè)系數(shù),,且離散化的公式,,很適合編程實(shí)現(xiàn)。
講到這里,,PID的原理和方法就說完了,,剩下的就是實(shí)踐了。在真正的工程實(shí)踐中,,難的是如果確定三個(gè)項(xiàng)的系數(shù),,這就需要大量的實(shí)驗(yàn)以及經(jīng)驗(yàn)來決定了。通過不斷的嘗試和正確的思考,,就能選取合適的系數(shù),,實(shí)現(xiàn)優(yōu)良的控制器。
請(qǐng)輸入賬號(hào)
請(qǐng)輸入密碼
請(qǐng)輸驗(yàn)證碼
以上信息由企業(yè)自行提供,,信息內(nèi)容的真實(shí)性,、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),化工儀器網(wǎng)對(duì)此不承擔(dān)任何保證責(zé)任,。
溫馨提示:為規(guī)避購(gòu)買風(fēng)險(xiǎn),,建議您在購(gòu)買產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。