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 + -
显示快捷键?