1. 程式人生 > >初用PID的一點認識

初用PID的一點認識

了解 模塊 text 一段時間 都是 過大 位數 對象 記憶

PID全稱比例(proportion)-積分(integral)-微分(derivative)控制器,個人理解,說的通俗點就是根據目前及之前的狀態算出P I D三個量來決定輸出的大小。
實際使用都是一段時間采樣一次,對象是離散的值,所以計算並不難,如下:

假設系統開始采樣的數據為X1,X2,X3.....+Xk
P就是當前的誤差大小,記為ek=Set-Xk Set為當前設定的值 Xk就是當前測出來的值

I就是從開始到現在誤差的累加,Sk=e1+e2+....+ek

D就是變化率,dk=ek-e(k-1)

這三個量的計算不是難事,但是輸出Out(k)=Kp*ek+Ki*Sk+Kd*dk 還需要三個常數來確定PID三個量的權重,這三個常數就是需要慢慢調試的
調試三個量需要了解其作用。
先說說準備工作,輸出的模塊需要先調試好,規定正方向,輸入大於零往正方向調,小於零往負方向調,這樣就保證了比例P的輸出始終是往設置的狀態靠近,這也就是P的作用。
I是積分,其作用是得知目前為止系統的輸出造成誤差的累積是如何的,然後著力於消減這個誤差,所以具有使系統誤差趨於零的作用。若累加誤差過大,可以考慮限幅。
D是微分,這個最好理解,ek-e(k-1)=x(k-1)-x(k)=-△x/△t △t即為采樣間隔時間, 可知,微分用於抑制相對於設定狀態的任何變化。

PID三個量的大小算出來是差距很大的 所以三個常數的大小也都差距很大,目前我做的 一般Kp在個位數到十位數之間 而Ki一般是小數,0.幾 1。幾都有可能 Kd一般較大 幾千幾百都有可能
對於平衡小車 倒立擺 之類的題,一般無需積分i PD即可

還有一種增量式PID,名字聽起來高大上,其實是自然而然的事情,如果輸出模塊有記憶上次輸出的功能(就是給它設定輸出值之後,哪怕不給輸出,也會保持上次的輸出),所以輸出只要給變化量就行了,Dout=Out(k)-Out(k-1)

調試三個參數的經驗我也沒多少,目前僅有的經驗是,觀察PID的數據 先確定三個常量的數量級,再細調。

初用PID的一點認識