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