[自控]PID入門(二)初識pid算法


廢話不多說直接承接上文

PID

三個字母分別是比例、積分、微分的縮寫,他的公式也非常的簡單,下面就是最常用的位置式pid的離散化公式了:

\[U(k)=K_perr(k)+K_i\Sigma err(k)\Delta t + K_d(err(k)-err(k-1))/\Delta t \]

在這個式子中,U(k)即pid的輸出,Kp、Ki、Kd是三個常數,需要我們去整定,err(k)指的是第k次時期望值與輸出值的差值。

當然直接看公式還是過於枯燥了,我們回到上文的例子。

回到那個栗子

由於pid是基於誤差進行計算,我這里把昨天的圖再進行一個改進:
image

在圖的左邊,期望輸出X減去實際輸出Y獲得的誤差E來作為輸入值給到PID控制器,然后再由PID去控制這個系統。

下面就分開來通俗的講講PID三個參數的運算到底是何意義

比例Proportional調節

在pid公式中我們來單看P項的輸出:

\[K_pe \]

非常好理解,這里的小人看這個誤差大不大,如果誤差比較大,那可以把控制器的輸出調大,等到誤差小的時候我也相應地把輸出調小,如果誤差從正變成負了,那我也同樣的把輸出反過來。

積分Integral調節

同樣的,我們把I項的輸出拎出來:

\[K_i\Sigma e\Delta t \]

在小人這方面,我們可以這樣理解:小人看見有誤差,同時,誤差存在的時間非常久,那就該把拉桿多拉動一些了。

不過單單這么說就不能體現I調節一些重要的作用了,這里我換一個例子:
image
請大家把我畫的這坨東西當作一個飛行器。這個時候它的任務是飛到target的高度,我們把pid的輸出值簡單當成飛行器的上升力,此時考慮如果我們只用P調節,那么我們會遇到一個問題,就是雖然始終有誤差值,但是\(K_pe\)的值在我畫的那條線上就已經等於重力了,再往上P調節的輸出也完全無法滿足讓飛行器飛到指定高度。那么這個時候如果有I調節,我們將誤差值進行積分,那我們就可以慢慢的把輸出累積上去,最終就能達到目標值了。那么這就是積分項的一個消除穩態誤差的效果。

微分Derivative調節

D項的輸出:

\[K_d(err(k)-err(k-1))/\Delta t \]

相當於把誤差對時間求導。
看誤差的變化率有什么意思呢,其實它是一個提前抑制的作用,你會發現如果誤差值持續減小的話那么D項的值也是小於零的,這里的小人發現誤差變化過大了,實際的輸出值很有可能會超出預期值,怎么辦呢,那其實就可以通過D項來抑制輸出,讓他的變化率不那么大,最終可以平穩的從當前值達到目標值,有效的減少超調。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM