非常通俗易懂的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控制 |