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

📄 aci_fe.c

📁 这是ti公司的一个重要的技术文档源码! 三相异步电机无速度传感器直接磁场定向控制! 主要是用于F2812
💻 C
字号:
/*=====================================================================================
 File name:        ACI_FE.C  (IQ version)                  
                    
 Originator:	Digital Control Systems Group
			Texas Instruments

 Description:  Flux Estimator of Induction Motor                 

=====================================================================================
 History:
-------------------------------------------------------------------------------------
 05-15-2002	Release	Rev 1.0
-------------------------------------------------------------------------------------*/

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

void aci_fe_calc(ACIFE *v)
{	

	_iq i_ds_e, error, emf_old;
									
/* Park transformation on the measured stator current */
     i_ds_e = _IQmpy(v->i_qs_fe,_IQsinPU(v->theta_r_fe)); 
     i_ds_e += _IQmpy(v->i_ds_fe,_IQcosPU(v->theta_r_fe)); 
    
/* The current model section (Classical Rotor Flux Vector Control Equation) */
	v->flx_dr_e = _IQmpy(v->K1_fe,v->flx_dr_e) - _IQmpy(v->K2_fe,i_ds_e);	

/* Inverse park transformation on the rotor flux from the current model */
   v->flx_dr_s = _IQmpy(v->flx_dr_e,_IQcosPU(v->theta_r_fe)); 
   v->flx_qr_s = _IQmpy(v->flx_dr_e,_IQsinPU(v->theta_r_fe)); 

/* Compute the stator flux based on the rotor flux from current model */
   v->flx_ds_s = _IQmpy(v->K3_fe,v->flx_dr_s) + _IQmpy(v->K4_fe,v->i_ds_fe);	
   v->flx_qs_s = _IQmpy(v->K3_fe,v->flx_qr_s) + _IQmpy(v->K4_fe,v->i_qs_fe);

/* Conventional PI controller section */
   error =  v->psi_ds_fe - v->flx_ds_s;
   v->ucomp_ds = _IQmpy(v->Kp_fe,error) + v->ui_ds;
   v->ui_ds = _IQmpy(v->Kp_fe,_IQmpy(v->Ki_fe,error)) + v->ui_ds;
   
   error =  v->psi_qs_fe - v->flx_qs_s;
   v->ucomp_qs = _IQmpy(v->Kp_fe,error) + v->ui_qs;
   v->ui_qs = _IQmpy(v->Kp_fe,_IQmpy(v->Ki_fe,error)) + v->ui_qs;    

/* Compute the estimated stator flux based on the integral of back emf */		
   emf_old = v->emf_ds;
   v->emf_ds = v->u_ds_fe - v->ucomp_ds - _IQmpy(v->K5_fe,v->i_ds_fe);
   v->psi_ds_fe = v->psi_ds_fe + _IQmpy(_IQ(0.5),_IQmpy(v->K6_fe,(v->emf_ds + emf_old))); 

   emf_old = v->emf_qs;
   v->emf_qs = v->u_qs_fe - v->ucomp_qs - _IQmpy(v->K5_fe,v->i_qs_fe);
   v->psi_qs_fe = v->psi_qs_fe + _IQmpy(_IQ(0.5),_IQmpy(v->K6_fe,(v->emf_qs + emf_old))); 

/* Compute the estimated rotor flux based on the stator flux from the integral of back emf */
   v->psi_dr_fe = _IQmpy(v->K7_fe,v->psi_ds_fe) - _IQmpy(v->K8_fe,v->i_ds_fe);  
   v->psi_qr_fe = _IQmpy(v->K7_fe,v->psi_qs_fe) - _IQmpy(v->K8_fe,v->i_qs_fe);  

/* Compute the rotor flux angle */
   v->theta_r_fe = _IQatan2PU(v->psi_qr_fe,v->psi_dr_fe); 

}


⌨️ 快捷键说明

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