PID引數通俗解釋
參考知乎作者“奔三水博.科研菜鳥”的通俗解釋,網址:https://www.zhihu.com/question/23088613/answer/32307723?utm_source=weibo&utm_medium=weibo_share&utm_content=share_answer&utm_campaign=share_button
我們在學習接觸PID時,多數人對所謂的傳遞函式不感興趣,畢竟實際的系統中,又哪有那麼多可以準確確定傳遞函式的系統呢,所以就特別需要對PID的引數進行通俗易懂的解釋。
舉例如下:
一、假設我們面對的系統是一個簡單的水箱也為控制,要從空水箱注水直到達到某個液位高度,而你能控制的變數就是注水水龍頭的開關大小,那麼這個簡單的數學模型就是:
u=dx,其中x為液位,u為水龍頭開度大小,
對於這個簡單的系統,我們只需要一個比例環節就能實現:
u=Kp*e 其中e是誤差值,u是水龍頭開度。
說白了,就是水箱液位舉例預定高度遠的時候,水龍頭開大點(Kp不變,u變大),離得近的時候,就開小點,隨著液位逐步接近預定的高度,逐漸關掉水龍頭,此時Kp的大小代表了水龍頭的粗細,越粗調的越快,這也就是所謂的:
“增大比例係數,一般會加快系統響應”的規律,如下圖所示:
二、引入積分
假設這個水箱不斤斤是裝水的容器,還需要持續穩定的給使用者供水,那麼這個系統的數學模型就需要再增加一項:
u-c = dx,這裡c是一個正的常數,
這時候我們發現如果控制器只有一個比例環節,那麼當系統穩定,也就是dx=0,(特別注意,這裡的“穩定”並不是達到目標,而是系統穩定在某個液位,但是又沒到目標液位),也就是u=Kp*e=c
e = c/Kp
e在系統穩定時不為0,而是不變,這裡要特別清楚,液位舉例我們想要的高度總是差那麼一點點,那麼這個固定差,就是所謂的穩態誤差,或者叫靜態誤差,這個時候c是固定的,所以Kp越大,e越小,這就是所謂的:
“增大比例係數P在又靜態誤差的情況下有利於減小靜差”,如下圖:
但是從上面的式子 e = c/Kp可以看出,即便Kp再大,它畢竟在分母上,e只能是接近於0,不可能為0,況且P太大,會有震盪,那怎麼辦呢,然後就有人自然會想到,我再加一個水龍頭就行了,水箱漏掉多少水,我就給他補多少水,那麼這裡增加的第二個水龍頭的補水功能,就是下面所說的積分作用。
我們把比例環節+積分環節的表示式變為:
積分環節的意義就相當於剛剛增加的那個水龍頭,這個水龍頭的開關規則是水位比預定高度低,就一直的往大擰(正向誤差累加),比預定高度高了,就往小了擰(反向誤差也是累計),有人可能會疑惑,這裡不管是往大了擰還是往小了擰,不都是會一直往裡補水,難道就不是肯定會補大了嗎?這裡有個小彎,注意情景,這個時候水箱還一直漏水呢,所以積分會補大,但是也會往小了補,雖然都是補,只要引數選擇合適,不會一直補大了,因為誤差是有正負的。所以這麼一操作,靜態誤差就沒有了,這也就是所謂的積分環節可以消除系統靜差。
積分項裡有一個積分時間常數,其實就是表示積分環節米敢賭的那個係數Ki = Kp/Ti,這個Ti就是積分常數,其實可以理解成做累計誤差求和的頻率,頻率越大,累加的作用越大,積分的作用也就越大,頻率和時間是倒數關係,所以從上面的式子也能看出來,Ti時間常數越大,積分環節的係數越小,積分環節也就越不敏感,也就是第二個水龍頭越細。在具體寫程式程式碼時,可以結合著PID的取樣時間來寫,畢竟數字PID的積分項表示式就是T/Ti。
當用比例+積分,也就是用兩個水龍頭注水時,在沒有達到預定高度前,第二個積分環節的水龍頭是一致往大了擰的,因為一直是正向誤差累加,只不過往大擰的幅度小了,但是整體趨勢是往大擰,一直等到達到預定高度的時候,它恰好擰到了最大,由於慣性的作用,自然而然注水就會注多了,而多出來的這部分水就叫做“超調”,第二個水龍頭越粗,也就是積分時間常數越小(在分母上),I越大,多注的水就越多,不過它調到恰好等於漏水速度的時間就會越快,但是同時會有更多的波折,於是老師告訴我們一個規律:增大積分時間有利於減小超調,減小震盪,使系統的穩定性增加,但是系統靜差消除的時間會變長。所以我們在寫程式演算法時,積分時間常數Ti不能太小,積分系數I不能太大,越小越平穩,系統越平滑,當然要找到一個平衡點。如下圖所示:
上圖中Ti=10時,曲線更平滑,(Ti並不是最終的I)
接下來我們來看點有意思的東西,還是上面的系統,假設我們選擇使用相同的積分時間常數,但是選擇不同的比例係數會如何呢,如下圖所示:
上面的圖會有些疑問,因為按照前面對Kp的分析“過大的比例係數會使系統有較大的超調,併產生震盪,使穩定性變壞”,但是上面的圖裡怎麼比例大的範兒超調小呢?其實這個也很好解釋,上面的PI控制超調出現的原因是積分這個水龍頭在達到目標液位時也是恰好開到了最大,而比例這個水龍頭越粗,那麼它在超出目標液位時,對超調的抑制也就越明顯,因為此時Kp這個水龍頭是往負方向調節的,積分畢竟有慣性,反應沒那麼快,而比例則立刻往反方向調,所以P和I的合力才會P大反而超調越小。
這裡需要特別注意的是:PID引數整定只是根據普遍經驗總結的,並不是定律,而是一般規律,它針對某個具體的系統不一定完全適用,所以只要理解大方向即可,沒有萬能公式,即便是書本上,也是不同系統,不同的傳遞函式。
三、微分
微分的作用是“阻尼”,也就是根據現在的趨勢去判斷未來,進而來阻礙未來可能出現過調的趨勢,相當於是提前踩點剎車,但是又不全踩剎車,所以總結為:
“微分環節的主要作用是響應過程中抑制偏差任何方向的變化”,注意“任何”二字,響應大了就往回拉一點,響應小了,就往大了補點。
“微分常數不能過大,否則會使響應過程提前制動,反而延長了調節時間”,其實很多的系統本身就有很大的阻尼性,比如要加熱一缸水,或者整個區域的供暖系統,溫度本身就是大的滯後環節,加不加微分都沒太大意義,畢竟很多時候“誤差的誤差”是很小,或者是0(溫度很長時間多不變)的。