在自動控制中,PID及其衍生出來的算法是應(yīng)用最廣的算法之一。各個做自動控制的廠家基本都有會實現(xiàn)這一經(jīng)典算法。我們在做項目的過程中,也時常會遇到類似的需求,所以就想實現(xiàn)這一算法以適用于更多的應(yīng)用場景。
1、PID算法基本原理
PID算法是控制行業(yè)最經(jīng)典、最簡單、而又最能體現(xiàn)反饋控制思想的算法。對于一般的研發(fā)人員來說,設(shè)計和實現(xiàn)PID算法是完成自動控制系統(tǒng)的基本要求。這一算法雖然簡單,但真正要實現(xiàn)好,卻也需要下一定功夫。首先我們從PID算法最基本的原理開始分析和設(shè)計這一經(jīng)典命題。
PID算法的執(zhí)行流程是非常簡單的,即利用反饋來檢測偏差信號,并通過偏差信號來控制被控量。而控制器本身就是比例、積分、微分三個環(huán)節(jié)的加和。其功能框圖如下:

根據(jù)上圖我們考慮在某個特定的時刻t,此時輸入量為rin(t),輸出量為rout(t),于是偏差就可計算為err(t)=rin(t)-rout(t)。于是PID的基本控制規(guī)律就可以表示為如下公式:

其中Kp為比例帶,TI為積分時間,TD為微分時間。PID控制的基本原理就是如此。
2、PID算法的離散化
上一節(jié)簡單介紹了PID算法的基本原理,但要在計算機上實現(xiàn)就必須將其離散化,接下來我們就說一說PID算法的離散化問題。在實現(xiàn)離散化之前,我們需要對比例、積分、微分的特性做一個簡單的說明。
比例就是用來對系統(tǒng)的偏差進行反應(yīng),所以只要存在偏差,比例就會起作用。積分主要是用來消除靜差,所謂靜差就是指系統(tǒng)穩(wěn)定后輸入輸出之間依然存在的差值,而積分就是通過偏差的累計來抵消系統(tǒng)的靜差。而微分則是對偏差的變化趨勢做出反應(yīng),根據(jù)偏差的變化趨勢實現(xiàn)超前調(diào)節(jié),提高反應(yīng)速度。
在實現(xiàn)離散前,我們假設(shè)系統(tǒng)采樣周期為T。假設(shè)我們檢查第K個采樣周期,很顯然系統(tǒng)進行第K次采樣。此時的偏差可以表示為err(K)=rin(K)-rout(K),那么積分就可以表示為:err(K)+ err(K+1)+┈┈,而微分就可以表示為:(err(K)- err(K-1))/T。于是我們可以將第K次采樣時,PID算法的離線形式表示為:

也可以記為:

