⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mybldc2.m

📁 一个无刷电机仿真的模型
💻 M
📖 第 1 页 / 共 2 页
字号:
    
   sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=5*pi/3 & theta<11*pi/6)
     LA= -1;
    LB=((5*pi/3)-theta)*6/pi;
    LC=1;    
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=11*pi/6 & theta<2*pi)
    LA= 6*(theta-2*pi)/pi;
    LB=-1;
    LC=1;
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
end;
%%%-------------CALCULATION FOR SYS(4)<0---------------------------------------------------
if  (theta>=-2*pi  & theta<-11*pi/6)
    LA= (theta+2*pi)*6/pi;
    LB=-1;
    LC=1;
    
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

    
if (theta>=-11*pi/6 & theta<-5*pi/3)
     LA=1;
    LB=-1;
    LC=-(theta+(10*pi/6))*6/pi;
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if (theta>=-5*pi/3 & theta<-3*pi/2)
    LA=1;
    LB=-1;
    LC=-(theta+(10*pi/6))*6/pi;
   sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if (theta>=-3*pi/2 & theta<-4*pi/3)
   LA=1;
    LB=(  theta+(4*pi/3) )*6/pi;
    LC=-1;
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=-4*pi/3 & theta<-7*pi/6)
    LA=1;
    LB=(  theta+(4*pi/3) )*6/pi;
    LC=-1;
 
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if (theta>=-7*pi/6 & theta<-pi)
      LA=-(theta+pi)*6/pi;
    LB=1;
    LC=-1;
   sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=-pi & theta<-5*pi/6)
     LA=-(theta+pi)*6/pi;
    LB=1;
    LC=-1;
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=-5*pi/6 & theta<-4*pi/6)
    LA= -1;
    LB=1;
    LC=( theta+(4*pi/6))*6/pi;
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if (theta>=-4*pi/6 & theta<-3*pi/6)
   LA= -1;
   LB=1;
   LC=( theta+(4*pi/6))*6/pi;
   sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=-3*pi/6 & theta<-2*pi/6)
    LA= -1;
    LB=-(theta+(2*pi/6))*6/pi;
    LC=1;
    sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=-2*pi/6 & theta<-pi/6)
     LA= -1;
    LB=-(theta+(2*pi/6))*6/pi;
    LC=1;      
   sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
    sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
    sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

if(theta>=-pi/6 & theta<0)
    LA= 6*theta/pi;
    LB=-1;
    LC=1;
   sys(1)= LA*N*BM*Rl*Rr*u(4);     % Back emf for phase U
   sys(2)=LB*N*BM*Rl*Rr*u(4);      %Back emf for phase V
   sys(3)=LC*N*BM*Rl*Rr*u(4); %Back emf for phase W
    
    sys(4)=BM*Rl*Rr*N*LA*u(1);      % Phase Torque U
    sys(5)=BM*Rl*Rr*N*LB*u(2);      %Phase Torque V
    sys(6)=BM*Rl*Rr*N*LC*u(3);      %Phase Torque W
    
end;

%------------------------------UPDATE THE MATRIX A IN mystate-space BLOCK------------------------------

up_A=[-(R/(L-M))    0   0  -N*BM*Rl*Rr*LA/(L-M)  0; 0   -(R/(L-M))  0  -N*BM*Rl*Rr*LB/(L-M)   0; 0  0  -(R/(L-M))  -N*BM*Rl*Rr*LC/(L-M)  0; N*BM*Rl*Rr*LA/J    N*BM*Rl*Rr*LB/J    N*BM*Rl*Rr*LC/J     -DF/J   0; 0 0  0 P/2 0];
val=['[' sprintf(' %d  %d %d %d %d; %d  %d %d %d %d; %d  %d %d %d %d; %d  %d %d %d %d; %d  %d %d %d %d',up_A') ']'];

% SURPRISINGLY, Matlab gives an error if there is a white space betweeb spintf and starting braces!!! POOR LANGUAGE!!!!

dirty = get_param(bdroot,'Dirty');
set_param('mybldc_mdl2/mybldc/my state-space','A',val);
set_param(bdroot,'Dirty',dirty);
 
% -----------------------------------------UPDATE OVER------------------------------------------------------


%-------------------------------------------------FRICTION CALCULATIONS-----------------------------------
%                                                                                
if (u(4)==0 )
    
    if (abs (sys(4)+sys(5) + sys(6) )  )>F0        %check if wn==0 and the total torque vis-a-vis the max value of friction
       Fnp=sign(sys(4)+sys(5)+sys(6))*(  F0  ); %the value of friction when the rotor is standstill
       sys(7)=Fnp;                                             %output the friction generated
   else
        Fnp=sys(4)+sys(5) + sys(6);                 %if the generated torque is insufficient, then the value of friction adjusts itself.
       sys(7)=Fnp;                                             %output the friction generated
   end;
end;

 if (u(4)~=0 )                                                                    %if wn is not zero
 Fnp=sign(sys(4)+sys(5)+sys(6))*(  F0*exp(-50*abs(u(4)))+Fs+0.001*abs(u(4)) ); %the value of friction when the rotor is moving
 sys(7)=Fnp;                                             %output the friction generated
end;
  


function LocalResetController(name)

mdl = bdroot(name);
dirty = get_param(mdl, 'Dirty');
set_param(name, 'A', '[-165.88 0 0 0 0; 0 -165.88 0 11.61 0; 0 0 -165.88 -11.61 0;0 -245 245 -10 0; 0 0 0 2 0]');
set_param(mdl, 'Dirty',dirty);

function sys=mdlTerminate(t,x,u)
sys = [];

% End of mdlOutputs.

⌨️ 快捷键说明

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