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