📄 aci_fe.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 + -