运行simulink时报错,以下是FLS代码:
function [sys,x0,str,ts] = FLS(t,x,u,flag)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 1
sys=mdlDerivatives(t,x,u,flag);
case 2
sys=mdlUpdate(t,x,u,flag);
case 3
sys=mdlOutputs(t,x,u,flag);
case 9
sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
end
%**************************************************************************************************
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates =0;
sizes.NumDiscStates =0 ;
sizes.NumOutputs =2;
sizes.NumInputs =12;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0=[];
str = [];
ts = [0 0];
end
function sys=mdlDerivatives(t,x,u,flag)
sys = [];
end
%**************************************************************************************************
function sys=mdlUpdate(t,x,u,flag)
sys = [];
end
%**************************************************************************************************
function sys=mdlOutputs(t,x,u,flag)
% D=100;
% step=1;
% r1=0.6;
% r2=0.108;
% r3=0.5;
tau2=0.001;
tau3=0.001;
yr=u(1);%参考信号
yr_dot=u(2);%参考信号的导数
x1=u(3);
v0=u(4);
kesai0=u(5);
san=u(6);
z2=u(7);
z3=u(8);
Kv=u(9);
ita=u(10);
theta=u(11);
l_hat=u(12);
k=1.5;
l1=40;
l2=5;
l3=3;
% gama_ita=1.2;
% deta_ita=0.0002;
% gama_theta=8;
% deta_theta=0.02;
% gama_K=6;
% deta_K=0.00015;
% gama_l=5;
% deta_l=0.0002;
% step=pa.step;
% D=pa.D;
O=diag(1,k,k^2);
% A0=[-3,1,0;-2,0,1;-1,0,0];
q1=3;
q2=2;
q3=1;
q=[q1;q2;q3];
xx=O*kesai0+O*Kv*v0+O*san*theta;%xhathat
h=7;
d=0.3*[-3,-2,-1,0,1,2,3;
-3,-2,-1,0,1,2,3;
-3,-2,-1,0,1,2,3;];
theta1=[0,0,ones(1,h)]*theta;
for i=1:1:h
miu(i)=exp(-(norm(xx+d(:,i)-2.35))^2/2);%miu_l
end
sum=0;
for i=1:1:h
sum=sum+miu(i);
end
for l=1:1:h
fai_l(l)=miu(l)/sum;
end
fai=[fai_l(1);fai_l(2);fai_l(3);fai_l(4);fai_l(5);fai_l(6);fai_l(7)];
Y=fai'*theta1;
e=x1-yr;
p1=0.3*exp(-6*t)+0.015;%w_;
kap1=(1/p1)*(pi/2)*( 1/(cos( (pi/2)*(e/p1) )^2) );%大x
dp=-1.8*exp(-6*t);% dot w_
S1=tan( (pi/2)*(e/p1) );
v_02=(-l1*S1-kap1*(k*[0,1,0]*kesai0+[0;0;theta1]'*k*san'*[0;1;0]+dp/p1*e-yr_dot)-(k^2+2)*kap1^2*S1/2)/(kap1*k);%v'_0.2
%自适应律 3
% dita=-gama_ita(kap1*k*v_02*S1+deta_ita*ita);
% dtheta=gama_theta*(k*kap1*san'*[0;1;0]*S1-deta_theta*theta);
dz2=(ita*v_02-z2)/tau2;
S2=[0,1,0]*v0-z2;
v_03=(-l2*S2+k*q2*[1,0,0]*v0+dz2-Kv*kap1*k*S1)/k;
%自适应律 2
% dKv=gama_K*(kap1*k*S1*S2-deta_K*Kv);
dz3=(v_03-z3)/tau3;
S3=[0,0,1]*v0-z3;
v_04=l3*S3+S3/2-k*q3*[1,0,0]*v0-dz3;
c=1;
%自适应律 1
% dl_hat=gama_l*(S3*v_04-deta_l*l_hat);
ud=-S3*(l_hat*v_04)^2/(abs(S3*l_hat*v_04)+c);
sys(1)=ud;
sys(2)=Y;
end
%**************************************************************************************************
function sys=mdlTerminate(t,x,u)
sys = [];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/de24c104954143cf8b8885436f6c3be6.png "#left")