% 状态变量导数子程序
function DX=BLDC_5_44_phase_fun(t,X)
global Ud0 TL RR LL S J P0 T10 Em;
SETA=mod(abs(X(6)),2*pi); % 转子位置角
% -----------------------------------------------------------------------------
Ea5=Em*(3.3*sin(SETA)+0.388*sin(3*SETA));
Eb5=Em*(3.3*sin(SETA-2*T10)+0.388*sin(3*(SETA-2*T10)));
Ec5=Em*(3.3*sin(SETA-4*T10)+0.388*sin(3*(SETA-4*T10)));
Ed5=Em*(3.3*sin(SETA-6*T10)+0.388*sin(3*(SETA-6*T10)));
Ee5=Em*(3.3*sin(SETA-8*T10)+0.388*sin(3*(SETA-8*T10)));
% ------------------------------------------------------------------------------
Ea=Ea5*X(7);
Eb=Eb5*X(7);
Ec=Ec5*X(7);
Ed=Ed5*X(7);
Ee=Ee5*X(7);
E=[Ea Eb Ec Ed Ee]'; % 相绕组反电势
% ------------------------------------------------------------------------------
% 导通顺序:
if ((0<=SETA)&(SETA<T10)) % A0,B-,C-,D+,E+
Uag=5/4*Ea;
Ubg=-Ud0/2;
Ucg=-Ud0/2;
Udg=Ud0/2;
Ueg=Ud0/2;
elseif ((T10<=SETA)&(SETA<2*T10)) % A+,B-,C-,D0,E+
Uag=Ud0/2;
Ubg=-Ud0/2;
Ucg=-Ud0/2;
Udg=5/4*Ed;
Ueg=Ud0/2;
elseif ((2*T10<=SETA)&(SETA<3*T10)) % A+,B0,C-,D-,E+
Uag=Ud0/2;
Ubg=5/4*Eb;
Ucg=-Ud0/2;
Udg=-Ud0/2;
Ueg=Ud0/2;
elseif ((3*T10<=SETA)&(SETA<4*T10)) % A+,B+,C-,D-,E0
Uag=Ud0/2;
Ubg=Ud0/2;
Ucg=-Ud0/2;
Udg=-Ud0/2;
Ueg=5/4*Ee;
elseif ((4*T10<=SETA)&(SETA<5*T10)) % A+,B+,C0,D-,E-
Uag=Ud0/2;
Ubg=Ud0/2;
Ucg=5/4*Ec;
Udg=-Ud0/2;
Ueg=-Ud0/2;
elseif ((5*T10<=SETA)&(SETA<6*T10)) % A0,B+,C+,D-,E-
Uag=5/4*Ea;
Ubg=Ud0/2;
Ucg=Ud0/2;
Udg=-Ud0/2;
Ueg=-Ud0/2;
elseif ((6*T10<=SETA)&(SETA<7*T10)) % A-,B+,C+,D0,E-
Uag=-Ud0/2;
Ubg=Ud0/2;
Ucg=Ud0/2;
Udg=5/4*Ed;
Ueg=-Ud0/2;
elseif ((7*T10<=SETA)&(SETA<8*T10)) % A-,B0,C+,D+,E-
Uag=-Ud0/2;
Ubg=5/4*Eb;
Ucg=Ud0/2;
Udg=Ud0/2;
Ueg=-Ud0/2;
elseif ((8*T10<=SETA)&(SETA<9*T10)) % A-,B-,C+,D+,E0
Uag=-Ud0/2;
Ubg=-Ud0/2;
Ucg=Ud0/2;
Udg=Ud0/2;
Ueg=5/4*Ee;
elseif ((9*T10<=SETA)&(SETA<10*T10)) % A-,B-,C0,D+,E+
Uag=-Ud0/2;
Ubg=-Ud0/2;
Ucg=5/4*Ec;
Udg=Ud0/2;
Ueg=Ud0/2;
end
% ------------------------------------------------------------------------------
U=S*[Uag Ubg Ucg Udg Ueg]'; % 电机相电压
I=[X(1) X(2) X(3) X(4) X(5)]'; % 电机相电流
DX=inv(LL)*(U-RR*I-E); % 电机相电流导数
Tem=P0*(Ea5*X(1)+Eb5*X(2)+Ec5*X(3)+Ed5*X(4)+Ee5*X(5)); % 电磁转矩
DX(6)=X(7);
DX(7)=P0*(Tem-TL)/J;
n=60*X(7)/(2*pi*P0); % 电机转速
%fprintf('t=%7.4f',t);
%fprintf(' n=%7.2f\n',n);
% *********************************************************************************