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

📄 chap9_2s.m

📁 滑模变结构配套例程(刘金昆)清华大学出版社无商业用途
💻 M
字号:
function [sys,x0,str,ts] = spacemodel(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     = 3;
sizes.NumInputs      = 21;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [0 0];

function sys=mdlOutputs(t,x,u)
persistent e10 de10 dde10 ddde10 e20 de20 dde20 ddde20 e30 de30 dde30 ddde30
T=0.5;

x11d=u(1);
dx11d=pi/2*cos(pi*t/2);
ddx11d=-(pi/2)^2*sin(pi*t/2);
dddx11d=-(pi/2)^3*cos(pi*t/2);

x21d=u(2);
dx21d=-pi*sin(pi*t);
ddx21d=-pi^2*cos(pi*t);
dddx21d=pi^3*sin(pi*t);

x31d=u(3);
dx31d=0;
ddx31d=0;
dddx31d=0;

x=u(4:1:12);
dx=u(13:1:21);
if t==0
   e10=x(1);
   de10=x(2)-pi/2;
   dde10=x(3);
   ddde10=dx(3)+(pi/2)^3;   
   
	e20=x(4)-1;
	de20=x(5);
	dde20=x(6)+pi^2;
	ddde20=dx(6);
   
	e30=x(7)-1;
	de30=x(8);
	dde30=x(9);
	ddde30=dx(9);
end

C=[4 0 0 4 0 0 1 0 0;
   0 4 0 0 4 0 0 1 0;
   0 0 4 0 0 4 0 0 1];

e1=x(1)-x11d;
de1=x(2)-dx11d;
dde1=x(3)-ddx11d;
ddde1=dx(3)-dddx11d;

e2=x(4)-x21d;
de2=x(5)-dx21d;
dde2=x(6)-ddx21d;
ddde2=dx(6)-dddx21d;

e3=x(7)-x31d;
de3=x(8)-dx31d;
dde3=x(9)-ddx31d;
ddde3=dx(9)-dddx31d;

e=[e1;e2;e3];
if t<=T
   A10=35/T^4*e10+20/T^3*de10+5/T^2*dde10+2/3*1/T*ddde10;
   A11=84/T^5*e10+45/T^4*de10+10/T^3*dde10+1/T^2*ddde10;
   A12=70/T^6*e10+36/T^5*de10+15/(2*T^4)*dde10+2/(3*T^3)*ddde10;
   A13=20/T^7*e10+10/T^6*de10+2/(T^5)*dde10+1/(6*T^4)*ddde10;
   p1=e10+de10*t+1/2*dde10*t^2+1/6*ddde10*t^3-A10*t^4+A11*t^5-A12*t^6+A13*t^7;
   dp1=de10+dde10*t+1/2*ddde10*t^2-A10*4*t^3+A11*5*t^4-A12*6*t^5+A13*7*t^6;
   ddp1=dde10+ddde10*t-A10*4*3*t^2+A11*5*4*t^3-A12*6*5*t^4+A13*7*6*t^5;
   dddp1=ddde10-A10*4*3*2*t+A11*5*4*3*t^2-A12*6*5*4*t^3+A13*7*6*5*t^4;
   
   A20=35/T^4*e20+20/T^3*de20+5/T^2*dde20+2/3*1/T*ddde20;
   A21=84/T^5*e20+45/T^4*de20+10/T^3*dde20+1/T^2*ddde20;
   A22=70/T^6*e20+36/T^5*de20+15/(2*T^4)*dde20+2/(3*T^3)*ddde20;
   A23=20/T^7*e20+10/T^6*de20+2/(T^5)*dde20+1/(6*T^4)*ddde20;   
   p2=e20+de20*t+1/2*dde20*t^2+1/6*ddde20*t^3-A20*t^4+A21*t^5-A22*t^6+A23*t^7;
   dp2=de20+dde20*t+1/2*ddde20*t^2-A20*4*t^3+A21*5*t^4-A22*6*t^5+A23*7*t^6;
   ddp2=dde20+ddde20*t-A20*4*3*t^2+A21*5*4*t^3-A22*6*5*t^4+A23*7*6*t^5;
   dddp2=ddde20-A20*4*3*2*t+A21*5*4*3*t^2-A22*6*5*4*t^3+A23*7*6*5*t^4;
   
   A30=35/T^4*e30+20/T^3*de30+5/T^2*dde30+2/3*1/T*ddde30;
   A31=84/T^5*e30+45/T^4*de30+10/T^3*dde30+1/T^2*ddde30;
   A32=70/T^6*e30+36/T^5*de30+15/(2*T^4)*dde30+2/(3*T^3)*ddde30;
   A33=(20/T^7*e30+10/T^6*de30+2/(T^5)*dde30+1/(6*T^4)*ddde30);
   p3=e30+de30*t+1/2*dde30*t^2+1/6*ddde30*t^3-A30*t^4+A31*t^5-A32*t^6+A33*t^7;
   dp3=de30+dde30*t+1/2*ddde30*t^2-A30*4*t^3+A31*5*t^4-A32*6*t^5+A33*7*t^6;
   ddp3=dde30+ddde30*t-A30*4*3*t^2+A31*5*4*t^3-A32*6*5*t^4+A33*7*6*t^5;
   dddp3=ddde30-A30*4*3*2*t+A31*5*4*3*t^2-A32*6*5*4*t^3+A33*7*6*5*t^4;
else
   p1=0;p2=0;p3=0;
   dp1=0;dp2=0;dp3=0;
   ddp1=0;ddp2=0;ddp3=0;
   dddp1=0;dddp2=0;dddp3=0;
end

f=[-1.5*x(3)^2*cos(3*x(4)),3*x(5)*sin(x(7)),x(9)*cos(x(1))*sin(x(4))];
u1=f(1)-dddx11d-dddp1+4*(x(2)-dx11d-dp1)+4*(x(3)-ddx11d-ddp1);
u2=f(2)-dddx21d-dddp2+4*(x(5)-dx21d-dp2)+4*(x(6)-ddx21d-ddp2);
u3=f(3)-dddx31d-dddp3+4*(x(8)-dx31d-dp3)+4*(x(9)-ddx31d-ddp3);

rou1=dde1+4*de1+4*e1-ddp1-4*dp1-4*p1;
rou2=dde2+4*de2+4*e2-ddp2-4*dp2-4*p2;
rou3=dde3+4*de3+4*e3-ddp3-4*dp3-4*p3;
rou=[rou1;rou2;rou3];

delta0=0.03;
delta1=5;
delta=delta0+delta1*norm(e);
mrou=norm(rou)+delta;

K=10;
F=2+exp(-t);
ut=-[u1;u2;u3]-rou/mrou*(F+K);

sys(1)=ut(1);
sys(2)=ut(2);
sys(3)=ut(3);

⌨️ 快捷键说明

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