function[sys,x0,str,ts]=PMSMYC(t,x,u,flag,parameters)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 3
sys=mdlOutputs(t,x,u,parameters);
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 = 54;
sizes.NumInputs = 4;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0=[];
str = [];
t1=0.00001;
ts = [t1 0];
% u=[id iq ud uq 牟]
%parameters=[Ld Vdc R 肉 p]
%parameters[L Vdc R 肉]
%sys(1)=1/parameters(1)*(parameters(8)/3*(1-m2-m3)-parameters(3)*x(1)+x(4)*parameters(4)*sin(x(5)));
%sys(2)=1/parameters(1)*(parameters(8)/3*(-1/2+2*m2-m3)-parameters(3)*x(2)+x(4)*parameters(4)*sin(x(5)-2/3*pi));
%sys(3)=1/parameters(1)*(parameters(8)/3*(-1/2-m2+2*m3)+-parameters(3)*x(3)+x(4)*parameters(4)*sin(x(5)+2/3*pi));
%s=[0 0 0]
function sys=mdlOutputs(t,x,u,parameters)
Vdc=1*parameters(2);
t1=0.00001;
a=1-parameters(3)*t1/parameters(1);
b=t1*parameters(5);
c=parameters(4)*parameters(5)*t1/parameters(1);
d=t1/parameters(1);
%[-1 -1 -1]
ud=0;
uq=0;
sys(1)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(2)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 -1 -1]
ud=1/3*Vdc*cos(-u(4));
uq=1/3*Vdc*sin(-u(4));
sys(3)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(4)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 0 -1]
ud=1/3*Vdc*cos(1/3*pi-u(4));
uq=1/3*Vdc*sin(1/3*pi-u(4));
sys(5)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(6)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 0 -1]
ud=1/3*Vdc*cos(2/3*pi-u(4));
uq=1/3*Vdc*sin(2/3*pi-u(4));
sys(7)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(8)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 0 0]
ud=-1/3*Vdc*cos(-u(4));
uq=-1/3*Vdc*sin(-u(4));
sys(9)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(10)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 -1 0]
ud=-1/3*Vdc*cos(1/3*pi-u(4));
uq=-1/3*Vdc*sin(1/3*pi-u(4));
sys(11)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(12)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 -1 0]
ud=-1/3*Vdc*cos(5/3*pi-u(4));
uq=-1/3*Vdc*sin(5/3*pi-u(4));
sys(13)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(14)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%[0 0 0]
ud=0;
uq=0;
sys(15)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(16)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 0 0]
ud=1/3*Vdc*cos(-u(4));
uq=1/3*Vdc*sin(-u(4));
sys(17)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(18)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 1 0]
ud=1/3*Vdc*cos(1/3*pi-u(4));
uq=1/3*Vdc*sin(1/3*pi-u(4));
sys(19)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(20)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 1 0]
ud=1/3*Vdc*cos(2/3*pi-u(4));
uq=1/3*Vdc*sin(2/3*pi-u(4));
sys(21)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(22)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 1 1]
ud=-1/3*Vdc*cos(-u(4));
uq=-1/3*Vdc*sin(-u(4));
sys(23)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(24)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 0 1]
ud=-1/3*Vdc*cos(1/3*pi-u(4));
uq=-1/3*Vdc*sin(1/3*pi-u(4));
sys(25)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(26)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 0 1]
ud=-1/3*Vdc*cos(5/3*pi-u(4));
uq=-1/3*Vdc*sin(5/3*pi-u(4));
sys(27)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(28)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%[1 1 ]
ud=0;
uq=0;
sys(29)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(30)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%[1 -1 -1]
ud=2/3*Vdc*cos(-u(4));
uq=2/3*Vdc*sin(-u(4));
sys(31)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(32)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 0 -1]
ud=1/sqrt(3)*Vdc*cos(1/6*pi-u(4));
uq=1/sqrt(3)*Vdc*sin(1/6*pi-u(4));
sys(33)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(34)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 1 -1]
ud=2/3*Vdc*cos(1/3*pi-u(4));
uq=2/3*Vdc*sin(1/3*pi-u(4));
sys(35)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(36)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 1 -1]
ud=sqrt(3)/3*Vdc*cos(1/2*pi-u(4));
uq=sqrt(3)/3*Vdc*sin(1/2*pi-u(4));
sys(37)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(38)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 1 -1]
ud=2/3*Vdc*cos(2/3*pi-u(4));
uq=2/3*Vdc*sin(2/3*pi-u(4));
sys(39)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(40)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 1 0]
ud=1/sqrt(3)*Vdc*cos(5/6*pi-u(4));
uq=1/sqrt(3)*Vdc*sin(5/6*pi-u(4));
sys(41)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(42)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 1 1]
ud=-2/3*Vdc*cos(-u(4));
uq=-2/3*Vdc*sin(-u(4));
sys(43)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(44)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%[-1 0 1]
ud=-1/sqrt(3)*Vdc*cos(1/6*pi-u(4));
uq=-1/sqrt(3)*Vdc*sin(1/6*pi-u(4));
sys(45)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(46)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[-1 -1 1]
ud=-2/3*Vdc*cos(1/3*pi-u(4));
uq=-2/3*Vdc*sin(1/3*pi-u(4));
sys(47)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(48)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[0 -1 1]
ud=-sqrt(3)/3*Vdc*cos(1/2*pi-u(4));
uq=-sqrt(3)/3*Vdc*sin(1/2*pi-u(4));
sys(49)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(50)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 -1 1]
ud=2/3*Vdc*cos(5/3*pi-u(4));
uq=2/3*Vdc*sin(5/3*pi-u(4));
sys(51)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(52)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;
%s=[1 -1 0]
ud=1/sqrt(3)*Vdc*cos(11/6*pi-u(4));
uq=1/sqrt(3)*Vdc*sin(11/6*pi-u(4));
sys(53)=a*u(1)+b*u(3)*u(2)+d*ud;
sys(54)=a*u(2)-b*u(3)*u(1)-c*u(3)+d*uq;