S函数中总是出现错误,不知道怎么改,希望大神能帮帮忙!
function[sys,x0,str,ts]=emf(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case 2,
sys=[];
case 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=2;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=[];
str=[];
ts=[-1 0];
function sys=mdlOutputs(~,~,u)
global k;
global Pos;
global w;
k=0.060; %V/(r/min)反电动势系数
w=u(1); %转速(rad/s)
Pos=u(2); %角度(rad)
if Pos>=0&& Pos<=pi/3
sys=[k*w -k*w k*w*((-Pos)/(pi/6)+1)];
elseif Pos>=pi/3&& Pos<=2*pi/3
sys=[k*w k*w*((Pos-pi/3)/(pi/6)-1) -k*w];
elseif Pos>=2*pi/3&& Pos<=pi
sys=[k*w*((2*pi/3-Pos)/(pi/6)+1) k*w -k*w];
elseif Pos>=pi&& Pos<=4*pi/3
sys=[-k*w k*w k*w*((Pos-pi)/(pi/6)-1)];
elseif Pos>=4*pi/3&& Pos<=5*pi/3
sys=[-k*w k*w*((4*pi/3-Pos)/(pi/6)+l) k*w];
else Pos>=5*pi/3&& Pos<=2*pi;
sys=[k*w*((Pos-5*pi/3)/(pi/6)-1) -k*w k*w];
end
无标题2.png
(66.85 KB, 下载次数: 0)
2016-10-18 15:47 上传