observer.h 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: obs.h
  4. Partner Filename: obs.c
  5. Description: The header file of obs.c
  6. Complier: IAR Embedded Workbench for ARM 7.80, IAR Systems.
  7. CPU TYPE : GD32F3x0
  8. *************************************************************************
  9. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  10. All rights reserved.
  11. *************************************************************************
  12. *************************************************************************
  13. Revising History (ECL of this file):
  14. ************************************************************************/
  15. /************************************************************************
  16. Beginning of File, do not put anything above here except notes
  17. Compiler Directives:
  18. *************************************************************************/
  19. #ifndef OBSERVER_H
  20. #define OBSERVER_H
  21. #include "typedefine.h"
  22. #include "crdnt.h"
  23. #include "mathtool.h"
  24. /************************************************************************
  25. Compiler Directives (N/A)
  26. *************************************************************************/
  27. #ifdef _OBSERVER_C_
  28. #define _OBSERVER_EXT
  29. #else
  30. #define _OBSERVER_EXT extern
  31. #endif
  32. /************************************************************************
  33. Definitions & Macros
  34. *************************************************************************/
  35. #define OBS_COF_DEFAULT \
  36. { \
  37. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  38. } // Default value of OBS_COF
  39. #define OBS_OUT_DEFAULT \
  40. { \
  41. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  42. } // Default value of OBS_OUT
  43. #define OBS_FLUXPI_COF_DEFAULT \
  44. { \
  45. 0, 0 \
  46. } // Default value of OBS_FLUXPI_COF
  47. #define OBS_FLUXPI_OUT_DEFAULT \
  48. { \
  49. 0, 0, 0 \
  50. } // Default value of OBS_FLUXPI_OUT
  51. #define V_BASE 480 // 0.1V 100mv
  52. #define I_BASE 6000 // 0.01A
  53. #define F_BASE 700 // Hz
  54. /************************************************************************
  55. Typedefs & Structure Defines
  56. *************************************************************************/
  57. typedef struct
  58. {
  59. UWORD uwFreqTbcHz; // Real Value, Unit:Hz, Current loop control cycle
  60. UWORD uwRsOm; // Real Value, unit: 0.01Ohm, Phase resistance
  61. UWORD uwLdHm; // Real Value, unit: 0.01mH, D axis inductance
  62. UWORD uwLqHm; // Real Value, unit: 0.01mH, Q axis inductance
  63. UWORD uwFluxWb; // Real Value, unit: 0.01mWb, Flux linkage
  64. UWORD uwFluxDampingRatio; // Q12, Flux PI regulator damping ratio
  65. UWORD uwFluxCrossFreqHz; // Q8, Flux PI regulator cross frequency
  66. UWORD uwSpdPllMcoef; // Q0, PLL damping factor
  67. UWORD uwSpdPllWvcHz; // Q10, PLL bandwidth
  68. } OBSERVER_COF_IN;
  69. typedef struct
  70. {
  71. UWORD uwIbAp; // Real Value, Unit:0.01A frequency base
  72. UWORD uwVbVt; // Real Value, Unit:0.1V frequency base
  73. UWORD uwFbHz; // Real Value, Unit:Hz frequency base
  74. UWORD uwRbOm; // Real Value, unit: 0.01Ohm, Resistance base
  75. UWORD uwLbHm; // Real Value, unit: 0.01mH, Inductance base
  76. UWORD uwFluxbWb; // Real Value, unit: 0.01mWb, Flux linkage base
  77. UWORD uwRsPu; // Q15, Phase resistance
  78. UWORD uwLdPu; // Q10, D axis inductance
  79. UWORD uwLqPu; // Q10, Q axis inductance
  80. UWORD uwFluxPPu; // Q12, Flux linkage
  81. UWORD uwCurTsPu; // Q15, Current loop control cycle
  82. UWORD uwCurTs; // Q10, TBC time
  83. UWORD uwSpdPllKpPu; // Q14, PLL Kp
  84. UWORD uwSpdPllKiPu; // Q14, PLL Kit
  85. UWORD uwFluxKpPu; // Q18, Flux PI regulator Kp
  86. UWORD uwFluxKitPu; // Q28, Flux PI regulator Kit
  87. } OBSERVER_COF;
  88. typedef struct
  89. {
  90. SWORD swUalpha; // Q14, Stationary alpha-axis stator voltage
  91. SWORD swUbeta; // Q14, Stationary beta-axis stator voltage
  92. SWORD swIalpha; // Q14, Stationary alpha-axis stator current
  93. SWORD swIbeta; // Q14, Stationary beta-axis stator current
  94. UWORD uwVdc; // Q14, unit:Pu, DC bus voltage
  95. } OBSERVER_IN;
  96. typedef struct
  97. {
  98. SLONG slFluxAlphaPu; // Q27, Output stationary alfa-axis stator flux
  99. SWORD swFluxAlphaPu; // Q10, Output stationary alfa-axis stator flux
  100. SLONG slFluxBetaPu; // Q27, Output stationary beta-axis stator flux
  101. SWORD swFluxBetaPu; // Q10, Output stationary beta-axis stator flux
  102. SLONG slElecThetaPu; // Q29, Output motor electrical position
  103. UWORD uwElecThetaPu; // Q15, Output motor electrical position
  104. SLONG slElecFreqPu; // Q29, Output electrical speed reference
  105. SWORD swElecFreqPu; // Q15, Output motor electrical speed reference
  106. SWORD swActiveFluxPu; // Q10, Output active flux
  107. } OBSERVER_OUT;
  108. typedef struct
  109. {
  110. SWORD swRefPu; // Q10, Flux PI regulator I reference
  111. SWORD swFdbPu; // Q10, Flux PI regulator I feedback
  112. SWORD swUmaxPu; // Q14, Flux PI regulator voltage output maximum limit
  113. SWORD swUminPu; // Q14, Flux PI regulator voltage output minimum limit
  114. } OBSERVER_FLUXPI_IN;
  115. typedef struct
  116. {
  117. UWORD uwFluxKpPu; // Q18, Flux PI regulator Kp
  118. UWORD uwFluxKitPu; // Q28, Flux PI regulator Kit
  119. } OBSERVER_FLUXPI_COF;
  120. typedef struct
  121. {
  122. SWORD swURefPu; // Q14, Flux PI regulator output voltage
  123. SLONG slURefPu; // Q28, Flux PI regulator output voltage
  124. SWORD swErrZ1Pu; // Q10, Flux PI regulator error recorder
  125. } OBSERVER_FLUXPI_OUT;
  126. /************************************************************************
  127. Constant Table
  128. *************************************************************************/
  129. /************************************************************************
  130. Exported Variables
  131. *************************************************************************/
  132. #ifdef _OBSERVER_C_
  133. _OBSERVER_EXT OBSERVER_IN observer_stObsCalcIn;
  134. _OBSERVER_EXT OBSERVER_COF_IN observer_stObsCoefIn;
  135. _OBSERVER_EXT OBSERVER_COF observer_stObsCoefPu = OBS_COF_DEFAULT;
  136. _OBSERVER_EXT OBSERVER_OUT observer_stObsOutPu;
  137. _OBSERVER_EXT OBSERVER_FLUXPI_OUT observer_stFluxAlphaPIOut = OBS_FLUXPI_OUT_DEFAULT;
  138. _OBSERVER_EXT OBSERVER_FLUXPI_OUT observer_stFluxBetaPIOut = OBS_FLUXPI_OUT_DEFAULT;
  139. _OBSERVER_EXT OBSERVER_FLUXPI_COF observer_stFluxAlphaPICoef = OBS_FLUXPI_COF_DEFAULT;
  140. _OBSERVER_EXT OBSERVER_FLUXPI_COF observer_stFluxBetaPICoef = OBS_FLUXPI_COF_DEFAULT;
  141. _OBSERVER_EXT CRD_PARK_OUT observer_stFluxParkPu = OBS_FLUXPI_COF_DEFAULT;
  142. _OBSERVER_EXT CRD_IPARK_OUT observer_stFluxIParkPu = OBS_FLUXPI_COF_DEFAULT;
  143. _OBSERVER_EXT CRD_PARK_IN observer_stParkInPu;
  144. _OBSERVER_EXT CRD_IPARK_IN observer_stIParkInPu;
  145. _OBSERVER_EXT OBSERVER_FLUXPI_IN observer_stFluxAlphaPIIn;
  146. _OBSERVER_EXT OBSERVER_FLUXPI_IN observer_stFluxBetaPIIn;
  147. #else
  148. _OBSERVER_EXT OBSERVER_IN observer_stObsCalcIn;
  149. _OBSERVER_EXT OBSERVER_COF_IN observer_stObsCoefIn;
  150. _OBSERVER_EXT OBSERVER_COF observer_stObsCoefPu;
  151. _OBSERVER_EXT OBSERVER_OUT observer_stObsOutPu;
  152. _OBSERVER_EXT OBSERVER_FLUXPI_OUT observer_stFluxAlphaPIOut;
  153. _OBSERVER_EXT OBSERVER_FLUXPI_OUT observer_stFluxBetaPIOut;
  154. _OBSERVER_EXT OBSERVER_FLUXPI_COF observer_stFluxAlphaPICoef;
  155. _OBSERVER_EXT OBSERVER_FLUXPI_COF observer_stFluxBetaPICoef;
  156. _OBSERVER_EXT CRD_PARK_OUT observer_stFluxParkPu;
  157. _OBSERVER_EXT CRD_IPARK_OUT observer_stFluxIParkPu;
  158. _OBSERVER_EXT CRD_PARK_IN observer_stParkInPu;
  159. _OBSERVER_EXT CRD_IPARK_IN observer_stIParkInPu;
  160. _OBSERVER_EXT OBSERVER_FLUXPI_IN observer_stFluxAlphaPIIn;
  161. _OBSERVER_EXT OBSERVER_FLUXPI_IN observer_stFluxBetaPIIn;
  162. #endif
  163. /************************************************************************
  164. RAM ALLOCATION (N/A)
  165. *************************************************************************/
  166. /************************************************************************
  167. Exported Function Call Prototypes
  168. *************************************************************************/
  169. #ifdef _OBSERVER_C_
  170. _OBSERVER_EXT void observer_voObsInit(void);
  171. _OBSERVER_EXT void observer_voObsCoef(OBSERVER_COF_IN *in, OBSERVER_COF *out);
  172. _OBSERVER_EXT void observer_voFluxPI(OBSERVER_FLUXPI_IN *in, OBSERVER_FLUXPI_COF *coef, OBSERVER_FLUXPI_OUT *out);
  173. _OBSERVER_EXT void observer_voObsCalc(OBSERVER_IN *IN, OBSERVER_COF *COF, OBSERVER_OUT *OUT);
  174. #else
  175. _OBSERVER_EXT void observer_voObsInit(void);
  176. _OBSERVER_EXT void observer_voObsCoef(OBSERVER_COF_IN *in, OBSERVER_COF *out);
  177. _OBSERVER_EXT void observer_voObsCalc(OBSERVER_IN *IN, OBSERVER_COF *COF, OBSERVER_OUT *OUT);
  178. #endif
  179. /************************************************************************
  180. Flag Define (N/A)
  181. *************************************************************************/
  182. /***********************************************************************/
  183. #endif
  184. /************************************************************************
  185. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  186. All rights reserved.
  187. *************************************************************************
  188. End of this File (EOF)!
  189. Do not put anything after this part!
  190. *************************************************************************/