elseif M==2 kk=1/delta;
for i=1:1:T/ts+1; if s(i)>delta sats(i)=1;
elseif abs(s(i))<=delta sats(i)=kk*s(i); elseif s(i)<-delta sats(i)=-1; end
slaw(i)=-ep*sats(i)-k*s(i);
u(i)=1/b*(c*(dr(i)-x2(i))+ddr(i)-slaw(i)+a*x2(i)); end elseif M==3
for i=1:1:T/ts+1;
ths(i)=s(i)/(abs(s(i))+delta); slaw(i)=-ep*ths(i)-k*s(i);
u(i)=1/b*(c*(dr(i)-x2(i))+ddr(i)-slaw(i)+a*x2(i)); end end
figure(1);
plot(t,r,'r',t,x(:,1),'b');
xlabel('time(s)'); ylabel('r,yout'); figure(2);
plot(t,r-x(:,1),'r');
xlabel('time(s)'); ylabel('error'); figure(3);
plot(r-x(:,1),dr-x(:,2),'r',r-x(:,1),-c*(r-x(:,1)),'b'); %draw line (s=0) xlabel('e'); ylabel('de'); figure(4); plot(t,s,'r');
xlabel('time(s)'); ylabel('s'); figure(5); plot(t,u,'r');
xlabel('time(s)'); ylabel('u'); (2)控制子程序:figure2_8eq.m
function dx=DynamicModel(t,x,flag,para) global a b c A F M ep k delta
a=25;b=133;
A=0.50;F=1.0;
r=A*sin(2*pi*F*t);
dr=A*2*pi*F*cos(2*pi*F*t);
ddr=-A*(2*pi*F)^2*sin(2*pi*F*t);
s=c*(r-x(1))+dr-x(2);
k=30;ep=15;
M=3; if M==1
slaw=-ep*sign(s)-k*s; %Exponential velocity trending law elseif M==2 %Saturated function delta=0.05; kk=1/delta; if s>delta sats=1;
elseif abs(s)<=delta sats=kk*s; elseif s<-delta sats=-1; end
slaw=-ep*sats-k*s; elseif M==3
delta=0.05;
ths=s/(abs(s)+delta); slaw=-ep*ths-k*s; end
u=1/b*(c*(dr-x(2))+ddr-slaw+a*x(2));
% State Equation dx=zeros(2,1); dx(1)=x(2);
dx(2)=-a*x(2)+b*u;