PID控制原理和算法


    閉環控制是根據控制對象輸出反饋來進行校正的控制方式,它是在測量出實際與計划發生偏差時,按定額或標准來進行糾正的。比如控制一個電機的轉速,就得有一個測量轉速的傳感器,並將結果反饋到控制路線上。提到閉環控制算法,不得不提PID,它是閉環控制算法中最簡單的一種。PID是比例 (Proportion) 積分 ,(Integral) 微分 ,(Differential coefficient) 的縮寫,分別代表了三種控制算法。通過這三個算法的組合可有效地糾正被控制對象的偏差,從而使其達到一個穩定的狀態。如下圖所示為PID的流程。

                                                          

 其中r(t)表示給定輸入值,c(t)表示實際輸出值,e(t)表示信號偏差量,u(t)表示修正量。

 

1、比例(P)、積分(I)、微分(D)控制算法各有作用

    1)、比例,反應系統的基本(當前)偏差e(t),系數大,可以加快調節,減小誤差,但過大的比例使系統穩定性下降,甚至造成系統不穩定;比例控制的比例系數如果太小,即調節后的電位器轉角與位置L的差值太小,調節的力度不夠,使系統輸出量變化緩慢,調節所需的總時間過長。比例系數如果過大,即調節后電位器轉角與位置L的差值過大,調節力度太強,將造成調節過頭,甚至使溫度忽高忽低,來回震盪。增大比例系數使系統反應靈敏,調節速度加快,並且可以減小穩態誤差。但是比例系數過大會使超調量增大,振盪次數增加,調節時間加長,動態性能變壞,比例系數太大甚至會使閉環系統不穩定。 單純的比例控制很難保證調節得恰到好處,完全消除誤差。如下圖所示:

          

    2)、積分,反應系統的累計偏差,使系統消除穩態誤差,提高無差度,因為有誤差,積分調節就進行,直至無誤差;積分調節的“大方向”是正確的,積分項有減小誤差的作用。一直要到系統處於穩定狀態,這時誤差恆為零,比例部分和微分部分均為零,積分部分才不再變化,並且剛好等於穩態時需要的控制器的輸出值,對應於上述溫度控制系統中電位器轉角的位置L。因此積分部分的作用是消除穩態誤差,提高控制精度,積分作用一般是必須的。 如下圖所示:

    3)、微分,反映系統偏差信號的變化率e(t)-e(t-1),具有預見性,能預見偏差變化的趨勢,產生超前的控制作用,在偏差還沒有形成之前,已被微分調節作用消除,因此可以改善系統的動態性能。但是分對噪聲干擾有放大作用,加強微分對系統抗干擾不利。誤差的微分就是誤差的變化速率,誤差變化越快,其微分絕對值越大。誤差增大時,其微分為正;誤差減小時,其微分為負。控制器輸出量的微分部分與誤差的微分成正比,反映了被控量變化的趨勢。如下圖所示:

  閉環控制系統的振盪甚至不穩定的根本原因在於有較大的滯后因素。因為微分項能預測誤差變化的趨勢,這種“超前”的作用可以抵消滯后因素的影響。適當的微分控制作用可以使超調量減小,增加系統的穩定性。 

  對於有較大的滯后特性的被控對象,如果PI控制的效果不理想,可以考慮增加微分控制,以改善系統在調節過程中的動態特性。如果將微分時間設置為0,微分部分將不起作用。

  微分時間與微分作用的強弱成正比,微分時間越大,微分作用越強。如果微分時間太大,在誤差快速變化時,響應曲線上可能會出現“毛刺”。

  微分控制的缺點是對干擾噪聲敏感,使系統抑制干擾的能力降低。為此可在微分部分增加慣性濾波環節。

  一種PID控制算法的流程圖,如下所示:

       

 

