• 大小: 46KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签:

资源简介

SRM直接转矩MATLAB仿真,用于SRM直接转矩电机的研究。

资源截图

代码片段和文件信息

function [sysx0strts] = d_sfunc_dtc(txuflagFsetSpeedKpKiTemax)
%intput:u(1)-u(5)--fafbfcTen
%state: x1:F change statex2:Te change statex3:sx4:section
%       x5:Fax6:Fbx7:sum det_speedx8:pid output as Te*
%output:y1:sy2:sectiony3:Fay4:Fb
switch flag
    case 0
    [sysx0strts] = mdlInitializeSizes;
   case 2                                                
    sys = mdlUpdate(txuFsetSpeedKpKiTemax); 
   case 3                                                
    sys = mdlOutputs(txu);
  case {149 }                                               
    sys = []; % do nothing
  otherwise
    error([‘unhandled flag = ‘num2str(flag)]);
end
function sys = mdlUpdate(txuFsetSpeedKpKiTemax)
% *******************************************
% slove Fs and delta
Fa=u(1)-0.5*u(2)-0.5*u(3);% 3/2
Fb=0.86605*(u(2)-u(3));% 3/2 :0.86605=sqrt(3)/2
Fs=sqrt(Fa*Fa+Fb*Fb);
if (abs(Fa)<1e-5)
    Fa=1e-5;
end
Fba=Fb/Fa;
delta=atan(Fba);% pi/2 ~ -pi/2
if (Fa<0)
    delta=delta+pi; % -pi/2 ~ 3pi/2
end
%***************************************************
det_speed=Speed-u(5);
sum_det=x(7)+det_speed;
% if (sum_det*Ki>Temax*3)%limited sum_det
%     sum_det=Temax*3/Ki;
% end
% if (sum_det*Ki<-Temax*3)%limited sum_det
%     sum_det=-Temax*3/Ki;
% end
x(8)=det_speed*Kp+sum_det*Ki;%pid output as Te*
if x(8)>Temax        %limited Temax
    x(8)=Temax;
end
if x(8)<-Temax
    x(8)=-Temax;
end
% **************************************************
% s=1:00 T-  phir-  s=2:01 T-  phir+ 
% s=3:10 T+  phir-  s=4:11 T+  phir+

if (Fset-Fs)/Fset>0.005
    x(1)=1;
end
if (Fset-Fs)/Fset<-0.005
    x(1)=0;
end
if (x(8)-u(4))/x(8)>0.005
    x(2)=1;
end
if (x(8)-u(4))/x(8)<-0.005
    x(2)=0;
end
x(3)=x(2)*2+x(1)+1;%s=x(2)*2+x(1)+1;
% ******************************************
%  slove section based on delta
% 1:     0-60   2:   60-120  3:  120-180 
% 4:  180-240   5:  240-300  6:  300-360

if (delta<0)
  delta=delta+2*pi;  % -pi/2 ~ 3pi/2 --->0~ 2pi
end
x(4)=ceil(delta*360/(2*pi*60));%section=ceil(delta/60)
% ******************************************************
x(5)=Fa;
x(6)=Fb;
sys(1)=x(1); %if abs(Fset-Fs)<=0.005    x(1) no change
sys(2)=x(2); %if abs(Tset-u(4))<=0.005  x(2) no change
sys(3)=x(3); 
sys(4)=x(4); 
sys(5)=x(5); 
sys(6)=x(6); 
sys(7)=sum_det;
sys(8)=x(8);

function sys = mdlOutputs(txu)
sys(1)=x(3);
sys(2)=x(4);
sys(3)=x(5);
sys(4)=x(6);

function [sysx0strts] = mdlInitializeSizes()
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  =8;
sizes.NumOutputs     = 4;
sizes.NumInputs      = 5;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes =1;
sys = simsizes(sizes);
x0  =[1 1 1 1 0.001 0.001 0 0];
str = [];
ts  = [-1 0]; 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     102145  2013-08-27 15:58  SRM直接转矩matlab仿真\DTC_measure.mdl

     文件       2805  2013-08-16 09:53  SRM直接转矩matlab仿真\d_sfunc_dtc.m

     文件       1261  2013-08-21 21:23  SRM直接转矩matlab仿真\d_sfunc_measure.m

     文件      97020  2013-09-11 23:00  SRM直接转矩matlab仿真\Sfun_dtc_ASR.mdl

     文件     126422  2013-11-24 23:32  SRM直接转矩matlab仿真\Srm_dtc.mdl

     文件        306  2014-06-06 12:30  SRM直接转矩matlab仿真\仿真模型说明.txt

     目录          0  2015-09-06 19:48  SRM直接转矩matlab仿真

----------- ---------  ---------- -----  ----

               329959                    7


评论

共有 条评论

相关资源