mc_status.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /**
  2. * @file mc_status.h
  3. * @author Xiao Lifan (xiaolf6@midea.com)
  4. * @brief 电机状态描述定义
  5. * @version 0.1
  6. * @date 2023-03-22
  7. *
  8. * @copyright Copyright (c) 2023
  9. *
  10. */
  11. #ifndef _MC_STATUS_H_
  12. #define _MC_STATUS_H_
  13. #include "test_typedefine.h"
  14. #include "mc_pu_base.h"
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif // __cplusplus
  18. /**
  19. * @brief 电机控制状态信息有名值
  20. *
  21. */
  22. typedef struct McStatusNamed
  23. {
  24. /* 电机状态 */
  25. s16 Ia; /**< Unit: 0.01 A */
  26. s16 Ib; /**< Unit: 0.01 A */
  27. s16 Ic; /**< Unit: 0.01 A */
  28. s16 IpeakAbs; /**< Unit: 0.01 A */
  29. s16 Ialpha; /**< Unit: 0.01 A */
  30. s16 Ibeta; /**< Unit: 0.01 A */
  31. s16 Izero; /**< Unit: 0.01 A */
  32. s16 Id; /**< Unit: 0.01 A */
  33. s16 Iq; /**< Unit: 0.01 A */
  34. s16 I0; /**< Unit: 0.01 A */
  35. s16 Ua; /**< Unit: 0.1 V */
  36. s16 Ub; /**< Unit: 0.1 V */
  37. s16 Uc; /**< Unit: 0.1 V */
  38. s16 Ualpha; /**< Unit: 0.1 V */
  39. s16 Ubeta; /**< Unit: 0.1 V */
  40. s16 Uzero; /**< Unit: 0.1 V */
  41. s16 ElecAngle; /**< Unit: 0.1 Degree */
  42. s16 ElecOmega; /**< Unit: 0.1 s^-1 */
  43. s16 MechAngle; /**< Unit: 0.1 Degree */
  44. s16 MechOmega; /**< Unit: 0.1 s^-1 */
  45. s16 ElecFreq; /**< Unit: 0.1 Hz */
  46. /* 逆变器状态 */
  47. s16 Uac; /**< Unit: 0.1 V */
  48. s16 Udc; /**< Unit: 0.1 V */
  49. /* 温度 */
  50. s16 TempIgbt; /**< Unit: 0.1 C */
  51. s16 TempMotor; /**< Unit: 0.1 C */
  52. s16 TempInv; /**< Unit: 0.1 C */
  53. } McStatusNamed;
  54. /**
  55. * @brief 电机控制状态信息Pu值
  56. *
  57. * @note 温度信息不进行标幺,仍为有名值
  58. */
  59. typedef struct McStatusPu
  60. {
  61. /* 电机状态 */
  62. s16 swIa; /**< Q14 */
  63. s16 swIb; /**< Q14 */
  64. s16 swIc; /**< Q14 */
  65. s16 swIpeakAbs; /**< Q14 */
  66. s16 swIalpha; /**< Q14 */
  67. s16 swIbeta; /**< Q14 */
  68. s16 swIzero; /**< Q14 */
  69. s16 swId; /**< Q14 */
  70. s16 swIq; /**< Q14 */
  71. s16 swI0; /**< Q14 */
  72. s16 swUa; /**< Q14 */
  73. s16 swUb; /**< Q14 */
  74. s16 swUc; /**< Q14 */
  75. s16 swUalpha; /**< Q14 */
  76. s16 swUbeta; /**< Q14 */
  77. s16 swUzero; /**< Q14 */
  78. s16 swElecAngle; /**< Q15, Base 2Pi */
  79. s16 swElecOmega; /**< Q15 */
  80. s16 swMechAngle; /**< Q15, Base 2Pi */
  81. s16 swMechOmega; /**< Q15 */
  82. s16 swElecFreq; /**< Q15 */
  83. /* 逆变器状态 */
  84. s16 swUac; /**< Q14 */
  85. s16 swUdc; /**< Q14 */
  86. /* 温度 */
  87. s16 swTempIgbt; /**< Unit: 0.1 C */
  88. s16 swTempMotor; /**< Unit: 0.1 C */
  89. s16 swTempInv; /**< Unit: 0.1 C */
  90. } McStatusPu;
  91. /**
  92. * @brief 电机及逆变器状态结构体
  93. *
  94. */
  95. typedef struct McStatus
  96. {
  97. McStatusNamed Named; /**< 有名值 */
  98. McStatusPu Pu; /**< 标幺值 */
  99. McPuBase *Base; /**< 基值指针 */
  100. } McStatus;
  101. void McStatusInit(McStatus *s, McPuBase *base);
  102. /**
  103. * @brief 从电机状态标幺值计算有名值
  104. *
  105. * @param s 电机状态结构体
  106. */
  107. void McStatusSyncNamed(McStatus *s);
  108. /**
  109. * @brief 从电机状有名值计算标幺值
  110. *
  111. * @param s 电机状态结构体
  112. */
  113. void McStatusSyncPu(McStatus *s);
  114. #ifdef __cplusplus
  115. }
  116. #endif // __cplusplus
  117. #endif