1. 程式人生 > >PID控制器開發筆記之九:基於前饋補償的PID控制器的實現

PID控制器開發筆記之九:基於前饋補償的PID控制器的實現

傳遞 了解 都沒有 控制 結構體 控制器 基本 跟蹤 模型

  對於一般的時滯系統來說,設定值的變動會產生較大的滯後才能反映在被控變量上,從而產生合理的調節。而前饋控制系統是根據擾動或給定值的變化按補償原理來工作的控制系統,其特點是當擾動產生後,被控變量還未變化以前,根據擾動作用的大小進行控制,以補償擾動作用對被控變量的影響。前饋控制系統運用得當,可以使被控變量的擾動消滅在萌芽之中,使被控變量不會因擾動作用或給定值變化而產生偏差,它較之反饋控制能更加及時地進行控制,並且不受系統滯後的影響。

1、前饋控制基本思想

  在高精度伺服控制中,前饋控制可用來提高系統的跟蹤性能。經典控制理論中的前饋控制設計是基於復合控制思想的,當閉環系統為連續系統時,使前饋環節與閉環系統的傳遞函數之積為1,從而實現輸出完全復現輸入。其系統結構圖如下:

技術分享圖片

  從上圖中,我們可以發現前饋環節的傳遞函數是被控對象的倒數。那麽就是在使用前饋控制前我們需要對被控對象的模型有了解,才能有針對性的設計出合適的前饋控制器。也就說,每個系統的前饋控制器都是不一樣的,每個前饋控制器都是專用的。

  要實施前饋控制,首先我們必須得到被控系統的近似模型,這個模型越接近真實的系統,控制的效果就越明顯。在這裏我們假定一個被控對向的模型為:

技術分享圖片

  那麽前饋控制器是被控對象的倒數,於是我們可以推導出前饋控制器的輸入輸出表達式為:

技術分享圖片

  我們將其離散化,就可以得到我們想要實現的前饋控制器的輸出公式。前饋控制器的輸入是設定值,所以表示如下:

技術分享圖片

2、算法實現

  經過上面的分析我們可以實現一個前饋控制器,前饋控制器的輸出與設定值當前值、前一拍的值以及前兩拍的只有關。也就是說如果設定值長時間不變化,該前饋控制器是不起作用的。當然每一個前饋控制器都是不一樣的。

  由於A、B、T均為常數於是我們為了書寫方便,令α=A/(B*T),β=1/(B*T*T)於是我們可以先實現前饋控制器。定義一個前饋控制器的結構體:

 1 /*定義前饋控制器的結構體*/
 2 
 3 typedef struct{
 4 
 5   float rin;
 6 
 7   float lastRin;
 8 
 9   float perrRin;
10 
11 }FFC
12 
13 /*實現前饋控制器*/
14 
15 float FeedforwardController(FFC vFFC)
16 
17 {
18 
19   float result;
20 
21   result=α*(vFFC->rin-vFFC->lastRin)+β*(vFFC->rin-2
*vFFC->lastRin+vFFC->perrRin); 22 23 24 25 vFFC->perrRin= vFFC->lastRin; 26 27 vFFC->lastRin= vFFC->rin; 28 29 return result; 30 31 }

  有了這個前饋控制器,只需要與PID控制器的輸出合並在一起就好了U(k)=Up(k)+Uf(k),而PID控制器采用位置型還是增量型都沒有關系。不過在調用這兩個控制器時需:

vFFC->rin=vPID-> setpoint

3、總結

  前饋控制器是一種補償控制,或者說模型控制,其特點就是必須能得到被控對象的精確模型或者近似模型才能起到較好的控制效果。對於時滯系統的模型控制有很多方法,前饋控制是其中比較簡單和應用較廣的算法。

  系統中存在頻率高、幅度大、可測量而不可控的擾動時,可選用前饋控制。當控制系統控制通道滯後時間長、反饋控制又不能獲得良好效果時,可選用前饋控制。

歡迎關註:

技術分享圖片

PID控制器開發筆記之九:基於前饋補償的PID控制器的實現