廢話不多說直接承接上文
PID
三個字母分別是比例、積分、微分的縮寫,他的公式也非常的簡單,下面就是最常用的位置式pid的離散化公式了:
在這個式子中,U(k)即pid的輸出,Kp、Ki、Kd是三個常數,需要我們去整定,err(k)指的是第k次時期望值與輸出值的差值。
當然直接看公式還是過於枯燥了,我們回到上文的例子。
回到那個栗子
由於pid是基於誤差進行計算,我這里把昨天的圖再進行一個改進:
在圖的左邊,期望輸出X減去實際輸出Y獲得的誤差E來作為輸入值給到PID控制器,然后再由PID去控制這個系統。
下面就分開來通俗的講講PID三個參數的運算到底是何意義
比例Proportional調節
在pid公式中我們來單看P項的輸出:
非常好理解,這里的小人看這個誤差大不大,如果誤差比較大,那可以把控制器的輸出調大,等到誤差小的時候我也相應地把輸出調小,如果誤差從正變成負了,那我也同樣的把輸出反過來。
積分Integral調節
同樣的,我們把I項的輸出拎出來:
在小人這方面,我們可以這樣理解:小人看見有誤差,同時,誤差存在的時間非常久,那就該把拉桿多拉動一些了。
不過單單這么說就不能體現I調節一些重要的作用了,這里我換一個例子:
請大家把我畫的這坨東西當作一個飛行器。這個時候它的任務是飛到target的高度,我們把pid的輸出值簡單當成飛行器的上升力,此時考慮如果我們只用P調節,那么我們會遇到一個問題,就是雖然始終有誤差值,但是\(K_pe\)的值在我畫的那條線上就已經等於重力了,再往上P調節的輸出也完全無法滿足讓飛行器飛到指定高度。那么這個時候如果有I調節,我們將誤差值進行積分,那我們就可以慢慢的把輸出累積上去,最終就能達到目標值了。那么這就是積分項的一個消除穩態誤差的效果。
微分Derivative調節
D項的輸出:
相當於把誤差對時間求導。
看誤差的變化率有什么意思呢,其實它是一個提前抑制的作用,你會發現如果誤差值持續減小的話那么D項的值也是小於零的,這里的小人發現誤差變化過大了,實際的輸出值很有可能會超出預期值,怎么辦呢,那其實就可以通過D項來抑制輸出,讓他的變化率不那么大,最終可以平穩的從當前值達到目標值,有效的減少超調。