91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 15KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-09
  • 語言: Matlab
  • 標簽: Matlab??增量式PID??

資源簡介

Matlab增量式PID算法仿真 ,包含m文件和simulink仿真文件,希望對大家有幫助

資源截圖

代碼片段和文件信息

????%設一被控對象G(s)=50/(0.125s^2+7s)??
????%用增量式PID控制算法編寫仿真程序??
????%(輸入分別為單位階躍、正弦信號,采樣時間為1ms,控制器輸出限幅:[-33]??
????%??仿真曲線包括系統輸出及誤差曲線)。??
?????
????ts=0.001;?????????????????%采樣時間??
????sys=tf(50[0.1257?0]);?%tf是傳遞函數??即被控對象函數G();??
????dsys=c2d(systs‘z‘);????%把控制函數離散化取Z變換n階定常離散系統差分方程
????????????????????????????????%在零初始條件下取Z變換:
????????????????????????????????%dsys即Y(z)/U(z)
????[numden]=tfdata(dsys‘v‘);%?離散化后提取分子、分母????
????u_1=0.0;??
????u_2=0.0;??
????y_1=0.0;??
????y_2=0.0;??
????x=[000]‘;??
????error_1=0;??
????error_2=0;??
????%核心代碼
????
????for?k=1:1:1000??
????time(k)=k*ts;????????????????????????%采樣次數??
????S=1;??
????if?S==1?????????????????????????%階躍輸入
????????kp=6.5;ki=0.1;kd=1;?????????????%初始化PID????
????????rin(k)=1;????????????????????%Step?Signal???
????elseif?S==2?????????????????????%正弦輸入
????????kp=10;ki=0.1;kd=15;?????????????
????????rin(k)=0.5*sin(2*pi*k*ts);????%Sine?Signal?????即實際輸入??????
????end?
????
????du(k)=kp*x(1)+kd*x(2)+ki*x(3);??????%PID?Controller???控制系數????
????u(k)=u_1+du(k);?????????????????????%真正的PID輸出應該為du+前一時刻的輸出
????if?u(k)>=3?????????
???????u(k)=3;??
????end??
????if?u(k)<=-3??
???????u(k)=-3;??
????end??
?????
????%Linear?model?難點就是把傳遞函數轉化為差分方程,以實現PID控制。?
????yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;??????????%實際輸出?num為dsys分子多項式系數,den為dsys分母多項式系數,從n階定常離散系統差分方程變化來的。
????error(k)=rin(k)-yout(k);???????????????????????????????????????%?誤差?輸入-輸出?
????u_2=u_1;???????????????????????????????????????????????????????%保存上上次輸入???為下次計算??
????u_1=u(k);??????????????????????????????????????????????????????%保存上一次控制系數???為下次計算??
????y_2=y_1;???????????????????????????????????????????????????????%保存上上次次輸出???為下次計算??
????y_1=yout(k);???????????????????????????????????????????????????%保存上一次輸出???為下次計算??
????
????x(1)=error(k)-error_1;?????????????????????????????????????????%KP的系數??
????x(2)=error(k)-2*error_1+error_2;???????????????????????????????%KD的系數??
????x(3)=error(k);?????????????????????????????????????????????????%KI的系數
????error_2=error_1;????????????????????????????????????????????????%上次的變上上次誤差
????error_1=error(k);???????????????????????????????????????????????%這次的變上次的誤差
????end?
????
???????????
????figure(1);??
????plot(timerin‘b‘timeyout‘r‘);????????????????????????%輸入?和實際控制輸出??
????xlabel(‘time(s)‘)ylabel(‘rinyout‘);???
???figure(2);??
????plot(timeerror‘r‘)?????????????????????????????????????%時間誤差輸出曲線??
????xlabel(‘time(s)‘);ylabel(‘error‘);??

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????15284??2018-04-06?10:53??PIDsimulikn.slx
?????文件????????2859??2018-04-05?21:29??Incremental?PID.m

評論

共有 條評論