PID演算法的理解及實現

2021-08-19 01:14:18 字數 2430 閱讀 2403

關於理解pid控制演算法最典型的乙個例子就是乙個漏水的水缸的問題。網上有很多講解pid的帖子會講到這個例子。這裡我也把我自己對於pid的理解用這個例子闡述一遍。

有個漏水的水缸,而且漏水的速度還不是恆定的。然後我們還有個水桶,我們可以控制往水缸裡面加水或者從水缸裡面舀水出來。另外我們可以檢測水平面。現在我們的目的就是要控制水平面穩定在我們想要的任何乙個平面上。

注意我們使用pid需要在乙個閉環系統裡面。什麼叫閉環系統,就是有輸入有反饋,輸入就是能輸入乙個量去影響和控制我們的系統,反饋就是我們要能知道我們最終控制的東西的狀態。在這個漏水的水缸系統中,輸入就是這個水桶,我們能通過水桶往水缸裡面加水或者從水缸裡面舀水出來來影響我們水缸的水平面,反饋的話也就是說我們要能測量水平面,知道水平面是多少。控制系統原理圖如下:

我們來看看公式:

其中kp為比例係數,ti為積分時間常量,td為積分時間常量。

首先是比例控制。比例控制就好比是通過水桶往水缸加水或者從水缸舀水。假設我們需要把水平面穩定在a平面,而實際水平面在b平面,那麼水平面差值err=a-b,那這個時候我們需要往裡面加水的量就是kp*err,kp就是我們的比例控制係數。

如果a>b,err為正,就往水缸裡面加水;如果a

這裡也許有人會有疑問,如果這裡把比例控制係數kp直接設定成1,然後加水的量直接為err=a-b不就可以了。然而實際上很多系統是做不到這點的。比如溫度控制系統,實際溫度為10度,我要通過加熱把溫度提公升到40度,這裡難道我們能一次性準確的給系統加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控制在理論上就可以達到乙個非常精確的控制效果。

來看看我們的積分公式部分:

假設取樣時間間隔為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演算法的離散形式就是這樣了,這就是我們平時說的位置式pid。

接下來我們繼續推算增量式pid,根據上面公式我們可以求得:

上式就是增量式pid的表現形式,計算出來的增量只跟最近三次的偏差值有關。注意這裡計算出來的是增量值,也就是說如果我們要求u(k)的話應該是

那麼pid的離散化就長不多是這樣了,接下來我們看看pid的程式實現。

python實現PID演算法及測試

pid演算法實現 import time class pid def init self,p 0.2,i 0.0,d 0.0 self.kp p self.ki i self.kd d self.sample time 0.00 self.current time time.time self.la...

Pid演算法 pid 及引數除錯方法

所謂pid指的是proportion integral differential。翻譯成中文是比例 積分 微分。記住兩句話 1 pid是經典控制 使用年代久遠 2 pid是誤差控制 對直流電機速度進行定速控制 1 l293作為電機驅動 2 光電感測器 作為輸出反饋 3 pwm做為輸入控制。pid怎麼...

關於PID演算法的難點理解

基本算式 離散寫法 連續寫法 比例調節 部分最容易理解,將期望值和目前所在的狀態值作差得error k 即e k 其係數即根據差值得調節速度大小 積分調節 是為了解決比例調節一常見軟肋,即穩態誤差。穩態誤差 用水池灌水的比方可以很好理解,比如放入90 水時,出水速度大小恰好等於比例調節項,使得系統穩...