e3_phase.m

来自「永磁无刷电机MATLAB仿真模型」· M 代码 · 共 52 行

M
52
字号
function [sys,x0,str,ts] = e3_phase(t,x,u,flag)
% The following outlines the pwminput S-function.
switch flag,  
    
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes; 
  case 3,
    sys=mdlOutputs(t,x,u);  
  case {1,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     = 6;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
set_param(gcb,'UserData',[-1,-1,0]);
sys = simsizes(sizes);

x0  = [];
str = [];
ts  = [0 0];

function sys=mdlOutputs(t,x,u)     
g=get_param(gcb,'UserData');
m1=g(3);
if u(1)>g(1)
    m1=0;
end
if (u(2)~=g(2))&(abs(u(2))==1)
    m1=m1+1
end
set_param(gcb,'UserData',[u(1),u(2),m1]);
if m1==1 
    sys=[1 ; 0 ; 0 ; 1 ; 0 ; 0 ] ;
elseif m1==2
    sys=[1 ; 0 ; 0 ; 0 ; 0 ; 1] ;
elseif m1==3
    sys=[0 ; 0 ; 1 ; 0 ; 0 ; 1] ;
elseif m1==4
    sys=[0 ; 1 ; 1 ; 0 ; 0 ; 0] ;
elseif m1==5
    sys=[ 0 ; 1 ; 0 ; 0 ; 1 ; 0] ;
else
    sys=[ 0 ; 0 ; 0 ; 1 ; 1 ; 0] ;
end

⌨️ 快捷键说明

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