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

📄 aci_se.c

📁 异步电机矢量控制c源程序
💻 C
字号:
/*=====================================================================================
 File name:        ACI_SE.C  (IQ version)                  
                    
 Originator:	Digital Control Systems Group
			Texas Instruments

 Description:  Open-loop Speed Estimator of Induction Motor                   

=====================================================================================
 History:
-------------------------------------------------------------------------------------
 04-15-2005	Version 3.20
-------------------------------------------------------------------------------------*/

#include "IQmathLib.h"         // Include header for IQmath library
// Don't forget to set a proper GLOBAL_Q in "IQmathLib.h" file
#include "dmctype.h"
#include "aci_se.h"

void aci_se_calc(ACISE *v)
{	

	_iq WSlip, WSyn;
					
// Slip computation
   v->SquaredPsi = _IQmpy(v->PsiDrS,v->PsiDrS)+_IQmpy(v->PsiQrS,v->PsiQrS);

   WSlip = _IQmpy(v->K1,(_IQmpy(v->PsiDrS,v->IQsS) - _IQmpy(v->PsiQrS,v->IDsS)));
   WSlip = _IQdiv(WSlip,v->SquaredPsi);

// Synchronous speed computation
   if ((v->ThetaFlux < DIFF_MAX_LIMIT)&(v->ThetaFlux > DIFF_MIN_LIMIT))
		// Q21 = Q21*(GLOBAL_Q-GLOBAL_Q)
   		WSyn = _IQmpy(v->K2,(v->ThetaFlux - v->OldThetaFlux));
   else  WSyn = v->WPsi;

// low-pass filter
   // Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21
   v->WPsi = _IQmpy(v->K3,v->WPsi) + _IQmpy(v->K4,WSyn);
    
   v->OldThetaFlux = v->ThetaFlux;

   // Q21 = Q21 - GLOBAL_Q
   v->WrHat = v->WPsi - _IQtoIQ21(WSlip);

   // Limit the estimated speed between -1 and 1 per-unit
   if (v->WrHat>_IQ21(1))
     v->WrHat = _IQ(1);
   else if (v->WrHat<_IQ21(-1))
     v->WrHat = _IQ(-1);      
   else
     v->WrHat = _IQ21toIQ(v->WrHat);

// Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q 
   v->WrHatRpm = _IQmpy(v->BaseRpm,v->WrHat);
   
}


⌨️ 快捷键说明

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