非常通俗易懂的PID控制(1)

非常通俗易懂的PID控制(1)

13 人贊了文章

油管里看到的,感覺很有意思。出處為Matlab官方。

其中的?便是我們的控制器

舉一個簡單的例子:

你在一個球場上,離你的目標位置差50m,

此時的系統便是你;

要求的是到達目的地。

此時選用一個比例控制,令其為0.1.

一個反饋回來的時候50*0.1 = 5;

比例控制器 輸出的是 執行信號 , 本例中也就是你的行走速度, 此時為5m/s。

輸入到系統中,也就是你,你按照5m/s的速度行駛,

然後系統輸出值,也就是你的位置(field location)

反饋回來,此時可能位置是20m,

50-20 = 30m

再輸入到控制器中, 30 *0.1 = 3m/s

此時的行走速度便是3m/s,

再輸入到系統中(也就是你),往複循環。直到到達目標位置,

當到達後,誤差為0,控制器輸入也為0.便達到穩態。

注意:控制器,如果改成0.2,開始的速度便是10m/s,調控的便快,

即P 越大,調控越快。

再看一個例子:

你有一台無人機,想讓他飛到50m的高度,但此時有一個問題,

無人機的機翼需要旋轉,才能保持保持盤旋(hover),

因此,如果只用比例控制的話,當誤差為0,(到達目的地),輸出速度為0,

無人機便會掉下來!!

本例中假設無人機盤旋需要的速度為100rpm;

在盤旋需要100rpm的情況下,

如果你的增益是2,則在誤差為50m的情況下才能保持(無人機還在地面)

如果你的增益是5,則在誤差為20m的情況下才能保持(離地面30m)

類似如果增益是10,誤差為10m

增益是100,誤差為1m;

即誤差永遠存在,只是變小了。

我們發現,僅有比例控制是遠遠不夠的~~~

這個時候我們便需要積分控制了

積分模塊有有記憶的作用。它會將誤差累加起來,1+1+1.....,這樣反饋後系統會繼續調節,直到達到穩態,從而誤差為0.

此時由於到達目標位置,比例控制便不再發揮作用。

而且由於積分模塊的記憶作用,加減誤差數,該模塊此時會達到一個值,該值正好使得系統(本例中無人機)的輸出速度為100rpm。即達到平衡狀態。

這樣輸出的誤差為0.積分模塊的該值也將保持不變

完美!

但是!!

在調節過程中,經常會發生超過100rpm的情況,即overshoot,

此時我們便需要微分調節

微分調節便是看誤差的變化率,因為誤差是減少的,所以微分值是負的。

所以在誤差變化(即減少很快的時候),微分調節輸出一個負值,降低控制量(本例為旋轉速度),從而避免overshoot等。

最後關於PID如何設計,調參,在實際硬體中使用,等原作者更新了,我再跟大家分享吧。

哇咔咔。

最後:

關於PID控制的一個缺點是對於MIMO,多輸入多輸出的系統,並且變數之間相互影響(即一個輸出影響另一個輸入),此時PID便不合適。

這個時候MPC,模型預測控制便是合適的選擇了。


推薦閱讀:

串級pid設計。 內環需要加積分么?如果加了是用來消除靜差么?

TAG:控制演算法 | 控制理論 | PIDControllerPID控制 |