aci_fe.c

来自「这是ti公司的一个重要的技术文档源码! 三相异步电机无速度传感器直接磁场定向控」· C语言 代码 · 共 67 行

C
67
字号
/*=====================================================================================
 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 + =
减小字号Ctrl + -
显示快捷键?