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
extern int32_t EST_getFullScaleInductance(EST_Handle handle);
获取估算器中使用的满量程电感值,亨利 (H)。
获取估算器使用的电感有不同的方法。将电感从标幺值转换为 H 时,此函数很有用。但返回值为浮点格式,因此使用该满量程值将标幺值转换为 H 并不是最高效的方式。下面提供了两个示例,说明了为加快执行而进行的浮点标幺值到 H 的转换以及定点标幺值到 H 的转换。浮点示例:
uint_least8_t Ls_qFmt = EST_getLs_qFmt(handle);
float_t fullScaleInductance = EST_getFullScaleInductance(handle);
float_t Ls_d_pu = _IQ30toF(EST_getLs_d_pu(handle));
float_t pu_to_h_sf = fullScaleInductance * pow(2.0, 30 - Ls_qFmt);
float_t Ls_d_H = Ls_d_pu * pu_to_h_sf;
另一个示例的目的是避免使用浮点数学运算以加快执行。在此示例中,使用预编译器数学运算根据 user.h 中的用户参数计算满量程电感值:
#define VarShift(var,nshift) (((nshift) < 0) ? ((var)>>(-(nshift))) : ((var) <<(nshift)))
#define MATH_PI (3.1415926535897932384626433832795)
#define USER_IQ_FULL_SCALE_VOLTAGE_V (300.0)
#define USER_IQ_FULL_SCALE_CURRENT_A (10.0)
#define USER_VOLTAGE_FILTER_POLE_Hz (335.648)
#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)
uint_least8_t Ls_qFmt = EST_getLs_qFmt(handle);
_iq fullScaleInductance = _IQ(USER_IQ_FULL_SCALE_VOLTAGE_V/(USER_IQ_FULL_SCALE_CURRENT_A * USER_VOLTAGE_FILTER_POLE_rps));
_iq Ls_d_pu = _IQ30toIQ(EST_getLs_d_pu(handle));
_iq pu_to_h_sf = VarShift(fullScaleInductance, 30 - Ls_qFmt);
_iq Ls_d_H = _IQmpy(Ls_d_pu, pu_to_h_sf);
估算器 (EST) 句柄
满量程电感值,亨利