⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap9_3s.m

📁 刘金琨著 《滑模变结构控制MATLAB仿真》源代码
💻 M
字号:
function [sys,x0,str,ts] = controller(t,x,u,flag)

switch flag,
case 0,
    [sys,x0,str,ts]=mdlInitializeSizes;
case 3,
    sys=mdlOutputs(t,x,u);
case {2,4,9},
    sys=[];
otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 5;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [];

function sys=mdlOutputs(t,x,u)
persistent e0 de0 dde0 ddde0

x1=u(1);
dx1=u(2);
ddx1=u(3);
dddx1=u(4);
ut=u(5);

r=0.5*sin(t);
dr=0.5*cos(t);
ddr=-0.5*sin(t);
dddr=-0.5*cos(t);
ddddr=0.5*sin(t);

if t==0
   e0=x1-r;de0=dx1-dr;dde0=ddx1-ddr;ddde0=dddx1-dddr;
end

	fx=(10+0.01*sin(t))*x1;
	bx=130+0.1*cos(t);

	dfx=0.01*cos(t)*x1+(10+0.01*sin(t))*dx1;
	dbx=-0.1*sin(t);

e=x1-r;
de=dx1-dr;
dde=ddx1-ddr;
ddde=dddx1-dddr;

T=0.8;   %Set terminal time
if t<=T
   P1=10/T^3*e0+6/T^2*de0+1.5/T*dde0;
   P2=15/T^4*e0+8/T^3*de0+1.5/T^2*dde0;
   P3=6/T^5*e0+3/T^4*de0+0.5/T^3*dde0;
   
   Pt=e0+de0*t+1/2*dde0*t^2-P1*t^3+P2*t^4-P3*t^5;
   dPt=de0+dde0*t-P1*3*t^2+P2*4*t^3-P3*5*t^4;
   ddPt=dde0-P1*3*2*t+P2*4*3*t^2-P3*5*4*t^3;
   dddPt=ddde0-P1*3*2+P2*4*3*2*t-P3*5*4*3*t^2;
else
	Pt=0;dPt=0;ddPt=0;dddPt=0;
end
 
nmn=15;
c1=5;
c2=1;
s=c1*(e-Pt)+c2*(de-dPt);
ds=c1*(de-dPt)+c2*(dde-ddPt); 
rou=ds+nmn*s;
 
xite=1.5;
Dmax=4.0;

I1=c2*dbx+(c1+nmn*c2)*bx;
I2=c2*(dfx-dddr-dddPt)+(c1+nmn*c2)*(fx-ddr-ddPt);
I3=nmn*c1*(de-dPt);

dut=-1/bx*(I1*ut+I2+I3+(c1+nmn*c2)*(Dmax+xite)*sign(rou));

sys(1)=r;
sys(2)=dut;

⌨️ 快捷键说明

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