PID演算法控制簡單理解
1 傳統的位式控制演算法
使用者期望值Sv(設定值)經控制演算法輸出一個輸出訊號OUT,輸出訊號載入到執行部件上(像MOS管等)對控制物件進行控制(步進電機、加熱器等),控制物件的當前值(Pv)如速度通過感測器反饋給控制演算法與Sv相比較。
特點:1 位式演算法輸出的控制訊號只有兩種狀態‘H’或者‘L’。
2 演算法輸出訊號OUT的依據:
如果Pv>=Sv 輸出訊號高了
如果Pv<Sv 輸出訊號低了
缺點:只能考察控制物件的當前值
2 PID演算法
Sv:使用者的設定值(目標值)
Pv:反應負載當前的狀態值(控制物件當前的狀態值)
E = Sv - Pv :偏差值
2.1 PID演算法分析
1.從開始工作到當前時刻得到一個取樣點序列(假如每秒取樣一次,Xk表示當前時刻的取樣值):
X1,X2,X3,..........Xk-1,Xk
2.分析取樣點序列得到三個資訊:
1> 偏差值Ek = Sv
如果:Ek>0 表示當前時刻未達標
Ek=0 表示當前時刻已達標
Ek<0 表示當前時刻已超標
設:Pout = Kp * Ek ——比例控制
特點:比例控制一般輸出為PWM訊號,通過調節PWM的佔空比,來對輸出進行控制。比例控制只考慮當前時刻是否有偏差,當Ek=0時,負載就處於失控狀態,PWM此時可不起作用;比例控制沒有偏差時是不起作用的,需要始終有一個偏差。
一般地在演算法上加一個常數:
Pout = Kp * Ek + out0 ;
2>歷史偏差序列(有正數有負數)
設:E1=Sv-X1,E2=Sv-X2,E3=Sv-X3,.........Ek = Sv - Xk
得序列:E1,E2,E3,.............Ek.
Sk=E1+E2+E3+............+Ek
如果:Sk>0 過去時間段大多數時刻未達標
Sk=0 過去時間段總體情況較好
Sk<0 過去時間段大多數時刻超標
根據歷史狀態輸出訊號得:
Iout = Kp * Sk ——積分演算法
單純的積分控制Sk=0時,會嚴重干擾當前情況,進入失控狀態;一般的
Iout = Kp * Ek + out0
3>最近兩次的偏差相減
Dk=Ek-Ek-1
如果:Dk>0 偏差有增大趨勢
Dk=0 偏差趨勢沒有變化
Dk<0 偏差有減小趨勢
Dout =Dk * Kp ——微分控制
微分控制不可以獨立行動,微分演算法只關心偏差有沒有變化趨勢
Dout =Dk * Kp + out0