回 帖 发 新 帖 刷新版面

主题:求助s函数问题!

如题,在进行simulink/s函数仿真时候,出现Unhandled flag = 2错,请教哪方面出现问题~!
附源文件:
function [sys,x0,str,ts]=acmotor_sfun(t,x,u,flag,Rs,Rr,Ls,Lr,Lm,k)
switch flag 
    case 0  %Initialization%
        [sys,x0,str,ts]=mdlInitializeSizes;
    case 1  %Derivatives
        sys=mdlDerivatives(t,x,u,Rs,Rr,Ls,Lr,Lm,k);
    case 3  %Outputs%
        sys=mdlOutputs(t,x,u);
    case 9   %Terminate%
        sys=mdlTerminate(t,x,u);
    otherwise  %Unexpected flags%
        error(['Unhandled flag = ',num2str(flag)]);
    end          %end acmotor_sfun%
function [sys,x0,str,ts]=mdlInitializeSizes;
    sizes=simsizes;
    sizes.NumContStates=4;
    sizes.NumDiscStates=0;
    sizes.NumOutputs=4;
    sizes.NumInputs=3;
    sizes.DirFeedthrough=1;
    sizes.NumSampleTimes=1;
    sys = simsizes(sizes);
    x0=[0;0;0;0];%No continuous states
    str=[];      % No state ordering
    ts=[0 0]     % Inherited sample time
    
function sys=mdlDerivatives(t,x,u,Rs,Rr,Ls,Lr,Lm,k);
    dx(1)=k*[-Rs*Lr,Lm*Lm*u(3),Lm*Rr,u(3)*Lm*Lr]*[x(1);x(2);x(3);x(4)]-k*Lm*u(2);
    dx(2)=[-k1*u(3)*Lm*Lm/Lr,-k1*Rs,-k1*Msr*u(3),k1*Lm*Rr/Lr]*[x(1);x(2);x(3);x(4)]+k1*u(2);
    dx(3)=[-k2*Rs,k2*Ls*u(3),k2*Ls*Rr/Lm,k2*Ls*Lr*u(3)/Lm]*[x(1);x(2);x(3);x(4)]+k2*u(1);
    dx(4)=[-k2*Ls*u(3),-k2*Rs,-k2*Ls*Lr*u(3)/Lm,k2*Ls*Rr/Lm]*[x(1);x(2);x(3);x(4)]+k2*u(2);
    sys=dx;
function sys=mdlOutputs(t,x,u);
sys=[x(1);x(2);x(3);x(4)];
function sys=mdlTerminate(t,x,u);
sys=[];
仿真后出现:
Error in block 'acmotor_sim/Subsystem/S-Function' while executing M-File S-function block 'acmotor_sfun', flag = 2 (update), at time 0. MATLAB error message:
Error using ==> acmotor_sfun
Unhandled flag = 2

回复列表 (共1个回复)

沙发

大多人来了只是围观,还是靠自己去解决吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册