




已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
增量式PID控制算法Matlab仿真程序設(shè)一被控對(duì)象G(s)=50/(0.125s2+7s),用增量式PID控制算法編寫仿真程序(輸入分別為單位階躍、正弦信號(hào),采樣時(shí)間為1ms,控制器輸出限幅:-5,5,仿真曲線包括系統(tǒng)輸出及誤差曲線,并加上注釋、圖例)。程序如下clear all;close all; ts=0.001;sys=tf(50,0.125,7, 0);dsys=c2d(sys,ts,z);num,den=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=0;for k=1:1:1000time(k)=k*ts; S=2;if S=1 kp=10;ki=0.1;kd=15; rin(k)=1; %Step Signalelseif S=2 kp=10;ki=0.1;kd=15; %Sine Signal rin(k)=0.5*sin(2*pi*k*ts); end du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controlleru(k)=u_1+du(k);%Restricting the output of controllerif u(k)=5 u(k)=5;endif u(k)=110 u(k)=110;endif u(k)=10 u(k)=10;endif u(k)=-10 u(k)=-10;endu_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);error_1=error(k);endfigure(1);plot(time,rin,b,time,yout,r);xlabel(time(s);ylabel(rin,yout);figure(2);plot(time,u,r);xlabel(time(s);ylabel(u);figure(3);plot(time,rin-yout,r);xlabel(time(s);ylabel(error);figure(4);bode(Q,r);dcgain(Q);C語(yǔ)言PID演示程序#include #includetypedef struct PID double Command; /輸入指令 double Proportion; /比例系數(shù) double Integral; /積分系數(shù) double Derivative; /微分系數(shù) double preErr; /前一拍誤差 double sumErr; /誤差累積PID;double PIDCale(PID *p,double feedback) double dErr,Err; Err=p-Command-feedback; /當(dāng)前誤差 p-sumErr+=Err; /誤差累加 dErr=Err-p-preErr; /誤差微分 p-preErr=Err; return(p-Proportion*Err /比例項(xiàng) +p-Derivative*dErr /微分項(xiàng) +p-Integral*p-sumErr); /積分項(xiàng)void PIDInit(PID *p) memset(p,0,sizeof(PID); /初始化typedef struct motor double lastY; double preY; double lastU; double preU;motor;void motorInit(motor *m) memset(m,0,sizeof(motor);double motorCal(motor *m,double u) double y=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;void main() FILE *fp=fopen(data.txt,w+); PID sPID; motor m_motor; int k=0; double u; double y=0; PIDInit(&sPID); sPID.Proportion=2; sPID.Derivative=1; sPID.Integral=0.00001; sPID.Command=10; motorInit(&m_motor); while(k=1000) fprintf(fp,%d 設(shè)定值=%f 被控量=%f 偏差=%f 控制量=%fn,k,sPID.Command,y,sPID.Command-y,u); u=PIDCale(&sPID,y); y=motorCal(&m_motor,u); k+; printf(%fn,y); fclose(fp);增量式PID控制C語(yǔ)言代碼增量式PID控制C語(yǔ)言代碼 / 定義PID參數(shù)結(jié)構(gòu)體/typedef struct PID /結(jié)構(gòu)體定義 int SetPoint /設(shè)定值 int Proportion; / Proportion 比例系數(shù) int Integral; / Integral 積分系數(shù) int Derivative; / Derivative 微分系數(shù) int LastError; / Error-1 前一拍誤差 int PreError; / Error-2 前兩拍誤差 PID;main() PID vPID; /定義結(jié)構(gòu)變量名PIDInit ( &vPID ); /Initialize StructurevPID.Proportion = 10; /Set PID Coefficients vPID.Integral = 10; / Set PID Integral vPID.Derivative = 10; / Set PID Derivative vPID. SetPoint = /根據(jù)實(shí)際情況設(shè)定 while(1) Verror=Measure(); /得到AD的輸出值 Error =vPID. SetPoint- Verror; /與設(shè)定值比較,得到誤差值tempi=PIDCal(&vPID, Error; laser.Value+=tempi; / Value與Num2為共同體,共同體名laserLASERH=laser.Num0;LASERL=laser.Num1; /Title:PID參數(shù)初始化/Description: Proportion=0/ Integral=0/ LastError=0/Input: PID的P、I控制常數(shù)和之前的誤差量(PID *pp)/Return: /void PIDInit (PID *pp) /PID參數(shù)初始化,都置0 memset ( pp,0,sizeof(PID);/memset()的函數(shù), 它可以一字節(jié)一字節(jié)地把整個(gè)數(shù)組設(shè)置為一個(gè)指定的值。/ memset()函數(shù)在mem.h頭文件中聲明,它把數(shù)組的起始地址作為其第一個(gè)參數(shù),/第二個(gè)參數(shù)是設(shè)置數(shù)組每個(gè)字節(jié)的值,第三個(gè)參數(shù)是數(shù)組的長(zhǎng)度(字節(jié)數(shù),不是元素個(gè)數(shù))。/其函數(shù)原型為:void *memset(void*,int,unsigned);/頭文件 /Title:增量式PID算法程序/Description:給出一個(gè)誤差增量/Input: PID的P、I控制常數(shù)和之前的誤差量(PID *pp)& 當(dāng)前誤差量(ThisError)/Return: 誤差增量templ/int PIDCal( PID *pp, int ThisError ) /增量式PID算法(需要控制的不是控制量的絕對(duì)值,而是控制量的增量) int pError,dError,iError;long templ; pError = ThisError-pp-LastError; iError = ThisError; dError = ThisError-2*(pp-LastError)+p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腫瘤學(xué)典型病例診療全流程解析
- 住院醫(yī)師規(guī)范化培訓(xùn)病例討論
- 生物線上培訓(xùn)課件
- 育嬰員保健與護(hù)理
- 心肌梗死護(hù)理質(zhì)量改進(jìn)項(xiàng)目
- 培訓(xùn)行業(yè)公司簡(jiǎn)介
- 工廠培訓(xùn)內(nèi)容總結(jié)
- 肝癌患者人文關(guān)懷護(hù)理
- 原輔料檢驗(yàn)培訓(xùn)課件
- 臨床實(shí)踐護(hù)理的倫理道德
- 福建省廈門市第一中學(xué)2025屆七下英語(yǔ)期末質(zhì)量跟蹤監(jiān)視試題含答案
- 2024年吉林省國(guó)資委監(jiān)管企業(yè)招聘真題
- 大學(xué)語(yǔ)文試題及答案 二
- 2025年西藏事業(yè)單位招聘考試職業(yè)能力傾向測(cè)驗(yàn)試卷(民族醫(yī)藥類)
- 結(jié)構(gòu)動(dòng)力學(xué)完整版本
- 2025年八年級(jí)數(shù)學(xué)下學(xué)期期末總復(fù)習(xí)八年級(jí)數(shù)學(xué)下學(xué)期期末測(cè)試卷(2)(學(xué)生版+解析)
- 農(nóng)村供水水質(zhì)管理制度
- T/CIE 149-2022霍爾電推進(jìn)系統(tǒng)點(diǎn)火測(cè)試規(guī)范
- 200句記憶高中英語(yǔ)3500詞(語(yǔ)法填空練習(xí))
- 五年級(jí)(下)語(yǔ)文選擇題專項(xiàng)165道
- 2025年人類學(xué)與社會(huì)學(xué)專業(yè)期末考試試題及答案
評(píng)論
0/150
提交評(píng)論