gaijin.m

来自「基于matlab的PID控制系统仿真」· M 代码 · 共 67 行

M
67
字号
clear all;close all;%Delay plantkp1=20;%假设系统参数Tp=500;tol=2; Ts=tol/4;ts=tol/4;sys=tf([kp1],[Tp,1],'inputdelay',tol);dsys=c2d(sys,Ts,'zoh');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;xm_1=0.0;ym_1=0.0;y_1=0.0;error_1=0;ei=0;                        %定义初始值for k=1:1:1000  time(k)=k*ts;  if k<500  rin(k)=80;else rin(k)=80;  end                        %假设的两个阶越输入 %Prediction model xm(k)=-den(2)*xm_1+num(2)*u_1; ym(k)=-den(2)*ym_1+num(2)*u_5;  %With Delay 运用SMITH模型yout(k)=-den(2)*y_1+num(2)*u_5;error(k)=rin(k)-xm(k);  derror(k)=(error(k)-error_1)/ts; ap=0.13*(80/tol)^1.2/(Tp/1000)^1.3*100/kp1;bp=0.07*(80/tol)^1.2/(Tp/1000)^1.3*100/kp1;cp=0.8;kp(k)=ap+bp*(1-sech(cp*error(k)));ad=0.5*(tol/80)^2;bd=2.35*(tol/80)^2;cd=1.2;dd=2.0;kd(k)=ad+bd/(1+cd*exp(dd*error(k)));ai=0.005*(80/tol)^0.624/(Tp/1000)^3;ci=0.04*(80/tol)^0.624;ki(k)=ai*sech(ci*error(k));              %参数变化规率及初始植ei=ei+error(k)*ts;u(k)=kp(k)*error(k)+kd(k)*derror(k)+ki(k)*ei;xm_1=xm(k);ym_1=ym(k);u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_1=yout(k);error_1=error(k);endfigure(1);plot(time,rin,'k',time,yout,'k');xlabel('time(s)');ylabel('rin,yout');figure(2);plot(time,error,'k');xlabel('time(s)');ylabel('error');  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?