/** * @file mc_status.h * @author Xiao Lifan (xiaolf6@midea.com) * @brief 电机状态描述定义 * @version 0.1 * @date 2023-03-22 * * @copyright Copyright (c) 2023 * */ #ifndef _MC_STATUS_H_ #define _MC_STATUS_H_ #include "test_typedefine.h" #include "mc_pu_base.h" #ifdef __cplusplus extern "C" { #endif // __cplusplus /** * @brief 电机控制状态信息有名值 * */ typedef struct McStatusNamed { /* 电机状态 */ s16 Ia; /**< Unit: 0.01 A */ s16 Ib; /**< Unit: 0.01 A */ s16 Ic; /**< Unit: 0.01 A */ s16 IpeakAbs; /**< Unit: 0.01 A */ s16 Ialpha; /**< Unit: 0.01 A */ s16 Ibeta; /**< Unit: 0.01 A */ s16 Izero; /**< Unit: 0.01 A */ s16 Id; /**< Unit: 0.01 A */ s16 Iq; /**< Unit: 0.01 A */ s16 I0; /**< Unit: 0.01 A */ s16 Ua; /**< Unit: 0.1 V */ s16 Ub; /**< Unit: 0.1 V */ s16 Uc; /**< Unit: 0.1 V */ s16 Ualpha; /**< Unit: 0.1 V */ s16 Ubeta; /**< Unit: 0.1 V */ s16 Uzero; /**< Unit: 0.1 V */ s16 ElecAngle; /**< Unit: 0.1 Degree */ s16 ElecOmega; /**< Unit: 0.1 s^-1 */ s16 MechAngle; /**< Unit: 0.1 Degree */ s16 MechOmega; /**< Unit: 0.1 s^-1 */ s16 ElecFreq; /**< Unit: 0.1 Hz */ /* 逆变器状态 */ s16 Uac; /**< Unit: 0.1 V */ s16 Udc; /**< Unit: 0.1 V */ /* 温度 */ s16 TempIgbt; /**< Unit: 0.1 C */ s16 TempMotor; /**< Unit: 0.1 C */ s16 TempInv; /**< Unit: 0.1 C */ } McStatusNamed; /** * @brief 电机控制状态信息Pu值 * * @note 温度信息不进行标幺,仍为有名值 */ typedef struct McStatusPu { /* 电机状态 */ s16 swIa; /**< Q14 */ s16 swIb; /**< Q14 */ s16 swIc; /**< Q14 */ s16 swIpeakAbs; /**< Q14 */ s16 swIalpha; /**< Q14 */ s16 swIbeta; /**< Q14 */ s16 swIzero; /**< Q14 */ s16 swId; /**< Q14 */ s16 swIq; /**< Q14 */ s16 swI0; /**< Q14 */ s16 swUa; /**< Q14 */ s16 swUb; /**< Q14 */ s16 swUc; /**< Q14 */ s16 swUalpha; /**< Q14 */ s16 swUbeta; /**< Q14 */ s16 swUzero; /**< Q14 */ s16 swElecAngle; /**< Q15, Base 2Pi */ s16 swElecOmega; /**< Q15 */ s16 swMechAngle; /**< Q15, Base 2Pi */ s16 swMechOmega; /**< Q15 */ s16 swElecFreq; /**< Q15 */ /* 逆变器状态 */ s16 swUac; /**< Q14 */ s16 swUdc; /**< Q14 */ /* 温度 */ s16 swTempIgbt; /**< Unit: 0.1 C */ s16 swTempMotor; /**< Unit: 0.1 C */ s16 swTempInv; /**< Unit: 0.1 C */ } McStatusPu; /** * @brief 电机及逆变器状态结构体 * */ typedef struct McStatus { McStatusNamed Named; /**< 有名值 */ McStatusPu Pu; /**< 标幺值 */ McPuBase *Base; /**< 基值指针 */ } McStatus; void McStatusInit(McStatus *s, McPuBase *base); /** * @brief 从电机状态标幺值计算有名值 * * @param s 电机状态结构体 */ void McStatusSyncNamed(McStatus *s); /** * @brief 从电机状有名值计算标幺值 * * @param s 电机状态结构体 */ void McStatusSyncPu(McStatus *s); #ifdef __cplusplus } #endif // __cplusplus #endif