ZHCU083I January 2013 – October 2021 TMS320F2802-Q1 , TMS320F28026-Q1 , TMS320F28026F , TMS320F28027-Q1 , TMS320F28027F , TMS320F28027F-Q1 , TMS320F28052-Q1 , TMS320F28052F , TMS320F28052F-Q1 , TMS320F28052M , TMS320F28052M-Q1 , TMS320F28054-Q1 , TMS320F28054F , TMS320F28054F-Q1 , TMS320F28054M , TMS320F28054M-Q1 , TMS320F2806-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1
监控 Rs 在线值也可以使用一种更为具体的方法,即仅使用定点数学运算和移位操作。以下代码示例显示了如何根据 InstaSPIN-FOC 中所提供的函数计算以欧姆为单位的 Rs 在线定点值。由于避免了浮点数学运算,执行时间得到优化,甚至可以在中断程序中计算这个值。
#define VarShift(var,nshift) (((nshift) < 0) ? ((var)>>(-(nshift))) \
: ((var)<<(nshift)))
#define USER_IQ_FULL_SCALE_VOLTAGE_V (48.0)
#define USER_IQ_FULL_SCALE_CURRENT_A (40.0)
CTRL_Obj *obj = (CTRL_Obj *)ctrlHandle;
uint_least8_t RsOnLine_qFmt = EST_getRsOnLine_qFmt(obj->estHandle);
_iq fullScaleResistance = _IQ(USER_IQ_FULL_SCALE_VOLTAGE_V \
/USER_IQ_FULL_SCALE_CURRENT_A);
_iq RsOnLine_pu = _IQ30toIQ(EST_getRsOnLine_pu(obj->estHandle));
_iq pu_to_ohms_sf = VarShift(fullScaleResistance, 30 - RsOnLine_qFmt);
_iq RsOnLine_Ohms = _IQmpy(RsOnLine_pu, pu_to_ohms_sf);