PID解釋與離散化算法公式
一、PID解釋
1、PID含義解釋:P是Proportion,比例的意思,I是Integral,積分意思,D是Differential,微分的意思。
2、PID第一種通俗解釋:以有一個水缸有點漏水(而且漏水的速度還不一定固定不變),通過加水讓水維持在要求水面高度的某個位置,一旦發現水面高度低於要求水面高度的某個位置,就要往水缸里加水的例子來說明PID含義。 如:小家伙接到任務后就一直守在水缸旁邊,時間長就覺得無聊,就跑到房里看小說了,每20分鍾來檢查一次水面高度。因水漏得太快,每次小家伙來檢查時,水都快漏完了,離要求的高度相差很遠。於是小家伙改為每5分鍾來檢查一次,結果每次來水都沒怎么漏,不需要加水,來得太頻繁做的是無用功。幾次試驗后,確定每10分鍾來檢查一次。這個檢查時間就稱為采樣周期,即T。為了讓水面高度維持在某個位置,開始小家伙用瓢加水,水龍頭離水缸有十幾米的距離,經常要跑好幾趟才加夠水,於是小家伙又改為用桶加,一加就是一桶,跑的次數少了,加水的速度也快了,但好幾次將缸給加溢出了,不小心弄濕了衣服幾次,小家伙又動腦筋,我不用瓢也不用桶,就用盆,幾次下來,發現剛剛好,不用跑太多次,也不會讓水溢出。這個加水工具的大小就稱為比例系數,即P。在加水過程中,小家伙又發現水雖然不會加過量溢出了,但是有時會高過要求位置比較多,還打濕了衣服。於是小家伙又想了個辦法,在水缸上裝一個漏斗,每次加水不直接倒進水缸,而是倒進漏斗讓它慢慢加。這樣溢出的問題解決了,但加水的速度又慢了,有時還趕不上漏水的速度。從而他試着變換不同大小口徑的漏斗來控制加水的速度,最終找到了滿意的漏斗。這個漏斗控制加水時間就稱為積分時間,即I。經過幾番折磨,小家伙終於喘了一口,但任務要求突然嚴了,水位控制的及時性要求大大提高,一旦水位過低,必須立即將水加到要求位置,而且不能高出太多,否則不給工錢。小家伙又為難了!於是小家伙又開努腦筋,終於讓小家伙想到一個辦法,放一盆備用水在旁邊,一發現水位低了,不經過漏斗就是一盆水下去,這樣及時性是保證了,但水位有時會高多了,小家伙可就惱啦。但方法總比困難多,小家伙在要求水位的水平面水缸處鑿一孔,再接一根管子到下面的備用桶里,這樣多出的水會從上面的孔里漏出來。這個水漏出的快慢就稱為微分時間,即D。 雖然微分的比喻有點牽強,但能幫助理解就行了。舉例中小家伙的試驗是一步步獨立做,但實際加水工具、漏斗口徑、溢水孔的大小同時都會影響加水的速度。
3、PID第二種通俗解釋:以有一個水缸里有些水,通過加水讓水維持在要求水面高度的某個位置,一旦發現水面高度低於要求水面高度的某個位置,就要往水缸里加水的例子來說明PID含義。 如:假設我們需要把預期水面高度穩定在A平面,而實際要求水面高度在B平面,那么水面高度差值Err=A-B,這個時候我們需要往水缸里面加水,加水量就是Kp*Err,Kp就是我們的比例控制系數,即P。如果A>B,Err(水面高度差值)為正,就往水缸里面加水;如果A<B,Err(水面高度差值)為負,就從水缸里面舀水出來。那么只要預期水面高度和實際要求水面高度有差值,我們都會通過水桶去加減水來調整系統。這里也許有人會有疑問,如果這里把比例控制系數Kp直接設置成1,然后加水的量直接為Err=A-B不就可以了。然而實際上很多系統是做不到這點的。比如溫度控制系統,實際溫度為5度,我要通過加熱把溫度提升到30度,這里難道我們能一次性准確的給系統加30度?顯然這是做不到的。那么比例控制的最終結果是讓Err(水面高度差值)的值趨向於0。比例控制部分公式如下圖:
在我們的比例控制的作用下,Err(水面高度差值)慢慢減小(假設一開始預期水面高度的水平面A大於實際要求水面高度的水平面B,也就是說Err(水面高度差值)是一個正值),由此可知Err(水面高度差值)是一條隨時間變化且斜率小於0的曲線。那在一定周期內,Err(水面高度差值)越大,微分的絕對值越大,對Err的減小速度起到抑制作用,直到最后斜率為0微分才會停止抑制作用。微分部分公式如下圖一及隨着微分的影響,Err(水面高度差值)曲線的斜率最終趨向於0,如下圖二:
比例控制只能盡量將Err(水面高度差值)調節到0,但是會存在這樣那樣的誤差。而微分的作用是將曲線的斜率控制到0則停止對其抑制作用,但曲線的斜率為0的時候,Err(水面高度差值)並不一定為0。總的來說就是存在靜差。怎樣來消除靜差的呢?使用積分(積分公式如下圖二)來消除。我們都知道曲線的積分相當於曲線與x軸圍出來的面積如下圖一。積分作用的目就是使紅色部分的面積和藍色部分的面積的和為0,即使系統在比例控制部分和微分控制部分已經趨於穩定,只要Err(水面高度差值)不為0就會存在靜差,只要存在靜差積分就會對系統產生影響,直到系統的Err(水面高度差值)值為0。這樣我們的PID控制在理論上就可以達到一個非常精確的控制效果。
二、PID離散化算法公式
1、PID離散化算法公式:分有位置式PID算法與增量式PID算法
2、位置式PID算法:假設采樣時間間隔為T,則在k時刻:偏差為e(k);積分為e(k)+e(k-1)+e(k-2)+…+e(0);微分為(e(k)-e(k-1))/T,離散化后的公式如圖一與從離散化后的公式分解后所得公式如圖二。
由以上公式可知:比例系數:Kp,積分系數:Kp*T/Ti,可以用Ki表示;微分系數:Kp*Td/T,可以用Kd表示。則公式可以寫成如下形式,這就是我們所說的位置式PID算法公式:
3、增量式PID算法:根據以上位置式PID算法公式推算增量式PID算法,可以求得如下形式:
由以上增量式PID算法公式分解可求得如下形式,這就是我們所說的增量式PID算法公式:
由以上增量式PID算法公式的分解式可知,由於我們需要通過計算系統的需求增量(即u(k),且只跟最近三次的偏差值有關
。)來調整系統穩定性,由此可得系統需求增量公式如下所示:
4、位置式PID算法與增量式PID算法優缺點:位置式PID是一種非遞推式算法,可直接控制執行機構(如平衡小車),u(k)的值和執行機構的實際位置(如小車當前角度)是一一對應的,因此在執行機構不帶積分部件的對象中可以很好應用等優點,但每次輸出均與過去的狀態有關,計算時要對e(k)進行累加,運算工作量大等缺點。增量式PID算法是一種遞推式算法,誤動作時影響小,必要時可用邏輯判斷的方法去掉出錯數據,手動/自動切換時沖擊小,便於實現無擾動切換,當計算機故障時,仍能保持原值,算式中不需要累加,控制增量Δu(k)的確定僅與最近3次的采樣值有關等優點,但積分截斷效應大,有穩態誤差,溢出的影響大,有的被控對象用增量式則不太好等缺點。