2、PID參數調節

  在整定PID控制器參數時,可以根據控制器的參數與系統動態性能和穩態性能之間的定性關系,用實驗的方法來調節控制器的參數。有經驗的調試人員一般可以較快地得到較為滿意的調試結果。在調試中最重要的問題是在系統性能不能令人滿意時,知道應該調節哪一個參數,該參數應該增大還是減小。 

  為了減少需要整定的參數,首先可以采用PI控制器。為了保證系統的安全,在調試開始時應設置比較保守的參數,例如比例系數不要太大,積分時間不要太小,以避免出現系統不穩定或超調量過大的異常情況。給出一個階躍給定信號,根據被控量的輸出波形可以獲得系統性能的信息,例如超調量和調節時間。應根據PID參數與系統性能的關系,反復調節PID的參數。 

  如果階躍響應的超調量太大,經過多次振盪才能穩定或者根本不穩定,應減小比例系數、增大積分時間。如果階躍響應沒有超調量,但是被控量上升過於緩慢,過渡過程時間太長,應按相反的方向調整參數。 

  如果消除誤差的速度較慢,可以適當減小積分時間,增強積分作用。 

  反復調節比例系數和積分時間,如果超調量仍然較大,可以加入微分控制,微分時間從0逐漸增大,反復調節控制器的比例、積分和微分部分的參數。 

  總之,PID參數的調試是一個綜合的、各參數互相影響的過程,實際調試過程中的多次嘗試是非常重要的,也是必須的。  

      常用的控制方式:P,PI,PD,PID控制算法

注:以上原理部分內容參考自以下資料:

[1]. PID控制最通俗的解釋與PID參數的整定方法

[2]. PID控制算法

 

3、代碼實現

  以對常數和函數控制為例,Maltab實現演示,代碼如下:

 1 clear all;
 2 close all;
 3 ts=0.001;
 4 sys=tf(50,[0.125,7, 0]);
 5 dsys=c2d(sys,ts,'z');
 6 [num,den]=tfdata(dsys,'v');
 7 u_1=0.0;u_2=0.0;
 8 y_1=0.0;y_2=0.0;
 9 x=[0,0,0]';
10 error_1=0;
11 error_2=0;
12 for k=1:1:2000
13     time(k)=k*ts;
14     S=2;
15     if S==1
16         kp=10;ki=0.1;kd=15;
17         rin(k)=5;                       %Step Signal
18     elseif S==2
19         %kp=20;ki=0.0;kd=0;          %Sine Signal
20          kp=10;ki=0.1;kd=15;          %Sine Signal
21         rin(k)=0.5*cos(2*pi*k*ts);
22     end
23     du(k)=kp*x(1)+kd*x(2)+ki*x(3);    %PID Controller
24     u(k)=u_1+du(k);
25     %Restricting the output of controller
26     if u(k)>=5
27         u(k)=5;
28     end
29     if u(k)<=-5
30         u(k)=-5;
31     end
32     %Linear model
33     yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
34     error(k)=rin(k)-yout(k);
35     %Return of parameters
36     u_2=u_1;u_1=u(k);
37     y_2=y_1;y_1=yout(k);
38     x(1)=error(k)-error_1;          %Calculating P
39     x(2)=error(k)-2*error_1+error_2;   %Calculating D
40     x(3)=error(k);      %Calculating I
41     error_2=error_1;
42     error_1=error(k);
43 end
44 figure(1);
45 plot(time,rin,'b',time,yout,'r');
46 xlabel('time(s)'),ylabel('rin,yout');
47 title(['kp=10,ki=0.1,kd=15'],'FontSize',14,'Color','k');
48 saveas(1,'pid','png');
49 figure(2);
50 plot(time,error,'r')
51 title(['誤差變化'],'FontSize',14,'Color','k');
52 xlabel('time(s)');ylabel('error');
53 saveas(2,'pid_err','png');

 效果圖

  1)、常數y = 5糾正:

  2)、曲線y = 0.5*cos(t)糾正:

 

代碼工程下載:PID算法實現

 


免責聲明!

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



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