gusucode.com > 异步电机的无速度传感器的矢量控制matlab源码程序 > code/wr_estimated0716.m

    function y=wr_Estimated0716(u);
global wr_estimated;
global vdss;
global vqss;
global idss;
global iqss;
global edss;
global eqss;
global flux_d;
global flux_q;
global flux_d_o;
global flux_q_o;
global flux_d_r;
global flux_q_r;
global flux_d_r_o;
global flux_q_r_o;
global Rs;
global T;
global flux_command;
global cos_theta;
global sin_theta;
global o;
global Ls;
global Lm;
global Lr;
global Tr;
global wr_filter;
global we_filter;
global counter;
global we;
global wsl;
global wr_estimated_o;
global we_o;
global flux;
global flux_s;
global reg1;
global reg2;
global reg3;
global wc;
global theta;
global fdre;
% idss=u(1);
% iqss=u(2);
%--------------the dc error--------------------
idss=u(1)+0;
iqss=u(2)+0;
%------------------------------------------------
vdss=u(3);
vqss=u(4);
theta=u(5);
fdre=u(6);
% if(abs(u(5))<80)
%     wc=20;
% end
% if(abs(u(5))>=80)
%     wc=40;
% end   
wc=1;
edss=vdss-Rs*idss;
eqss=vqss-Rs*iqss;
%---------the command flux compensation----------------------

flux_d=flux_d_o+T*(edss+wc*fdre*cos(theta)-wc*flux_d_o);
flux_q=flux_q_o+T*(eqss+wc*fdre*sin(theta)-wc*flux_q_o);
%----------------------

flux_d_r=(Lr/Lm)*(flux_d-(o*Ls*idss));
flux_q_r=(Lr/Lm)*(flux_q-(o*Ls*iqss));
flux=sqrt((flux_d_r*flux_d_r)+(flux_q_r*flux_q_r));
flux_s=sqrt(flux_d*flux_d+flux_q*flux_q);

if(flux<0.05)
    wr_estimated=0;
    cos_theta=1;
    sin_theta=0;
else
    %wr_estimated=((flux_d_r*((flux_q_r-flux_q_r_o)/(T*2))-flux_q_r*(flux_d_r-flux_d_r_o)/(T*2))-Lm*Tr*(flux_d_r*iqss-flux_q_r*idss))/(flux_d_r*flux_d_r+flux_q_r*flux_q_r);
    we=((flux_d_r*(flux_q_r-flux_q_r_o)/T)-(flux_q_r*(flux_d_r-flux_d_r_o)/T))/(flux*flux);
    wsl=(Lm/Tr)*(flux_d_r*iqss-flux_q_r*idss)/(flux*flux);
    %wr_estimated=((flux_d_r*((flux_q_r-flux_q_r_o)/(T))-flux_q_r*(flux_d_r-flux_d_r_o)/(T))-(Lm/Tr)*(flux_d_r*iqss-flux_q_r*idss))/(flux_d_r*flux_d_r+flux_q_r*flux_q_r);
    wr_estimated=we-wsl;
end
flux_d_o=flux_d;
flux_q_o=flux_q;
flux_d_r_o=flux_d_r;
flux_q_r_o=flux_q_r;
reg2=reg1;
y(1)=wr_estimated;
y(2)=we;
y(3)=wsl;
y(4)=flux_d_r;
y(5)=flux_q_r;
y(6)=flux;