www.gusucode.com > 异步电机的无速度传感器的矢量控制matlab源码程序 > code/SMC/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;