spdctrmode.h 12 KB

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