derive.c
来自「在ccs编程环境下」· C语言 代码 · 共 56 行
C
56 行
/*=====================================================================================
File name: DERIVE_TIME.C (IQ version)
Originator: Power Electronics and Motor Control lab of TSinghua University
Timegroup Co.
Description: The PU parameters deriving
=====================================================================================
History:
-------------------------------------------------------------------------------------
12-11-2003 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 "derive.h"
#pragma CODE_SECTION(derive_calc, "derive_calcFuncs")
void derive_calc(DERIVE *v)
{
_iq base_w_inv;
_iq inertia_temp;
v->rr = _IQdiv(v->Rr,v->base_r);
v->rs = _IQdiv(v->Rs,v->base_r);
v->lm = _IQdiv(v->Lm,v->base_l);
v->lr = _IQdiv(v->Lr,v->base_l);
v->ls = _IQdiv(v->Ls,v->base_l);
v->LrbyLm = _IQdiv(v->lr,v->lm);
v->Lsig = _IQmpy(v->ls,(_IQ(1.0) - _IQdiv(_IQmpy(v->lm,v->lm),_IQmpy(v->ls,v->lr))));
v->Tr = _IQdiv(v->lr,v->rr);
v->Tr_invt = _IQdiv(v->rr,v->lr);
v->Lmbylr = _IQdiv(v->lm,v->lr);
v->tc = _IQdiv(v->Tc,v->base_time);
v->base_voltage_inv = _IQ22toIQ(_IQ22div(_IQ22(1.0),v->base_voltage));
v->base_current_inv = _IQdiv(_IQ(1.0),v->base_current);
base_w_inv = _IQ22toIQ(_IQ22div(_IQ22(1.0),v->base_w));
v->wc_wr = _IQ24mpyIQX(v->Wc_wr,22,base_w_inv,24);
v->wc_cur = _IQ24mpyIQX(v->Wc_cur,18,base_w_inv,24);
v->wc_flux = _IQ24mpyIQX(v->Wc_flux,22,base_w_inv,24);
v->wc_offset = _IQmpy(v->Wc_offset,base_w_inv);
v->wc_syn = _IQmpy(v->Wc_syn,base_w_inv);
inertia_temp = _IQ24mpyIQX(v->base_inertia,28,_IQ20(1000),20);
v->inertia = _IQ20mpyIQX(_IQdiv(v->Inertia,inertia_temp),24,_IQ20(1000),20);
v->lyh_scope1 = v->inertia;
v->lyh_scope2 = _IQdiv(v->Inertia,inertia_temp);
v->flux_max = _IQdiv(v->Flux_max,v->base_flux);
v->voltage_max = _IQ22toIQ(_IQ22div(v->Voltage_max,v->base_voltage));
v->i_max = _IQdiv(v->I_max,v->base_current);
v->torque_max = _IQdiv(v->Torque_max,v->base_torque);
v->rs_max = _IQdiv(v->Rs_max,v->base_r);
v->rr_max = _IQdiv(v->Rr_max,v->base_r);
v->flux_ref = _IQdiv(v->Flux_ref,v->base_flux);
v->speed_ref = _IQ24mpyIQX(v->Speed_ref,18,base_w_inv,24);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?