這就是所謂的位置型PID算法的離散描述公式。我們知道還有一個增量型PID算法,那么接下來我們推到一下增量型PID算法的公式。上面的公式描述了第k個采樣周期的結(jié)果,那么前一時刻也就是k-1個采樣周期就不難表示為:
那么我們再來說第K個采樣周期的增量,很顯然就是U(k)-U(k-1)。于是我們用第k個采樣周期公式減去第k-1個采樣周期的公式,就得到了增量型PID算法的表示公式:
當(dāng)然,增量型PID必須記得一點,就是在記住U(k)=U(k-1)+?U(k)。
3、PID控制器的基本實現(xiàn)
完成了離散化后,我們就可以來實現(xiàn)它了。已經(jīng)用離散化的數(shù)據(jù)公式表示出來后,再進型計算機編程已經(jīng)不是問題了。接下來我們就使用C語言分別針對位置型公式和增量型公式來具體實現(xiàn)。
(1)位置型PID的簡單實現(xiàn)
位置型PID的實現(xiàn)就是以前面的位置型公式為基礎(chǔ)。這一節(jié)我們只是完成最簡單的實現(xiàn),也就是將前面的離散位置型PID公式的計算機語言化。
首先定義PID對象的結(jié)構(gòu)體:
1 /*定義結(jié)構(gòu)體和公用體*/
2
3 typedef struct
4
5 {
6
7 float setpoint; //設(shè)定值
8
9 float proportiongain; //比例系數(shù)
10
11 float integralgain; //積分系數(shù)
12
13 float derivativegain; //微分系數(shù)
14
15 float lasterror; //前一拍偏差
16
17 float result; //輸出值
18
19 float integral;//積分值
20
21 }PID;
接下來實現(xiàn)PID控制器:
1 void PIDRegulation(PID *vPID, float processValue)
2
3 {
4
5 float thisError;
6
7 thisError=vPID->setpoint-processValue;
8
9 vPID->integral+=thisError;
10
11 vPID->result=vPID->proportiongain*thisError+vPID->integralgain*vPID->integral+vPID->derivativegain*(thisError-vPID->lasterror);
12
13 vPID->lasterror=thisError;
14
15 }
這就實現(xiàn)了一個最簡單的位置型PID控制器,當(dāng)然沒有考慮任何干擾條件,僅僅只是對數(shù)學(xué)公式的計算機語言化。
(2)增量型PID的簡單實現(xiàn)
增量型PID的實現(xiàn)就是以前面的增量型公式為基礎(chǔ)。這一節(jié)我們只是完成最簡單的實現(xiàn),也就是將前面的離散增量型PID公式的計算機語言化。
首先定義PID對象的結(jié)構(gòu)體:
1 /*定義結(jié)構(gòu)體和公用體*/
2
3 typedef struct
4
5 {
6
7 float setpoint; //設(shè)定值
8
9 float proportiongain; //比例系數(shù)
10
11 float integralgain; //積分系數(shù)
12
13 float derivativegain; //微分系數(shù)
14
15 float lasterror; //前一拍偏差
16
17 float preerror; //前兩拍偏差
18
19 float deadband; //死區(qū)
20
21 float result; //輸出值
22
23 }PID;
接下來實現(xiàn)PID控制器:
void PIDRegulation(PID *vPID, float processValue)
{
float thisError;
float increment;
float pError,dError,iError;
thisError=vPID->setpoint-processValue; //得到偏差值
pError=thisError-vPID->lasterror;
iError=thisError;
dError=thisError-2*(vPID->lasterror)+vPID->preerror;
increment=vPID->proportiongain*pError+vPID->integralgain*iError+vPID->derivativegain*dError; //增量計算
vPID->preerror=vPID->lasterror; //存放偏差用于下次運算
vPID->lasterror=thisError;
vPID->result+=increment;
}
這就實現(xiàn)了一個最簡單的增量型PID控制器,也沒有考慮任何的干擾條件,僅僅只是對數(shù)學(xué)公式的計算機語言化。
4、基本特點
前面講述并且實現(xiàn)了PID控制器,包括位置型PID控制器和增量型PID控制器。界限來我們對這兩種類型的控制器的特點作一個簡單的描述。
位置型PID控制器的基本特點:
位置型PID控制的輸出與整個過去的狀態(tài)有關(guān),用到了偏差的累加值,容易產(chǎn)生累積偏差。
位置型PID適用于執(zhí)行機構(gòu)不帶積分部件的對象。
位置型的輸出直接對應(yīng)對象的輸出,對系統(tǒng)的影響比較大。
增量型PID控制器的基本特點:
增量型PID算法不需要做累加,控制量增量的確定僅與最近幾次偏差值有關(guān),計算偏差的影響較小。
增量型PID算法得出的是控制量的增量,對系統(tǒng)的影響相對較小。
采用增量型PID算法易于實現(xiàn)手動到自動的無擾動切換。
編輯:hfy
-
自動控制
+關(guān)注
關(guān)注
10文章
722瀏覽量
46569 -
PID控制器
+關(guān)注
關(guān)注
2文章
173瀏覽量
19771
發(fā)布評論請先 登錄
基于C#+WPF全自動溫濕度控制系統(tǒng)概述
大棚溫度自動控制系統(tǒng):實時采集環(huán)境數(shù)據(jù),遠程管理溫室
半導(dǎo)體晶圓去膠機自動控制系統(tǒng)核心介紹
請問如何優(yōu)化PID控制器的參數(shù)以實現(xiàn)快速響應(yīng)和減少超調(diào)?
增產(chǎn)30%的秘密:智能溫室自動控制系統(tǒng)如何重塑農(nóng)業(yè)生產(chǎn)
Aerodiode高帶寬激光鎖定PID控制器
自動控制系統(tǒng)中什么叫開環(huán)控制,半閉環(huán)控制,閉環(huán)控制?三者有何區(qū)別?
協(xié)同與高效:工業(yè)自動化控制系統(tǒng)的多系統(tǒng)集成功能
水泵遠程自動控制系統(tǒng):功能解析與多場景化應(yīng)用指南
溫度位元式控制系統(tǒng)與連續(xù)的PID控制系統(tǒng)的區(qū)別
無刷直流電機自適應(yīng)模糊PID控制系統(tǒng)
水位自動控制器是什么設(shè)備?4G遠程通訊,手機APP智能控制水泵
一步到位,Moku數(shù)字PID控制器實現(xiàn)系統(tǒng)實時調(diào)節(jié)與驗證
水池水位自動控制器如何征服污水水池?
自動控制系統(tǒng)PID控制器的基本實現(xiàn)
評論