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

📄 foc.m

📁 关于异步电机矢量控制的程序
💻 M
字号:
function out=FOC(udc,isa,isb,spdfeed)

global Rs Rr ts np Lm Lr Ls sigma;
global PWM;
global Fsalfa Fsbeta;
%######################################
%rebuild usalfa, usbeta by sa,sb,sc,udc with none-deadzone
%######################################
sa=PWM(1);
sb=PWM(2);
sc=PWM(3);
usalfa=sqrt(2/3)*udc*(sa-1/2*sb-1/2*sc);
usbeta=sqrt(2/3)*udc*(sqrt(3)/2*sb-sqrt(3)/2*sc);
%######################################
%stator current 3s-2s transform
%######################################
isc=-isa-isb;
isalfa=(isa-1/2*isb-1/2*isc)*2/3;
isbeta=(sqrt(3)/2*isb-sqrt(3)/2*isc)*2/3;
%######################################
%U-I model, caculate the rotor flux
%######################################
% EMFalfa=usalfa-isalfa*Rs;
% EMFbeta=usbeta-isbeta*Rs;
% % FsAMP=sqrt(Fsalfa*Fsalfa+Fsbeta*Fsbeta);
% 
% Fsalfa=Fsalfa+EMFalfa*ts;
% Fsbeta=Fsbeta+EMFbeta*ts;
% 
% Fralfa=Lr/Lm*(Fsalfa-sigma*Ls*isalfa);
% Frbeta=Lr/Lm*(Fsbeta-sigma*Ls*isbeta);
% 
% 
% 
% if Fralfa==0&Frbeta>0
%     Frtheta=pi/2;
% elseif Fralfa==0&Frbeta==0
%     Frtheta=0;
% elseif Fralfa==0&Frbeta<0
%     Frtheta=3*pi/2;
% elseif Fralfa>0&Frbeta>=0
%     Frtheta=atan(Frbeta/Fralfa);
% elseif Fralfa>0&Frbeta<0
%     Frtheta=atan(Frbeta/Fralfa)+2*pi;
% else
%     Frtheta=atan(Frbeta/Fralfa)+pi;
% end


global imr Frtheta;
cosine=cos(Frtheta);
sine=sin(Frtheta);

%build flux first
% if FsAMP<0.5
%     iq=-sine*isalfa+cosine*isbeta;
%     ud_ref=0;
%     uq_ref=iqCTRL(iq,10,220,5,0.001,0);
%     ualfa=cosine*ud_ref-sine*uq_ref;
%     ubeta=sine*ud_ref+cosine*uq_ref;
%     PWM=svpwm(ualfa,ubeta);
%     out=[ualfa ubeta];
%     return;
% end

id=cosine*isalfa+sine*isbeta;
iq=-sine*isalfa+cosine*isbeta;

%theta角计算
imr=imr+ts*Rr/Lr*(id-imr);  %稳态磁化电流
ws=Rr/Lr*iq/id;
wr=spdfeed*2*np*pi/60;
w1=wr+ws; %w1=wr+ws
Frtheta=Frtheta+w1*ts;

if Frtheta>2*pi
    Frtheta=Frtheta-2*pi;
elseif Frtheta<-2*pi
    Frtheta=Frtheta+2*pi;
end

iqref=spdCTRL(spdfeed,1000,25,1,0.01,0);
%M轴(d轴)给定电流有电机参数计算的到
ud_ref=idCTRL(id,5.25,220,5,0.1,0);
uq_ref=iqCTRL(iq,iqref,220,20,0.1,0);

%######################################
%2r/2s inv_park
%######################################
ualfa=cosine*ud_ref-sine*uq_ref;
ubeta=sine*ud_ref+cosine*uq_ref;

out=[ualfa ubeta Frtheta];

⌨️ 快捷键说明

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