PID控制知識


 

學長給的資料,不知是不是轉載,原作者看到后麻煩聯系我改成轉載。

 

首先引用一個例子來說明PID控制中的比例、積分、微分的作用。

1、比例控制:有經驗的操作人員手動控制電加熱爐的爐溫,可以獲得非常好的控制品質,PID控制與人工控制的控制策略有很多相似的地方。

   下面介紹操作人員怎樣用比例控制的思想來手動控制電加熱爐的爐溫。假設用熱電偶檢測爐溫,用數字儀表顯示溫度值。在控制過程中,操作人員用眼睛讀取爐溫,並與爐溫給定值比較,得到溫度的誤差值。然后用手操作電位器,調節加熱的電流,使爐溫保持在給定值附近。操作人員知道爐溫穩定在給定值時電位器的大致位置(我們將它稱為位置L),並根據當時的溫度誤差值調整控制加熱電流的電位器的轉角。爐溫小於給定值時,誤差為正,在位置L的基礎上順時針增大電位器的轉角,以增大加熱的電流。爐溫大於給定值時,誤差為負,在位置L的基礎上反時針減小電位器的轉角,並令轉角與位置L的差值與誤差成正比。上述控制策略就是比例控制,即PID控制器輸出中的比例部分與誤差成正比。閉環中存在着各種各樣的延遲作用。例如調節電位器轉角后,到溫度上升到新的轉角對應的穩態值時有較大的時間延遲。由於延遲因素的存在,調節電位器轉角后不能馬上看到調節的效果,因此閉環控制系統調節困難的主要原因是系統中的延遲作用。比例控制的比例系數如果太小,即調節后的電位器轉角與位置L的差值太小,調節的力度不夠,使系統輸出量變化緩慢,調節所需的總時間過長。比例系數如果過大,即調節后電位器轉角與位置L的差值過大,調節力度太強,將造成調節過頭,甚至使溫度忽高忽低,來回震盪。增大比例系數使系統反應靈敏,調節速度加快,並且可以減小穩態誤差。但是比例系數過大會使超調量增大,振盪次數增加,調節時間加長,動態性能變壞,比例系數太大甚至會使閉環系統不穩定。單純的比例控制很難保證調節得恰到好處,完全消除誤差。

2、積分控制:手動調節溫度時,積分控制相當於根據當時的誤差值,周期性地微調電位器的角度,每次調節的角度增量值與當時的誤差值成正比。溫度低於設定值時誤差為正,積分項增大,使加熱電流逐漸增大,反之積分項減小。因此只要誤差不為零,控制器的輸出就會因為積分作用而不斷變化。積分調節的“大方向”是正確的,積分項有減小誤差的作用。一直要到系統處於穩定狀態,這時誤差恆為零,比例部分和微分部分均為零,積分部分才不再變化,並且剛好等於穩態時需要的控制器的輸出值,對應於上述溫度控制系統中電位器轉角的位置L。因此積分部分的作用是消除穩態誤差,提高控制精度,積分作用一般是必須的。PID控制器輸出中的積分部分與誤差的積分成正比。因為積分時間TI在積分項的分母中,TI越小,積分項變化的速度越快,積分作用越強。

3、微分控制:有經驗的操作人員在溫度上升過快,但是尚未達到設定值時,根據溫度變化的趨勢,預感到溫度將會超過設定值,出現超調。於是調節電位器的轉角,提前減小加熱的電流。這相當於士兵射擊遠方的移動目標時,考慮到子彈運動的時間,需要一定的提前量一樣。閉環控制系統的振盪甚至不穩定的根本原因在於有較大的滯后因素。因為微分項能預測誤差變化的趨勢,這種“超前”的作用可以抵消滯后因素的影響。適當的微分控制作用可以使超調量減小,增加系統的穩定性。對於有較大的滯后特性的被控對象,如果PI控制的效果不理想,可以考慮增加微分控制,以改善系統在調節過程中的動態特性。如果將微分時間設置為0,微分部分將不起作用。微分時間與微分作用的強弱成正比,微分時間越大,微分作用越強。如果微分時間太大,在誤差快速變化時,響應曲線上可能會出現“毛刺”。微分控制的缺點是對干擾噪聲敏感,使系統抑制干擾的能力降低。為此可在微分部分增加慣性濾波環節。

 針對PID,我們首先講解位置式PID,位置式PID公式如下

u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt]

在講解這個公式之前,我們先了解一下閉環系統,從概念上來說,閉環控制系統是由信號正向通路和反饋通路構成閉合回路的自動控制系統,又稱反饋控制系統。在一個閉環系統中,信號流向有正向,也就是從輸入端到輸出端,也有反饋,也就是從輸出端引出回到輸出端,並且與輸入信號做差值(負反饋)或做和(正反饋)。根據信號的流向,大家可以對比如下的系統方框圖(信控自動化專業的同學會在自動控制原理這門課學到)

 

大家可以看到,上面的大方框對應的是正向通路,下面的方框對應的是反饋回路。

下面說到PID公式中一個很重要的量e(t),也就是上圖比較器那里的輸入量與反饋回路做的差值。輸入量也就是我們期望系統達到的一個目標值,反饋回路得到的是我們系統目前的實際值,通過比較器做一個差值,這個差值也就代表着系統距離我們的目標值還有多遠。根據這個差值的多少,我們的PID控制算法開始起作用,要讓系統實際值接近我們的目標值。具體起的作用請參照前文的例子。然后根據一個程序,大家去理解一下如何用c語言去實現PID控制中的pi控制算法。

  float target; //目標量

  float feedback; //反饋量

  float Kp;//比例系數

  float Ki;//積分系數

  float Kd;//微分系數

float eSum;//積分處會用到,思考為什么這樣做

float e0;//差值

float e_kp;//比例部分控制量

float e_ki;//積分部分控制量

float e_kd;//微分部分控制量

float out;//最后輸出值

void pid_control()

  {

  //計算當前誤差

e0 = target -feedback;

//誤差比例控制

e_kp=e0*Kp;

  //誤差積分

  eSum +=e0*Ki;

  e_ki= eSum;

  out =e_kp+e_ki;

  }

 


免責聲明!

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



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