1. 程式人生 > >PID演算法控制簡單理解

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

- Xk 反映了當前時刻,感測器反饋回來的值與目標值偏差的程度;

       如果: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 = K* E+ out0

    3>最近兩次的偏差相減

      Dk=Ek-Ek-1

 

      如果:Dk>0 偏差有增大趨勢
            Dk=0 偏差趨勢沒有變化
            Dk<0 偏差有減小趨勢
         Dout =Dk * Kp   ——微分控制
       微分控制不可以獨立行動,微分演算法只關心偏差有沒有變化趨勢
         Dout =Dk * Kp + out0