前面的文章已經(jīng)介紹過什么是pid了,現(xiàn)在再回顧一下:
PID:是過程控制中常用的一種針對某個(gè)對象或者參數(shù)進(jìn)行自動控制的一種算法。
這一篇分享不打算再深究pid的理論知識,如果有不懂或者對pid感興趣的朋友,可以自行查閱資料,或者看我前面的文章。
這次分享一下pid算法的常見實(shí)現(xiàn)和流程。主要簡單分享一下pid的模擬控制實(shí)現(xiàn)和數(shù)字控制實(shí)現(xiàn)。
1、PID的模擬控制
在以前,計(jì)算機(jī)系統(tǒng)沒這么發(fā)達(dá)的時(shí)候,那個(gè)時(shí)候很多的系統(tǒng)是通過硬件電子的方式去實(shí)現(xiàn)的。如果有觀察過一些老物件的話,會發(fā)現(xiàn)以前那個(gè)時(shí)代的很多電子式的控制系統(tǒng),都是很巨大很笨重的,里面滿滿的都是電子元器件。
到了后面計(jì)算機(jī)技術(shù)發(fā)展迅猛,很多的系統(tǒng)可以依靠軟件算法實(shí)現(xiàn)了,也極大地減少了系統(tǒng)的元器件電子的使用,使得很多系統(tǒng)功能強(qiáng)大的同時(shí)還體積小巧輕便。
比如下圖這個(gè)模擬反饋控制系統(tǒng)的示意圖:
上圖是一個(gè)簡單的模擬閉環(huán)反饋控制系統(tǒng),它可以實(shí)現(xiàn)將被控量通過反饋回路反饋到輸入端,從而對被控量和期望輸出值進(jìn)行比較,形成一個(gè)閉環(huán)的自動控制系統(tǒng)。
圖中的模擬調(diào)節(jié)器的意思就是控制規(guī)律的方案是通過模擬硬件的方式來實(shí)現(xiàn)的,如果想要調(diào)整系統(tǒng)的控制規(guī)律就需要修改調(diào)節(jié)器的硬件。這就是模擬控制系統(tǒng)的意思。
而模擬PID的實(shí)現(xiàn)也是通過模擬電子器件搭建的電路實(shí)現(xiàn)的,通過電子元器件的方式實(shí)現(xiàn)比例、積分、微分單元,然后整合在一塊組成一個(gè)控制系統(tǒng),這就是模擬PID了。如下的示意圖:
模擬PID的微分方程如下:
而PID調(diào)節(jié)器的傳遞函數(shù)如下:
2、PID的數(shù)字控制
數(shù)字控制系統(tǒng)是以微型計(jì)算機(jī)作為控制器,通過軟件的方式來實(shí)現(xiàn)控制規(guī)律的一種控制系統(tǒng)。當(dāng)我們想要改變控制器的控制規(guī)律,一般只要通過改變相應(yīng)的程序或者軟件參數(shù)即可以實(shí)現(xiàn)改變控制規(guī)律。
數(shù)字控制系統(tǒng)的示意圖如下:
通過數(shù)字控制實(shí)現(xiàn)的PID的差分方程如下:
3、數(shù)字PID算法的兩種類型 — 位置式、增量式
數(shù)字PID:指的是PID控制算法的實(shí)現(xiàn)是通過計(jì)算機(jī)軟件程序?qū)崿F(xiàn)的,計(jì)算機(jī)需要對輸入的連續(xù)信號進(jìn)行采集,然后通過量化作為控制器的輸入?yún)?shù),從而經(jīng)過算法的調(diào)節(jié)實(shí)現(xiàn)目標(biāo)對象的控制。
PID控制算法在計(jì)算機(jī)系統(tǒng)中,一般都是采用的數(shù)值逼近的方法進(jìn)行的。因?yàn)樵诤芏嗟南到y(tǒng)中,它一般都是連續(xù)的,而計(jì)算機(jī)要進(jìn)行運(yùn)算就要依靠計(jì)算機(jī)的運(yùn)算,計(jì)算機(jī)的運(yùn)算是離散的。所以想要讓計(jì)算機(jī)能夠?qū)崿F(xiàn)PID算法程序,就必須要將PID算法的連續(xù)函數(shù)進(jìn)行離散化,從而能夠在計(jì)算中通過軟件算法的方式實(shí)現(xiàn)。
一般而言,計(jì)算機(jī)實(shí)現(xiàn)PID算法的時(shí)候,在采樣周期很小的時(shí)候,積分部分可以用對誤差求和的方式代替,微分部分可以用差商的方式代替,從而實(shí)現(xiàn)將連續(xù)的PID算法的差分方程進(jìn)行離散化,能夠通過計(jì)算機(jī)實(shí)現(xiàn)。
數(shù)字PID主要有兩種:位置式PID和增量式PID
3.1、位置式PID
位置式PID:指的是PID控制器經(jīng)過運(yùn)算輸出的Uk是被控對象的實(shí)際控制量大小。
這個(gè)概念是不是咋一看有點(diǎn)拗口?不理解?別急,舉個(gè)例子看看就知道了。
打個(gè)比方:我要進(jìn)行一個(gè)閥門的控制,從而控制流體的流量大小。假設(shè)閥門的開度位置為0~100,當(dāng)前閥門的開度在位置20的地方?,F(xiàn)在我希望加大流體的流量,通過修改設(shè)定值,PID通過調(diào)節(jié),最終輸出控制量Uk=80,即這個(gè)時(shí)候閥門的開度要到80的位置。這就是位置式PID輸出的是對被控對象的實(shí)際控制量大小的理解。
再來位置式PID的離散公式。如下:
式中:
通過進(jìn)一步整理,可以表示為:
其中:
Kp - 比例系數(shù)
Ki - 積分系數(shù);Ki = Kp*T/Ti;
Kd - 微分系數(shù);Kd = Kp*Td/T;
T:采樣時(shí)間
Ti:積分時(shí)間
Td:微分時(shí)間
從上面的公式可以看出,位置式PID只需要計(jì)算第K次和K-1次的誤差即可,并且控制器會對偏差進(jìn)行累加,也就是控制器的每次輸出Uk都和過去的狀態(tài)有關(guān)。
這也會帶來一些問題,因?yàn)槲恢胮id的輸出Uk和以前的狀態(tài)有關(guān),如果控制器出現(xiàn)異常,那么可能會導(dǎo)致Uk的輸出大幅變化,導(dǎo)致執(zhí)行機(jī)構(gòu)的狀態(tài)大幅變化,嚴(yán)重的話可能會導(dǎo)致嚴(yán)重的生產(chǎn)事故。
另外,因?yàn)槲恢肞ID要對偏差進(jìn)行累積,所以會導(dǎo)致系統(tǒng)的運(yùn)算量變大,這對于運(yùn)算性能不夠好的計(jì)算機(jī)也是一種負(fù)擔(dān)。
3.2、增量式PID
增量式PID:指的是控制器的輸出是對被控對象的增量?Uk,而不是實(shí)際的控制量大小。
怎么去理解增量式PID呢?
打個(gè)比方:比如我要控制一個(gè)步進(jìn)電機(jī)轉(zhuǎn)動的角度,步進(jìn)電機(jī)轉(zhuǎn)動之后所在的位置沒有達(dá)到我們期望的位置,但是又快要接近了,這個(gè)時(shí)候PID控制器輸出的是變化的增量,而不是實(shí)際的控制量。
這么說吧,假如我希望步進(jìn)電機(jī)轉(zhuǎn)動到角度120°,現(xiàn)在是115°了,所以只要再增加+5°的輸出角度即可。如果因?yàn)榭刂瞥?,到?23°的位置,這個(gè)時(shí)候只要減少-3°即可。所以這種情況下控制的輸出是增量變化,而不是實(shí)際的控制量大小。
增量式PID的離散公式如下:
整理如下:
式中:
從增量式PID的離散公式可以看到:增量式PID跟n時(shí)刻、n-1時(shí)刻、n-2時(shí)刻的偏差都有關(guān)系,但是不會對偏差進(jìn)行累積,所以相比位置式PID的計(jì)算量要小,也不會跟過去的偏差有關(guān)聯(lián),所以控制的穩(wěn)定性會更好。
4、數(shù)字PID算法的程序流程
上面分享了數(shù)字PID的離散化公式,代碼也是有實(shí)現(xiàn)的,但是因?yàn)闀簳r(shí)還沒整理好,就留著下次分享的時(shí)候再放上來吧。這里先放PID算法的程序流程圖,其實(shí)說到這里,PID的算法也已經(jīng)可以自己去實(shí)現(xiàn)了。
(1)位置式PID的算法實(shí)現(xiàn)的流程圖
(2)增量式PID的算法實(shí)現(xiàn)流程圖
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7494瀏覽量
87953 -
PID算法
+關(guān)注
關(guān)注
2文章
172瀏覽量
24311 -
PID
+關(guān)注
關(guān)注
35文章
1472瀏覽量
85521 -
數(shù)字控制
+關(guān)注
關(guān)注
2文章
181瀏覽量
25817 -
模擬控制
+關(guān)注
關(guān)注
1文章
32瀏覽量
15068
發(fā)布評論請先 登錄
相關(guān)推薦
評論