完整word版PID算法Matlab仿真程序和C程序_第1頁
完整word版PID算法Matlab仿真程序和C程序_第2頁
完整word版PID算法Matlab仿真程序和C程序_第3頁
完整word版PID算法Matlab仿真程序和C程序_第4頁
完整word版PID算法Matlab仿真程序和C程序_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、%Cal增量式PID控制算法Matlab仿真程序設(shè)一被控對象 G( s)=50/(0.125sA2+7s), 用增量式PID控制算法編寫仿真程序(輸入分別為單位階躍、正弦信號, 采樣時間為1ms,控制器輸出限幅: -5,5,仿真曲線包括系統(tǒng)輸出及誤差 曲線,并加上注釋、圖例)。程序如下 clear all;close all;ts=0.001;sys=tf(50,0.125,7, 0); dsys=c2d(sys,ts,z);nu m,de n=tfdata(dsys,v); u_1=0.0;u_2=0.0;y_1=0.0;y_2=0.0; x=0,0,0;error_1=0;error_2=

2、0;for k=1:1:1000time(k)=k*ts;S=2;if S=1kp=10;ki=0.1;kd=15;rin (k)=1;Ste p Sig nal elseif S=2end%Lin ear model yout(k)=-de n(2)*y_1-de n( 3)*y_2+num( 2)*u_1+ num(3) *u_2;error(k)=ri n(k)-yout(k);%Retur n of p arameters u_2=u_1;u_1=u(k); y_2=y_1;y_1=yout(k); x(1)=error(k)-error_1; culati ng P x(2)=err

3、or(k)-2*error_1+error_2; %C alculati ng Dx(3)=error(k);%Calculati ng Ierror_2=error_1;error_1=error(k);endfigure(1); plot(time,ri n, b,time,yout,r); xlabel(time(s),ylabel(ri n,yout);figure(2); plot(time,error,r) xlabel(time(s);ylabel(error);微分先行PID算法Matlab仿真程序%PID Controler with differential in adva

4、neeclear all;close all;5%Si nekp=10;ki=0.1;kd=15;Sig nalrin (k)=0.5*s in(2*pi *k*ts);enddu(k)=k p*x(1)+kd*x (2)+ki*x(3);PID Con trolleru(k)=u_1+du(k);%Restricti ng the out put of con troller if u(k)=5 u(k)=5;endif u(k)=110 u(k)=110;endif u(k)=10u(k)=10;endif u(k)=-10u(k)=-10;endfigure(2); plot(time,

5、u,r); xlabel(time(s);ylabel(u);figure (3);plot(time,ri n-yout,r); xlabel(time(s);ylabel(error); figure(4);bode(Q,r);dcga in( Q);C語言PID演示程序#in clude #in clude typ edef struct P IDdouble Comma nd; /輸入指令double Proportion; /比例系數(shù) double In tegral;/ 積分系數(shù)double Derivative; / 微分系數(shù) double p reErr;/ 前一拍誤差doub

6、le sumErr;/ 誤差累積P ID;doubleP IDCale( PID*p ,doublefeedback)double dErr,Err;Err=p-Comma nd-feedback; / 當(dāng)前 誤差p-sumErr+=Err;/ 誤差累加dErr=Err- p-p reErr; / 誤差微分 p-p reErr=Err;return( p-Prop ortio n*Err / 比例項+p-Derivative*dErr微分項+p-ln tegral* p-sumErr);/ 積分項u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u1=u(k);y_3=y_2;y

7、_2=y_1;y_1=yout(k); error_1=error(k);endfigure(1);plot(time,ri n,b,time,yout,r); xlabel(time(s);ylabel(ri n, yout);void PIDI nit (P ID *p)memset(p,0,sizeof(PID); /初始化typ edef struct motor double lastY;double p reY; double lastU; double p reU;motor;void motorI nit(motor *m)memset(m,O,sizeof(motor); d

8、ouble motorCal(motor *m,double u)doubley=1.9753*m-lastY-0.9753*m- preY+0 .00003284*u+0.00006568*m-lastU+0. 00003284*m- preU;/ 二階系統(tǒng)m-preY=m-lastY;m-lastY=y;m- preU=m-lastU;m-lastU=u;return y;=%fn,k,s PID.Comma nd,y,s PID .Comma nd-y,u);u=P IDCale(&sP ID,y); y=motorCal(&m_motor,u); k+;prin tf(%fn,y);f

9、close(fp);增量式PID控制C語言代碼增量式PID控制C語言代碼/ /定義PID參數(shù)結(jié)構(gòu)體/typedef struct PID void mai n()FILE *fp=fo pen( data.txt,w+); PID sP ID;motor m_motor;int k=0;double u;double y=0;PIDI nit(&sP ID);sP ID. Prop ortio n=2;sP ID.Derivative=1;sP ID.I ntegral=0.00001;sP ID.Comma nd=10;/結(jié)構(gòu)體定義intSet Poi nt/設(shè)定值intProp orti

10、on;/Prop orti on比例系數(shù)intIn tegral;/In tegral積分系數(shù)intDerivative;/Derivative微分系數(shù)intLastError;/Error-1前一拍誤差intP reError;/Error-2前兩拍誤差 PID;motorl nit(&m _motor);while(k=1000)=%f控量fprin tf(fp,%d設(shè)定值被控量=%f 偏差=%f 制mai n()PID vPID;/定義結(jié)構(gòu)變量名PIDInit ( &VPID );/Initialize Structureor;/體名VerrvP ID. Prop ortio n = 1

11、0;/Set PID Coefficients vP ID.I ntegral = 10; / Set PID Integral vP ID.Derivative = 10; / Set PID Derivative vPID. Set Poi nt = 根據(jù)實際情況設(shè)定while(1) Verror=Measure();得到AD的輸出值Error =vPID. SetPoint-/與設(shè)定值比較,得到誤差值 tempi=P IDCal(&vP ID, Error;laser.Value+=te mpi;Value與Num2為共同體,共同 laserLASERH=laser.Num0;LASER

12、L=laser.Num1;/Title:PID參數(shù)初始化/Descri pti on: Prop orti on=0/In tegral=0/LastError=0/Input: PID的P、I控制常數(shù)和之前的誤差量(PID *pp)/Return:/ /void PIDInit (PID *pp)/PID參數(shù)初始化,都置0/ memset()函數(shù)在 mem.h頭文件中 聲明,它把數(shù)組的起始地址作為其第 一個參數(shù),/第二個參數(shù)是設(shè)置數(shù)組每個字節(jié)的 值,第三個參數(shù)是數(shù)組的長度(字節(jié)數(shù), 不是元素個數(shù))。/其函數(shù)原型為:void *memset(void*, int,unsigned);/ 頭文件

13、 /Title:增量式PID算法程序/Description:給出一個誤差增量/Input: PID的P、I控制常數(shù)和之前 的誤差量(PID *pp) &當(dāng)前誤差量(T hisError)/Return:誤差增量 tempi/ /int PIDCal( PID *pp, int ThisError ) /增量式PID算法(需要控制的不是 控制量的絕對值,而是控制量的增量)int PError,dError,iError;long tempi;p Error = ThisError- pp-LastError;iError = ThisError;dError = ThisError-2* (pp-LastError)+pp-P reError;增量計算temp 1=pp-Prop orti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論