PID控制器開發筆記之十:步進式PID控制器的實現


  對於一般的PID控制系統來說,當設定值發生較大的突變時,很容易產生超調而使系統不穩定。為了解決這種階躍變化造成的不利影響,人們發明了步進式PID控制算法。

1、步進式PID的基本思想

  所謂步進式PID算法,實際就是在設定值發生階躍變化時,不直接對階躍信號進行響應,而是在一定的時間內逐步改變設定值,直至使設定值達到目標值。這種逐步改變設定值的辦法使得對象運行平穩。適用於高精度伺服系統的位置跟蹤。

  佷顯然,這一方法並未改變PID控制器本身,而是對設定值做了前期處理。所以其結構框圖與控制方程與其他的PID控制算法是一致的。

  為了對設定值做必要處理,以使其不知快速變化,有多種方法。比較常用的是建立線性變化函數的辦法。我們可以規定設定值從0-100%的變化時間為T,則可以確定設定值變化的斜率絕對值,或者說是步長。知道補償后,我們就可以根據不常來不斷修改設定值,直到目標值。可用公式描述為:

 

  其中SPt為設定值目標值,SPs為設定值的起始值,sl為步長,k為步長的變化系數:

 

  而控制器本身的位置型和增量型表達式都保持不變。

2、算法實現

  步進式PID的實質是將設定值的突變修改為平緩的變化,這一處理方式在控制中有大量應用。處理設定值變化過程的流程如下所示:

 

  根據這一流程我們可變寫處理函數如下:

 1 /*步進式PID控制設定值步進處理函數*/
 2 float StepInProcessing(CLASSICPID vPID,float sp)
 3 {
 4   float stepIn=(vPID->maximum-vPID->minimum))*0.1;
 5   float kFactor=0.0;
 6  
 7   if(fabs(vPID->setpoint-sp)<=stepIn)
 8   {
 9     vPID->setpoint=sp;
10   }
11   else
12   {
13     if(vPID->setpoint-sp>0)
14     {
15       kFactor=-1.0;
16     }
17     else if(vPID->setpoint-sp<0)
18     {
19       kFactor=1.0;
20     }
21     else
22     {
23       kFactor=0.0;
24     }
25     vPID->setpoint=vPID->setpoint+k*stepIn;
26   }
27  
28   return vPID->setpoint;
29 
30 }

  有了這一處理函數后,在調用PID控制器前,先對設定值進行判斷,然后將該函數的結果作為設定值給PID控制器。至於PID控制器才用前面講述的哪種形式,根據具體應用需求和使用方便去年而定。

3、總結

  所謂步進式實質是對設定值進行平緩變化處理,防止因為設定值的跳變而引起系統的波動。這一辦法雖然能夠減少階躍跳變的干擾,但也會讓系統的響應速度變慢,當然這要根據需要來處理,因為步長的選擇決定了作用大小,補償越小約平緩,相應的響應速度也越慢。

歡迎關注:


免責聲明!

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



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