www.pudn.com > PMSM111.zip > inertia.m, change:2011-06-05,size:1511b


function output=inertia(x); 
%the inertia identification  
%输入变量 
%x(1):  speederror 
global Jmin  
global Jmax 
global Jc  
global Jc1 Jc2 speederror derta 
 
T_Period=50e-6;% the control time 
%========================================================================== 
%--%当前时间值 
T_now=x(2); 
%--------------------------------------------------- 
%=============================================================================================================== 
if  T_now< T_Period  %第一个控制周期初始化 
    T_time=T_Period;  % SV_time 记录一个控制节点时间 
     
Jmin=0.48e-4;              %转动惯量最小值 
Jmin=4.8e-4;               %转动惯量最大值    
 
Jc1=Jmin; 
Jc2=Jmax; 
Jc=(Jmin+Jmax)/2; 
output=Jc; 
%=============================================================================================================== 
elseif T_now>=T_time  %% 
          T_time=T_now+T_Period;%记录下一个控制周期的开始时间  
%===============================================================================================================   
%========================================================= 
speederror=x(1); 
if speederror<-9.5          %speederror=n_real-n_estimate 
    derta<0; 
elseif speederror>9.5       %9.5为0.01rad/s 
    derta>0; 
else 
    derta=0; 
end 
if derta<0 
    Jc1=Jc; 
    Jc=(Jc1+Jc2)/2; 
elseif derta>0 
    Jc2=Jc; 
    Jc=(Jc1+Jc2)/2; 
else  
    Jc=(Jc1+Jc2)/2; 
end 
%-------------------------------------------------------------------------- 
else 
     
end 
output=Jc;