spdctrmode.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: spdctrmode.c
  4. Partner Filename: spdctrmode.c
  5. Description: The header file of spdctrmode.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 SPDCTRMODE_H
  20. #define SPDCTRMODE_H
  21. #include "spdctrFSM.h"
  22. #include "mathtool.h"
  23. #include "asr.h"
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif // __cplusplus
  27. /************************************************************************
  28. Compiler Directives (N/A)
  29. *************************************************************************/
  30. #ifdef _SPDCTRMODE_C_
  31. #define _SPDCTRMODE_EXT
  32. #else
  33. #define _SPDCTRMODE_EXT extern
  34. #endif
  35. /************************************************************************
  36. Definitions & Macros
  37. *************************************************************************/
  38. #define LPF_OUT_DEFAULT \
  39. { \
  40. 0, 0 \
  41. } // Default value of LPF_OUT
  42. /************************************************************************
  43. TypeDefs & Structure defines (N/A)
  44. *************************************************************************/
  45. /************************************************************************
  46. Constant Table
  47. *************************************************************************/
  48. /************************************************************************
  49. Exported Function Call Prototypes
  50. *************************************************************************/
  51. _SPDCTRMODE_EXT void scm_voSpdCtrMdInit(void);
  52. _SPDCTRMODE_EXT void scm_voSpdCtrMdCoef(void);
  53. _SPDCTRMODE_EXT void scm_voSpdCtrMdTbs(void);
  54. _SPDCTRMODE_EXT void scm_voSpdCtrMdUpTbc(void);
  55. _SPDCTRMODE_EXT void scm_voSpdCtrMdDownTbc(void);
  56. _SPDCTRMODE_EXT void scm_voTorqCtrMdTbs(void);
  57. _SPDCTRMODE_EXT void scm_voLimit_Power(UWORD uwBikeGear, UWORD *uwCurLim, UBYTE *ucCurrentGain);
  58. /************************************************************************
  59. Exported Variables
  60. *************************************************************************/
  61. #ifdef _SPDCTRMODE_C_
  62. _SPDCTRMODE_EXT SWORD swCurRefrompu = 0;
  63. _SPDCTRMODE_EXT SPD_STATE_HOOK curSpeed_state;
  64. _SPDCTRMODE_EXT UWORD scm_uwCradleEn = 0;
  65. _SPDCTRMODE_EXT SWORD scm_swCradleThetaPu = 0;
  66. _SPDCTRMODE_EXT SWORD scm_swCradleThetaCnt = 0;
  67. _SPDCTRMODE_EXT SWORD scm_swCradleThetaPuZ1 = 0;
  68. _SPDCTRMODE_EXT SWORD scm_swCradleThetaErrPu = 0;
  69. _SPDCTRMODE_EXT SLONG scm_slCradleThetaPu = 0;
  70. _SPDCTRMODE_EXT SLONG scm_slCradleSpdRef = 0;
  71. _SPDCTRMODE_EXT SWORD scm_swCradleTurns = 0;
  72. _SPDCTRMODE_EXT SWORD scm_swCradleTurns0 = 11;
  73. _SPDCTRMODE_EXT SWORD scm_swCradleTurns1 = 3;
  74. _SPDCTRMODE_EXT UWORD scm_uwCradleTheta0 = 0;
  75. _SPDCTRMODE_EXT UWORD scm_uwCradleTheta1 = 0;
  76. _SPDCTRMODE_EXT SLONG scm_slCradleTheta1Pu = 0;
  77. _SPDCTRMODE_EXT SWORD scm_swCradleDrumTheta = 0;
  78. _SPDCTRMODE_EXT SWORD scm_swCradleDrumThetaMax = -1000;
  79. _SPDCTRMODE_EXT SWORD scm_swCradleDrumThetaMin = 1000;
  80. _SPDCTRMODE_EXT SWORD scm_swCradleDrumTheta1 = 0;
  81. _SPDCTRMODE_EXT SWORD scm_swCradleDrumThetaAve = 0;
  82. _SPDCTRMODE_EXT UWORD scm_uwCradleCnt = 0;
  83. _SPDCTRMODE_EXT UWORD scm_uwCradleFlag = 0;
  84. _SPDCTRMODE_EXT SWORD scm_swCradleSpdRef = 0;
  85. _SPDCTRMODE_EXT UWORD scm_uwCradleStep = 0;
  86. _SPDCTRMODE_EXT UWORD scm_uwCradleCnt1 = 0;
  87. _SPDCTRMODE_EXT UWORD scm_uwAcrLimCof = 0x93CD; // Q15,Q15(2/(sqrt(3))-->0x93CD
  88. _SPDCTRMODE_EXT UWORD scm_uwUdcpLimCof = 18918; // 0x5555; //Q15,Q15(2/3)-->0x5555
  89. _SPDCTRMODE_EXT UWORD scm_uwLqPu = 0;
  90. _SPDCTRMODE_EXT SWORD scm_swSpdRefPu = 0;
  91. _SPDCTRMODE_EXT SWORD scm_swUalphaPu = 0; // Q14
  92. _SPDCTRMODE_EXT SWORD scm_swUbetaPu = 0; // Q14
  93. _SPDCTRMODE_EXT SWORD scm_swSpdFbkCompPu = 0;
  94. _SPDCTRMODE_EXT LPF_OUT scm_stIqLoadLpf = LPF_OUT_DEFAULT;
  95. _SPDCTRMODE_EXT LPF_OUT scm_stIdFbkLpf = LPF_OUT_DEFAULT; // Id feedback LPF
  96. _SPDCTRMODE_EXT LPF_OUT scm_stIqFbkLpf = LPF_OUT_DEFAULT; // Iq feedback LPF
  97. _SPDCTRMODE_EXT SWORD scm_swIdFdbLpfPu = 0;
  98. _SPDCTRMODE_EXT SWORD scm_swIqFdbLpfPu = 0;
  99. _SPDCTRMODE_EXT SLONG scm_slIdRefPu = 0; // Q29
  100. _SPDCTRMODE_EXT SLONG scm_slIqRefPu = 0; // Q29
  101. _SPDCTRMODE_EXT SWORD scm_swIdRefPu = 0; // Q14
  102. _SPDCTRMODE_EXT SWORD scm_swIqRefPu = 0; // Q14
  103. _SPDCTRMODE_EXT UWORD scm_uwAngRefPu = 0; // Q15
  104. _SPDCTRMODE_EXT UWORD scm_uwAngParkPu = 0; // Q15
  105. _SPDCTRMODE_EXT UWORD scm_uwAngIParkPu = 0; // Q15
  106. _SPDCTRMODE_EXT SWORD scm_swRotateDir = 0; // Direction of motor rotate //Iq feedback LPF
  107. _SPDCTRMODE_EXT UWORD scm_uwAngManuPu = 0; // Q15, Angle given manually
  108. _SPDCTRMODE_EXT SLONG scm_slAngManuPu = 0;
  109. _SPDCTRMODE_EXT SLONG scm_slDragSpdPu = 0; // Q15, Drag speed
  110. _SPDCTRMODE_EXT SLONG scm_slDragSpdRefPu = 0; // Q29, intermediate Drag speed
  111. _SPDCTRMODE_EXT BOOL scm_blCurSwitchOvrFlg = FALSE; // Current switch over flag
  112. _SPDCTRMODE_EXT BOOL scm_blAngSwitchOvrFlg = FALSE; // Angle switch over flag
  113. _SPDCTRMODE_EXT UWORD scm_uwAngSwitchK = 0; // Angle switch weight value
  114. _SPDCTRMODE_EXT SWORD scm_swMotorPwrInWt = 0; // unit: w, Input power of motor
  115. _SPDCTRMODE_EXT BOOL scm_blCoefUpdateFlg = FALSE; // Coefficient update flag
  116. _SPDCTRMODE_EXT LPF_OUT scm_stSpdFbkLpf = LPF_OUT_DEFAULT; // Speed feedback LPF
  117. _SPDCTRMODE_EXT UWORD scm_uwSpdFbkLpfAbsPu = 0; // Q15, Speed feedback LPF absolute
  118. _SPDCTRMODE_EXT SWORD scm_swMotorPwrInPu = 0; // Q15, Input power of motor
  119. _SPDCTRMODE_EXT LPF_OUT scm_stMotoPwrInLpf = LPF_OUT_DEFAULT; // Input power of motor after LPF
  120. _SPDCTRMODE_EXT LPF_OUT scm_stPCBTempLpf = LPF_OUT_DEFAULT; // Input power of motor after LPF
  121. _SPDCTRMODE_EXT SWORD scm_swMotorPwrInLpfWt = 0; // unit: 0.1w, Input power of motor after LPF
  122. _SPDCTRMODE_EXT UWORD scm_uwMotorPwrInAvgPu = 0; // Q15, Input power of motor after average filter
  123. _SPDCTRMODE_EXT BOOL scm_blDtcEnFlg = FALSE; // Dead band compansation enable flag
  124. _SPDCTRMODE_EXT BOOL scm_blOobEnFlg = FALSE; // OOB calculate enable flag
  125. _SPDCTRMODE_EXT SWORD scm_swUdRefPu = 0;
  126. _SPDCTRMODE_EXT SWORD scm_swUqRefPu = 0;
  127. _SPDCTRMODE_EXT SWORD scm_swUalphaFbkPu = 0;
  128. _SPDCTRMODE_EXT SWORD scm_swUbetaFbkPu = 0;
  129. _SPDCTRMODE_EXT SWORD scm_swUalphaRefPu = 0;
  130. _SPDCTRMODE_EXT SWORD scm_swUbetaRefPu = 0;
  131. _SPDCTRMODE_EXT SWORD scm_swUalphaCompPu = 0;
  132. _SPDCTRMODE_EXT SWORD scm_swUbetaCompPu = 0;
  133. _SPDCTRMODE_EXT UWORD scm_uwHfiAngZ1Pu = 0;
  134. _SPDCTRMODE_EXT SLONG scm_slAngSumPu = 0;
  135. _SPDCTRMODE_EXT BOOL scm_blAngSumOvrFlg = FALSE;
  136. _SPDCTRMODE_EXT UWORD scm_uwStartMdSw = 0;
  137. _SPDCTRMODE_EXT UWORD scm_uwStartMd = 0;
  138. _SPDCTRMODE_EXT UWORD scm_uwInitPosMd = 0;
  139. _SPDCTRMODE_EXT UWORD scm_uwInitPosMdSw = 0;
  140. _SPDCTRMODE_EXT SWORD scm_swUdPu = 0;
  141. _SPDCTRMODE_EXT SWORD scm_swUqPu = 0;
  142. _SPDCTRMODE_EXT SWORD scm_swMcPgCW = 0;
  143. _SPDCTRMODE_EXT SWORD scm_swMcPgCWPre = 0;
  144. _SPDCTRMODE_EXT UWORD scm_uwZSAEn = 0;
  145. _SPDCTRMODE_EXT UWORD scm_uwStupThetaPu = 0;
  146. _SPDCTRMODE_EXT UWORD scm_uwHfiOvrCnt = 0;
  147. _SPDCTRMODE_EXT SWORD scm_swVsLimPu = 0;
  148. _SPDCTRMODE_EXT SWORD scm_swVsDcpLimPu = 0;
  149. _SPDCTRMODE_EXT SWORD scm_swUdLimPu = 0;
  150. _SPDCTRMODE_EXT SWORD scm_swUqLimPu = 0;
  151. _SPDCTRMODE_EXT ULONG scm_ulCloseCt = 0;
  152. _SPDCTRMODE_EXT BOOL scm_blCVBFlg = FALSE;
  153. _SPDCTRMODE_EXT BOOL scm_blCVBIdFlg = FALSE;
  154. _SPDCTRMODE_EXT UWORD scm_uwRunMdSw = 0;
  155. _SPDCTRMODE_EXT ULONG scm_ulRunMdSwCt = 0;
  156. _SPDCTRMODE_EXT BOOL scm_StartUpOvrFlg = FALSE; // Start up over flag
  157. _SPDCTRMODE_EXT SWORD scm_swStopPWMOffFlag = 0;
  158. _SPDCTRMODE_EXT SLONG scm_slAngErrPu = 0;
  159. #else
  160. _SPDCTRMODE_EXT SWORD swCurRefrompu;
  161. _SPDCTRMODE_EXT SPD_STATE_HOOK curSpeed_state;
  162. _SPDCTRMODE_EXT UWORD scm_uwCradleEn;
  163. _SPDCTRMODE_EXT UWORD scm_uwLqPu;
  164. _SPDCTRMODE_EXT SWORD scm_swSpdRefPu;
  165. _SPDCTRMODE_EXT SWORD scm_swUalphaPu;
  166. _SPDCTRMODE_EXT SWORD scm_swUbetaPu;
  167. _SPDCTRMODE_EXT SWORD scm_swSpdFbkCompPu;
  168. _SPDCTRMODE_EXT LPF_OUT scm_stIqLoadLpf;
  169. _SPDCTRMODE_EXT LPF_OUT scm_stIdFbkLpf;
  170. _SPDCTRMODE_EXT LPF_OUT scm_stIqFbkLpf;
  171. _SPDCTRMODE_EXT SWORD scm_swIdFdbLpfPu;
  172. _SPDCTRMODE_EXT SWORD scm_swIqFdbLpfPu;
  173. _SPDCTRMODE_EXT SLONG scm_slIdRefPu;
  174. _SPDCTRMODE_EXT SLONG scm_slIqRefPu;
  175. _SPDCTRMODE_EXT SWORD scm_swIdRefPu;
  176. _SPDCTRMODE_EXT SWORD scm_swIqRefPu;
  177. _SPDCTRMODE_EXT UWORD scm_uwAngRefPu;
  178. _SPDCTRMODE_EXT UWORD scm_uwAngParkPu;
  179. _SPDCTRMODE_EXT UWORD scm_uwAngIParkPu;
  180. _SPDCTRMODE_EXT SWORD scm_swRotateDir;
  181. _SPDCTRMODE_EXT UWORD scm_uwAngManuPu;
  182. _SPDCTRMODE_EXT SLONG scm_slAngManuPu;
  183. _SPDCTRMODE_EXT SLONG scm_slDragSpdPu;
  184. _SPDCTRMODE_EXT SLONG scm_slDragSpdRefPu;
  185. _SPDCTRMODE_EXT BOOL scm_blCurSwitchOvrFlg;
  186. _SPDCTRMODE_EXT BOOL scm_blAngSwitchOvrFlg;
  187. _SPDCTRMODE_EXT UWORD scm_uwAngSwitchK;
  188. _SPDCTRMODE_EXT SWORD scm_swMotorPwrInWt;
  189. _SPDCTRMODE_EXT BOOL scm_blCoefUpdateFlg;
  190. _SPDCTRMODE_EXT LPF_OUT scm_stSpdFbkLpf;
  191. _SPDCTRMODE_EXT UWORD scm_uwSpdFbkLpfAbsPu;
  192. _SPDCTRMODE_EXT SWORD scm_swMotorPwrInPu;
  193. _SPDCTRMODE_EXT LPF_OUT scm_stMotoPwrInLpf;
  194. _SPDCTRMODE_EXT LPF_OUT scm_stPCBTempLpf;
  195. _SPDCTRMODE_EXT SWORD scm_swMotorPwrInLpfWt;
  196. _SPDCTRMODE_EXT UWORD scm_uwMotorPwrInAvgPu;
  197. _SPDCTRMODE_EXT BOOL scm_blDtcEnFlg;
  198. _SPDCTRMODE_EXT BOOL scm_blOobEnFlg;
  199. _SPDCTRMODE_EXT SWORD scm_swUdRefPu;
  200. _SPDCTRMODE_EXT SWORD scm_swUqRefPu;
  201. _SPDCTRMODE_EXT SWORD scm_swUalphaFbkPu;
  202. _SPDCTRMODE_EXT SWORD scm_swUbetaFbkPu;
  203. _SPDCTRMODE_EXT SWORD scm_swUalphaRefPu;
  204. _SPDCTRMODE_EXT SWORD scm_swUbetaRefPu;
  205. _SPDCTRMODE_EXT SWORD scm_swUalphaCompPu;
  206. _SPDCTRMODE_EXT SWORD scm_swUbetaCompPu;
  207. _SPDCTRMODE_EXT UWORD scm_uwHfiAngZ1Pu;
  208. _SPDCTRMODE_EXT SLONG scm_slAngSumPu;
  209. _SPDCTRMODE_EXT BOOL scm_blAngSumOvrFlg;
  210. _SPDCTRMODE_EXT UWORD scm_uwStartMdSw;
  211. _SPDCTRMODE_EXT UWORD scm_uwStartMd;
  212. _SPDCTRMODE_EXT UWORD scm_uwInitPosMd;
  213. _SPDCTRMODE_EXT UWORD scm_uwInitPosMdSw;
  214. _SPDCTRMODE_EXT SWORD scm_swUdPu;
  215. _SPDCTRMODE_EXT SWORD scm_swUqPu;
  216. _SPDCTRMODE_EXT SWORD scm_swMcPgCW;
  217. _SPDCTRMODE_EXT SWORD scm_swMcPgCWPre;
  218. _SPDCTRMODE_EXT UWORD scm_uwZSAEn;
  219. _SPDCTRMODE_EXT UWORD scm_uwStupThetaPu;
  220. _SPDCTRMODE_EXT UWORD scm_uwHfiOvrCnt;
  221. _SPDCTRMODE_EXT SWORD scm_swVsLimPu;
  222. _SPDCTRMODE_EXT SWORD scm_swVsDcpLimPu;
  223. _SPDCTRMODE_EXT SWORD scm_swUdLimPu;
  224. _SPDCTRMODE_EXT SWORD scm_swUqLimPu;
  225. _SPDCTRMODE_EXT ULONG scm_ulCloseCt;
  226. _SPDCTRMODE_EXT BOOL scm_blCVBFlg;
  227. _SPDCTRMODE_EXT BOOL scm_blCVBIdFlg;
  228. _SPDCTRMODE_EXT BOOL scm_StartUpOvrFlg; // Start up over flag
  229. _SPDCTRMODE_EXT SWORD scm_swStopPWMOffFlag;
  230. #endif
  231. /************************************************************************
  232. RAM ALLOCATION (N/A)
  233. *************************************************************************/
  234. /************************************************************************
  235. Local Function Call Prototypes (N/A)
  236. *************************************************************************/
  237. /************************************************************************
  238. Flag Define (N/A)
  239. *************************************************************************/
  240. #ifdef __cplusplus
  241. }
  242. #endif // __cplusplus
  243. #endif
  244. /************************************************************************
  245. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  246. All rights reserved.
  247. *************************************************************************
  248. End of this File (EOF)!
  249. Do not put anything after this part!
  250. *************************************************************************/