acr.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: acr.h
  4. Partner Filename: acr.c
  5. Description: The header file of acr.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. Miaozhou create this file;
  15. ************************************************************************/
  16. /************************************************************************
  17. Beginning of File, do not put anything above here except notes
  18. Compiler Directives:
  19. *************************************************************************/
  20. #ifndef ACR_H
  21. #define ACR_H
  22. #include "typedefine.h"
  23. #include "macroequ.h"
  24. /************************************************************************
  25. Compiler Directives (N/A)
  26. *************************************************************************/
  27. #ifdef _ACR_C_
  28. #define _ACR_EXT
  29. #else
  30. #define _ACR_EXT extern
  31. #endif
  32. /************************************************************************
  33. Definitions & Macros
  34. *************************************************************************/
  35. #define ACR_CURPI_COF_DEFAULT \
  36. { \
  37. 0, 0, 0 \
  38. } // Default value of ACR_CURPI_COF
  39. #define ACR_CURPI_OUT_DEFAULT \
  40. { \
  41. 0, 0, 0, 0 \
  42. } // Default value of ACR_CURPI_OUT
  43. #define ACR_UDQDCP_COF_DEFAULT \
  44. { \
  45. 0, 0, 0 \
  46. } // Default value of ACR_UDQDCP_COF
  47. #define ACR_UDQDCP_OUT_DEFAULT \
  48. { \
  49. 0, 0 \
  50. } // Default value of ACR_UDQDCP_OUT
  51. /************************************************************************
  52. TypeDefs & Structure Defines
  53. *************************************************************************/
  54. typedef struct
  55. { // Input of " acr_voCurPI "
  56. SWORD swCurRefPu; // Q14, Current reference
  57. SWORD swCurFdbPu; // Q14, Current feedback
  58. SWORD swUmaxPu; // Q12, Voltage output maximum limit
  59. SWORD swUminPu; // Q12, Voltage output minimum limit
  60. } ACR_CURPI_IN;
  61. typedef struct
  62. { // Output of " acr_voCurPI "
  63. SWORD swURefPu; // Q14, Output voltage feedback
  64. SLONG slURefPu; // Q26, Output voltage feedback
  65. SWORD swErrZ1Pu; // Q14, Error recorder
  66. SLONG slURefRemPu; // Q26, Remainder Output
  67. } ACR_CURPI_OUT;
  68. typedef struct
  69. { // Input of " acr_voCurPI "
  70. UWORD uwKpPu; // Q12, Current coefficient of proportion
  71. UWORD uwKitPu; // Q15, Current coefficient of Integral
  72. UWORD uwRaPu; // Q15, Active Resistance
  73. } ACR_CURPI_COF;
  74. /*************************************************************************/
  75. typedef struct
  76. { // Input of " acr_voCurPI "
  77. UWORD uwUbVt; // unit: 0.1V, Voltage base
  78. UWORD uwIbAp; // unit: 0.01A, Current base
  79. UWORD uwFbHz; // unit: Hz, Frequency base
  80. UWORD uwLHm; // unit: mH, Motor phase inductance
  81. UWORD uwMtRsOh; // unit: Ohm, Motor phase resistance
  82. UWORD uwFTbcHz; // TBC frequency
  83. UWORD uwRaCoef; // Coefficient of Active Resistance
  84. UWORD uwWicHz; // unit: Hz, Current loop frequency bandwidth
  85. } ACR_CURPI_COFIN;
  86. /************************************************************************/
  87. typedef struct
  88. { // Input of "acr_voUdqDcp"
  89. SWORD swWsPu; // Q15, Stator electrical frequency
  90. SWORD swIdRefPu; // Q14, D axis current reference
  91. SWORD swIqRefPu; // Q14, Q axis current reference
  92. SWORD swUdqLimPu; // Q14, UDQ Limit
  93. } ACR_UDQDCP_IN;
  94. typedef struct
  95. { // Output of "acr_voUdqDcp"
  96. SWORD swUdPu; // Q12, D axis voltage
  97. SWORD swUqPu; // Q12, Q axis voltage
  98. } ACR_UDQDCP_OUT;
  99. typedef struct
  100. { // Input of "acr_voUdqDcp"
  101. UWORD uwLdPu; // Q10, D axis inductance
  102. UWORD uwLqPu; // Q10, Q axis inductance
  103. UWORD uwFluxFPu; // Q12, FluxF
  104. } ACR_UDQDCP_COF;
  105. /************************************************************************/
  106. typedef struct
  107. { // Input of "acr_voUdqDcp"
  108. UWORD uwLdHm; // unit: 0.01mH, D axis inductance
  109. UWORD uwLqHm; // unit: 0.01mH, Q axis inductance
  110. UWORD uwMtFlxWb; // unit: 0.01mWb, FluxF
  111. UWORD uwUbVt; // unit: 0.1V, Voltage base
  112. UWORD uwFbHz; // unit: Hz, Frequency base
  113. UWORD uwIbAp; // unit: 0.01A, Current base
  114. } ACR_UDQDCP_COFIN;
  115. /*************************************************************************/
  116. /************************************************************************
  117. Exported Variables:
  118. *************************************************************************/
  119. /************************************************************************
  120. Exported Variables
  121. *************************************************************************/
  122. #ifdef _ACR_C_
  123. _ACR_EXT ACR_CURPI_OUT acr_stCurIdPIOut = ACR_CURPI_OUT_DEFAULT;
  124. _ACR_EXT ACR_CURPI_OUT acr_stCurIqPIOut = ACR_CURPI_OUT_DEFAULT;
  125. _ACR_EXT ACR_CURPI_COF acr_stCurIdPICoef = ACR_CURPI_COF_DEFAULT;
  126. _ACR_EXT ACR_CURPI_COF acr_stCurIqPICoef = ACR_CURPI_COF_DEFAULT;
  127. _ACR_EXT ACR_UDQDCP_OUT acr_stUdqDcpOut = ACR_UDQDCP_OUT_DEFAULT;
  128. _ACR_EXT ACR_UDQDCP_COF acr_stUdqDcpCoef = ACR_UDQDCP_COF_DEFAULT;
  129. #else
  130. _ACR_EXT ACR_CURPI_OUT acr_stCurIdPIOut;
  131. _ACR_EXT ACR_CURPI_OUT acr_stCurIqPIOut;
  132. _ACR_EXT ACR_CURPI_COF acr_stCurIdPICoef;
  133. _ACR_EXT ACR_CURPI_COF acr_stCurIqPICoef;
  134. _ACR_EXT ACR_UDQDCP_OUT acr_stUdqDcpOut;
  135. _ACR_EXT ACR_UDQDCP_COF acr_stUdqDcpCoef;
  136. #endif
  137. /************************************************************************
  138. Ram Allocation
  139. *************************************************************************/
  140. #define acr_stCurIdPIIn (*(ACR_CURPI_IN *)TBC_BUFFER)
  141. #define acr_stCurIqPIIn (*(ACR_CURPI_IN *)TBC_BUFFER)
  142. #define acr_stCurIdPICoefIn (*(ACR_CURPI_COFIN *)MN_BUFFER)
  143. #define acr_stCurIqPICoefIn (*(ACR_CURPI_COFIN *)MN_BUFFER)
  144. #define acr_stUdqDcpCoefIn (*(ACR_UDQDCP_COFIN *)MN_BUFFER)
  145. #define acr_stUdqDcpIn (*(ACR_UDQDCP_IN *)TBC_BUFFER)
  146. /************************************************************************
  147. Exported Function Call Prototypes
  148. *************************************************************************/
  149. #ifdef _ACR_C_
  150. _ACR_EXT void acr_voCurPI(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out);
  151. _ACR_EXT void acr_voCurPI22(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out);
  152. _ACR_EXT void acr_voCurPICoef(ACR_CURPI_COFIN *in, ACR_CURPI_COF *out);
  153. _ACR_EXT void acr_voCurPIInit(void);
  154. _ACR_EXT void acr_voUdqDcp(ACR_UDQDCP_IN *in, ACR_UDQDCP_COF *coef, ACR_UDQDCP_OUT *out);
  155. _ACR_EXT void acr_voUdqDcpCoef(ACR_UDQDCP_COFIN *in, ACR_UDQDCP_COF *out);
  156. _ACR_EXT void acr_voUdqDcpInit(void);
  157. #else
  158. _ACR_EXT void acr_voCurPI(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out);
  159. _ACR_EXT void acr_voCurPI22(ACR_CURPI_IN *in, ACR_CURPI_COF *coef, ACR_CURPI_OUT *out);
  160. _ACR_EXT void acr_voCurPICoef(ACR_CURPI_COFIN *in, ACR_CURPI_COF *out);
  161. _ACR_EXT void acr_voCurPIInit(void);
  162. _ACR_EXT void acr_voUdqDcp(ACR_UDQDCP_IN *in, ACR_UDQDCP_COF *coef, ACR_UDQDCP_OUT *out);
  163. _ACR_EXT void acr_voUdqDcpCoef(ACR_UDQDCP_COFIN *in, ACR_UDQDCP_COF *out);
  164. _ACR_EXT void acr_voUdqDcpInit(void);
  165. #endif
  166. /************************************************************************
  167. Flag Define (N/A)
  168. *************************************************************************/
  169. #endif
  170. /************************************************************************
  171. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  172. All rights reserved.
  173. *************************************************************************
  174. End of this File (EOF):
  175. Do not put anything after this part!
  176. *************************************************************************/