alarm.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: alarm.h
  4. Partner Filename: alarm.c
  5. Description: The header file of alarm.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 ALARM_H
  20. #define ALARM_H
  21. /************************************************************************
  22. Compiler Directives (N/A)
  23. *************************************************************************/
  24. #ifdef _ALARM_C_
  25. #define _ALARM_EXT
  26. #else
  27. #define _ALARM_EXT extern
  28. #endif
  29. /************************************************************************
  30. Definitions & Macros
  31. *************************************************************************/
  32. #define ALM_CODE_DEFAULT \
  33. { \
  34. 0 \
  35. } // Default value of ALM_CODE
  36. #define ALM_ACTION_DEFAULT \
  37. { \
  38. 0 \
  39. } // Default value of ALM_ACTION
  40. #define ALM_IN_DEFAULT \
  41. { \
  42. FALSE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,FALSE \
  43. } // Default value of ALM_IN_DEFAULT
  44. #define ALM_DETECT_COUNT_DEFAULT \
  45. { \
  46. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  47. } // Default value of ALM_DETECT_COUNT
  48. #define ALM_STOP_COUNT_DEFAULT \
  49. { \
  50. 0, 0, 0, 0, 0, 0 \
  51. } // Default value of ALM_STOP_COUNT
  52. #define ALM_RECOVER_COUNT_DEFAULT \
  53. { \
  54. 0, 0, 0, 0, 0, 0, 0, 0 \
  55. } // Default value of ALM_RECOVER_COUNT
  56. #define ALM_DETECTBC_COF_DEFAULT \
  57. { \
  58. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  59. } // Default value of ALM_DETECTBC_COF
  60. #define ALM_DETECTBS_COF_DEFAULT \
  61. { \
  62. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  63. } // Default value of ALM_DETECTBS_COF
  64. #define ALM_STOPTBC_COF_DEFAULT \
  65. { \
  66. 0, 0, 0, 0, 0, 0, 0 \
  67. } // Default value of ALM_STOPTBC_COF
  68. #define ALM_RESET_COF_DEFAULT \
  69. { \
  70. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  71. } // Default value of ALM_RESET_COF
  72. #define ALM_DETECT200MS_COF_DEFAULT \
  73. { \
  74. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
  75. } // Default value of ALM_DETECT200MS_COF
  76. #define ALM_RESET1MS_COF_DEFAULT \
  77. { \
  78. 0, 0, 0, 0, 0, 0, 0 \
  79. } // Default value of ALM_RESET1MS_COF
  80. #define ALM_BIKE_IN_DEFAULT \
  81. { \
  82. 0, 0, 0, 0, 0, 0, 0, 0, FALSE, FALSE, FALSE, FALSE \
  83. } // Default value of ALM_BIKE_IN_DEFAULT
  84. /************************************************************************
  85. TypeDefs & Structure defines (N/A)
  86. *************************************************************************/
  87. typedef union
  88. {
  89. struct
  90. { // bit description
  91. UWORD IPMFlt : 1; // 0 IPM fault
  92. UWORD OvrCur : 1; // 1 Over current
  93. UWORD CritOvrVlt : 1; // 2 Critical over voltage
  94. UWORD OvrVlt : 1; // 3 Over voltage
  95. UWORD UndrVlt : 1; // 4 under voltage
  96. UWORD OvrSpd : 1; // 5 Over speed
  97. UWORD OvrLoad : 1; // 6 Over load
  98. UWORD IPMOvrHeat : 1; // 7 IPM over heat
  99. UWORD HallLoss : 1; // 8 Hall loss
  100. UWORD PhsLoss : 1; // 9 Phase loss
  101. UWORD RotorLock : 1; // 10 Rotor lock
  102. UWORD RunOvrTm : 1; // 11 Run over time
  103. UWORD CommOvrTm : 1; // 12 Communication over time
  104. UWORD ADCOffsetFlt : 1; // 13 ADC Self Detecting Fault
  105. UWORD SpiThetaFlt : 1; // 14
  106. UWORD MCUErr : 1; // 15 STL test
  107. } bit;
  108. UWORD all;
  109. } ALM_CODE;
  110. typedef union
  111. {
  112. struct
  113. { // bit
  114. UWORD BikeSpdSen : 1; // 0
  115. UWORD CadenceSen : 1; // 1
  116. UWORD TorqSen : 1; // 2
  117. UWORD Throttle : 1; // 3
  118. UWORD PCBNTC : 1; // 4
  119. UWORD MotorNTC : 1; // 5
  120. UWORD Rsvd1 : 1; // 6
  121. UWORD Rsvd2 : 1; // 7
  122. UWORD Rsvd3 : 1; // 8
  123. UWORD Rsvd4 : 1; // 9
  124. UWORD Rsvd5 : 1; // 10
  125. UWORD Rsvd6 : 1; // 11
  126. UWORD Rsvd7 : 1; // 12
  127. UWORD Rsvd8 : 1; // 13
  128. UWORD Rsvd9 : 1; // 14
  129. UWORD Rsvd10 : 1; // 15
  130. } bit;
  131. UBYTE all;
  132. } ALM_BIKE_CODE;
  133. typedef union
  134. {
  135. struct
  136. { // bit description
  137. UWORD ThrPhsShrtFrc : 1; // 0 Three phase short force
  138. UWORD PWMOff : 1; // 1 PWM disable
  139. UWORD ThrPhsShrt : 1; // 2 Three phase short
  140. UWORD SlowDwn : 1; // 3 Slow down to stop
  141. UWORD Rsvd1 : 12; // 4-15 Reserved
  142. } bit;
  143. UWORD all;
  144. } ALM_ACTION;
  145. typedef struct
  146. {
  147. BOOL blADCInitOvrFlg;
  148. UWORD uwIpeakPu; // Q14
  149. UWORD uwURegpeakPu; // Q14
  150. SWORD swMotorPwrInWt; // unit: w
  151. UWORD uwIaAbsPu; // Q14
  152. UWORD uwIbAbsPu; // Q14
  153. UWORD uwIcAbsPu; // Q14
  154. SWORD swIalhpaPu; // Q14
  155. SWORD swIbetaPu; // Q14
  156. SWORD swIqRefPu; // Q14
  157. UWORD uwVdcPu; // Q14
  158. UWORD uwVdcCompPu; // Q14
  159. UWORD uwSpdFbkLpfAbsPu; // Q15
  160. UWORD uwSpdRefAbsPu; // Q15
  161. SWORD swIPMTempCe; // Not Pu, centigrade
  162. UWORD uwIaOffset; // Ia offset value
  163. UWORD uwIbOffset; // Ib offset value
  164. UWORD uwIcOffset; // Ib offset value
  165. UWORD uwIdcOffset; // Idc offset value
  166. SWORD swDrumSpdAbsNowRpm;
  167. SWORD swDrumSpdAbsPreRpm;
  168. BOOL blSpiThetaFltFlg;
  169. } ALM_IN;
  170. typedef struct
  171. {
  172. ULONG ulOvrCur;
  173. ULONG ulOvrVltLvl1;
  174. ULONG ulOvrVltLvl2;
  175. ULONG ulOvrVltLvl3;
  176. ULONG ulUndrVltLvl1;
  177. ULONG ulUndrVltLvl2;
  178. ULONG ulOvrSpd;
  179. ULONG ulIPMOvrHeat;
  180. ULONG ulIPMOvrHeat1;
  181. ULONG ulPhsALoss;
  182. ULONG ulPhsBLoss;
  183. ULONG ulPhsCLoss;
  184. SLONG slRotorLock;
  185. UWORD uwBikeSpdFlt;
  186. UWORD uwCadenceFlt;
  187. UWORD uwTorqFlt;
  188. UWORD uwThrottleFlt;
  189. UWORD uwPCBNTCFlt;
  190. UWORD uwMotorNTCFlt;
  191. } ALM_DETECT_COUNT;
  192. typedef enum
  193. {
  194. Alm_Stop = 0,
  195. Alm_VarClc = 1,
  196. Alm_Reset = 2,
  197. } ALM_FSM_STATUS;
  198. typedef struct
  199. {
  200. ULONG ulThrPhsShrtFrcCnt;
  201. ULONG ulPWMOffCnt;
  202. ULONG ulPWMOffShrtSwCnt;
  203. ULONG ulShrtPWMOffSwCnt;
  204. ULONG ulThrPhsShrtCnt;
  205. ULONG ulRotorStopCnt;
  206. ULONG ulBikePWMOffCnt;
  207. } ALM_STOP_COUNT;
  208. typedef struct
  209. {
  210. ULONG ulGlbl;
  211. ULONG ulOvrVlt;
  212. ULONG ulOvrVlt1;
  213. ULONG ulUndrVlt;
  214. ULONG ulUndrVlt1;
  215. ULONG ulIPMOC;
  216. ULONG ulIPMOvrHeat;
  217. ULONG ulIPMOvrHeat1;
  218. ULONG ulBikeGlbl;
  219. ULONG ulBikeSpdFlt;
  220. ULONG ulCadenceFlt;
  221. ULONG ulTorqFlt;
  222. ULONG ulThrottleFlt;
  223. ULONG ulPCBNTCFlt;
  224. ULONG ulMotorNTCFlt;
  225. } ALM_RECOVER_COUNT;
  226. typedef struct
  227. { // input of "alm_voDetecTBC"
  228. ULONG ulOvrCurValPu; // ALM_OVR_CNT_VAL
  229. ULONG ulOvrCurValCt; // ALM_OVR_CNT_TM
  230. SLONG slAdcDetHigValPu; // ALM_ADC_DETE_HIG_VAL
  231. SLONG slAdcDetLowValPu; // ALM_ADC_DETE_LOW_VAL
  232. ULONG ulPhsLossValPu; // ALM_PHS_LOSS_VAL
  233. ULONG ulPhsLossValCt; // ALM_PHS_LOSS_TM
  234. ULONG slRotorLockSpdK; // ALM_ROTOR_LOCK_SPD_K
  235. SLONG slRotorLockValCt; // ALM_ROTOR_LOCK_TM
  236. SLONG slIqRefLpfAbsValPu; // alm_pvt_swIqRefLpfAbsPu
  237. SLONG slSpdFbLpfAbsValPu; // alm_pvt_swSpdFbLpfAbsPu
  238. UWORD uwRsPu;
  239. UWORD uwPbWt;
  240. } ALM_DETECTBC_COF;
  241. typedef struct
  242. {
  243. UWORD uwFTbcHz;
  244. UWORD uwIbAp; /* unit: 0.01A, Current base */
  245. UWORD uwUbVt;
  246. UWORD uwOvrCurIa; // ALM_OVR_CNT_VAL
  247. UWORD uwOvrCurTu; // ALM_OVR_CNT_TM
  248. UWORD uwAdcDetHigVt; // ALM_ADC_DETE_HIG_VAL
  249. UWORD uwAdcDetLowVt; // ALM_ADC_DETE_LOW_VAL
  250. UWORD uwPhsLossVt; // ALM_PHS_LOSS_VAL
  251. UWORD uwPhsLossTs; // ALM_PHS_LOSS_TM
  252. UWORD uwRotorLockSpdK; // ALM_ROTOR_LOCK_SPD_K
  253. UWORD uwRotorLockTs; // ALM_ROTOR_LOCK_TM
  254. SWORD swIqRefLpfAbsAp; // slIqRefLpfAbsValPu
  255. SWORD swSpdFbLpfAbsRpm; // slSpdFbLpfAbsValPu
  256. UWORD uwPairs;
  257. UWORD uwFbHz;
  258. UWORD uwMtRsOm;
  259. } ALM_DETECTBC_COFIN;
  260. typedef struct
  261. { // input of "alm_voDetecTBS"
  262. ULONG ulOvrVltLvl1ValPu; // ALM_OVR_VLT_LVL1_VAL
  263. ULONG ulOvrVltLvl2ValPu; // ALM_OVR_VLT_LVL2_VAL
  264. ULONG ulOvrVltLvl3ValPu; // ALM_OVR_VLT_LVL3_VAL
  265. ULONG ulOvrVltLvl1ValCt; // ALM_OVR_VLT_LVL1_TM
  266. ULONG ulOvrVltLvl2ValCt; // ALM_OVR_VLT_LVL2_TM
  267. ULONG ulOvrVltLvl3ValCt; // ALM_OVR_VLT_LVL3_TM
  268. ULONG ulUndrVltLvl1ValPu; // ALM_UNDR_VLT_LVL1_VAL
  269. ULONG ulUndrVltLvl2ValPu; // ALM_UNDR_VLT_LVL2_VAL
  270. ULONG ulUndrVltLvl1ValCt; // ALM_UNDR_VLT_LVL1_TM
  271. ULONG ulUndrVltLvl2ValCt; // ALM_UNDR_VLT_LVL2_TM
  272. SLONG slOvrSpdValPu; // ALM_OVR_SPD_VAL
  273. ULONG ulOvrSpdValCt; // ALM_OVR_SPD_TM
  274. UWORD uwIPMOvrHeatRecValCe; // ALM_IPM_OVR_HEAT_REC_VAL
  275. ULONG ulIPMOvrHeatValCt; // ALM_IPM_OVR_TM
  276. UWORD uwIPMOvrHeatValCe; // ALM_IPM_OVR_HEAT_VAL
  277. } ALM_DETECTBS_COF;
  278. typedef struct
  279. { // input of "alm_voDetecTBS"
  280. UWORD uwUbVt; /* unit: 0.1V, Voltage base */
  281. UWORD uwFbHz; /* unit: Hz, Frequency base */
  282. UWORD uwPairs; // Pole pairs base
  283. UWORD uwFTbsHz;
  284. UWORD uwOvrVlt1Vt; // ALM_OVR_VLT_LVL1_VAL
  285. UWORD uwOvrVlt2Vt; // ALM_OVR_VLT_LVL2_VAL
  286. UWORD uwOvrVlt3Vt; // ALM_OVR_VLT_LVL3_VAL
  287. UWORD uwOvrVlt1Ts; // ALM_OVR_VLT_LVL1_TM
  288. UWORD uwOvrVlt2Tm; // ALM_OVR_VLT_LVL2_TM
  289. UWORD uwOvrVlt3Tm; // ALM_OVR_VLT_LVL3_TM
  290. UWORD uwUndrVlt1Vt; // ALM_UNDR_VLT_LVL1_VAL
  291. UWORD uwUndrVlt2Vt; // ALM_UNDR_VLT_LVL2_VAL
  292. UWORD uwUndrVlt1Ts; // ALM_UNDR_VLT_LVL1_TM
  293. UWORD uwUndrVlt2Tm; // ALM_UNDR_VLT_LVL2_TM
  294. UWORD uwOvrSpdRpm; // ALM_OVR_SPD_VAL
  295. UWORD uwOvrSpdTm; // ALM_OVR_SPD_TM
  296. UWORD uwIpmOvrHeatRecCe; // ALM_IPM_OVR_HEAT_REC_VAL
  297. UWORD uwIpmOvrHeatTs; // ALM_IPM_OVR_TM
  298. UWORD uwIpmOvrHeatCe; // ALM_IPM_OVR_HEAT_VAL
  299. } ALM_DETECTBS_COFIN;
  300. typedef struct
  301. { // input of "alm_voStopTBC"
  302. ULONG ulThrPhsShrtFrcValCt; // ALM_THR_PHS_SHRT_FRC_TM
  303. ULONG ulStopCurValCt; // ALM_STOP_CUR_TM
  304. ULONG ulPWMOffShrt1SwValCt; // ALM_PWMOFF_SHRT1_SW_TM
  305. ULONG ulShrtPWMOffSwValCt;
  306. ULONG ulPWMOffValCt; // ALM_PWM_OFF_TM
  307. ULONG ulThrPhsShrtNormValCt;
  308. ULONG ulOvrVltLvl1ValPu;
  309. } ALM_STOPTBC_COF;
  310. typedef struct
  311. { // input of "alm_voStopTBC"
  312. UWORD uwFTbcHz;
  313. UWORD uwIbAp; /* unit: 0.01A, Current base */
  314. UWORD uwUbVt; /* unit: 0.1V, Voltage base */
  315. UWORD uwThrPhsShrtFrcTs; // ALM_THR_PHS_SHRT_FRC_TM
  316. UWORD uwIPMOverCurStopTs; // ALM_IPM_OVER_CURRENT_STOP
  317. UWORD uwPwmoffShrt1SwTs; // ALM_PWMOFF_SHRT1_SW_TM
  318. UWORD uwShrtPwmoffSwTs;
  319. UWORD uwPwmOffTs; // ALM_PWM_OFF_TM
  320. UWORD uwThrPhsShrtTs;
  321. UWORD uwOvrVlt1Vt;
  322. } ALM_STOPTBC_COFIN;
  323. typedef struct
  324. { // input of "alm_voReset"
  325. ULONG ulRecAllValCt; // ALM_REC_ALL_TM
  326. ULONG ulIPMOcRecValCt; // ALM_IPM_OC_REC_TM
  327. ULONG ulOvrVltRecValPu; // ALM_OVR_VLT_REC_VAL
  328. ULONG ulOvrVltRecValCt; // ALM_OVR_VLT_REC_TM
  329. ULONG ulOvrVltRec1ValCt; // ALM_OVR_VLT_REC_TM1
  330. ULONG ulUndrVltRecValPu; // ALM_UNDR_VLT_REC_VAL
  331. ULONG ulUndrVltRecValCt; // ALM_UNDR_VLT_REC_TM
  332. ULONG ulUndrVltRec1ValCt; // ALM_UNDR_VLT_REC_TM1
  333. UWORD uwIPMOvrHeatRecValCe; // ALM_IPM_OVR_HEAT_REC_VAL
  334. ULONG ulIPMOvrHeatRecValCt; // ALM_IPM_OVR_REC_TM
  335. ULONG ulIPMOvrHeatRec1ValCt; // ALM_IPM_OVR_REC_TM1
  336. } ALM_RESET_COF;
  337. typedef struct
  338. {
  339. UWORD uwUbVt; /* unit: 0.1V, Voltage base */
  340. UWORD uwFTbcHz;
  341. UWORD uwRecAllTs; // ALM_REC_ALL_TM
  342. UWORD uwIpmOcRecTs; // ALM_IPM_OC_REC_TM
  343. UWORD uwOvrVltRecVt; // ALM_OVR_VLT_REC_VAL
  344. UWORD uwOvrVltRecTs; // ALM_OVR_VLT_REC_TM
  345. UWORD uwOvrVltRec1Ts; // ALM_OVR_VLT_REC_TM1
  346. UWORD uwUndrVltRecVt; // ALM_UNDR_VLT_REC_VAL
  347. UWORD uwUndrVltRecTs; // ALM_UNDR_VLT_REC_TM
  348. UWORD uwUndrVltRec1Ts; // ALM_UNDR_VLT_REC_TM1
  349. UWORD uwIpmOvrHeatRecCe; // ALM_IPM_OVR_HEAT_REC_VAL
  350. UWORD uwIpmOvrHeatRecTs; // ALM_IPM_OVR_REC_TM
  351. UWORD uwIpmOvrHeatRec1Ts; // ALM_IPM_OVR_REC_TM1
  352. } ALM_RESET_COFIN;
  353. typedef struct
  354. {
  355. UWORD uwBikeSpdFltCt;
  356. UWORD uwCadenceFltCt;
  357. UWORD uwTorqFltCt;
  358. UWORD uwThrottleFltCt;
  359. UWORD uwPCBNTCFltCt;
  360. UWORD uwMotorNTCFltCt;
  361. SWORD swMotorSpdMinPu;
  362. UWORD uwTorqMinReg;
  363. UWORD uwTorqMaxReg;
  364. UWORD uwThrottleMinReg;
  365. UWORD uwThrottleMaxReg;
  366. UWORD uwNTCMinReg;
  367. UWORD uwNTCMaxReg;
  368. } ALM_DETEC200MS_COF;
  369. typedef struct
  370. {
  371. UWORD uwFbHz; // unit: Hz, Frequency base
  372. UWORD uwPairs;
  373. UWORD uwFT200MSHz;
  374. UWORD uwBikeSpdFltTs;
  375. UWORD uwCadenceFltTs;
  376. UWORD uwTorqFltTs;
  377. UWORD uwThrottleFltTs;
  378. UWORD uwPCBNTCFltTs;
  379. UWORD uwMotorNTCFltTs;
  380. SWORD swMotorSpdMinRpm;
  381. UWORD uwTorqMinVol;
  382. UWORD uwTorqMaxVol;
  383. UWORD uwThrottleMinVol;
  384. UWORD uwThrottleMaxVol;
  385. UWORD uwNTCMinVol;
  386. UWORD uwNTCMaxVol;
  387. } ALM_DETEC200MS_COFIN;
  388. typedef struct
  389. {
  390. UWORD uwBikeSpdPu;
  391. UWORD uwCadenceFreqPu;
  392. UWORD uwTroqReg;
  393. UWORD uwTroqPu;
  394. UWORD uwThrottleReg;
  395. UWORD uwPCBNTCReg;
  396. UWORD uwMotorNTCReg;
  397. SWORD swMotorSpdPu;
  398. SWORD swMotorSpdDir;
  399. BOOL blBikeSpdOvrFlg;
  400. BOOL blCadenceFreqOvrFlg;
  401. BOOL blThrottleExistFlg;
  402. BOOL blMotorNTCExistFlg;
  403. } ALM_BIKE_IN;
  404. typedef struct
  405. {
  406. ULONG ulRecAllValCt;
  407. ULONG ulRecBikeSpdCt;
  408. ULONG ulRecCadenceCt;
  409. ULONG ulRecTorqCt;
  410. ULONG ulRecThrottleCt;
  411. ULONG ulRecPCBNTCCt;
  412. ULONG ulRecMotorNTCCt;
  413. } ALM_RESET1MS_COF;
  414. typedef struct
  415. {
  416. UWORD uwFT1MSHz;
  417. UWORD uwBikeGlblTm;
  418. UWORD uwBikeSpdFltTm;
  419. UWORD uwCadenceFltTm;
  420. UWORD uwTorqFltTm;
  421. UWORD uwThrottleFltTm;
  422. UWORD uwPCBNTCFltTm;
  423. UWORD uwMotorNTCFltTm;
  424. } ALM_RESET1MS_COFIN;
  425. /************************************************************************
  426. Exported Variables
  427. *************************************************************************/
  428. #ifdef _ALARM_C_
  429. _ALARM_EXT ALM_CODE alm_unCode = ALM_CODE_DEFAULT;
  430. _ALARM_EXT ALM_BIKE_CODE alm_unBikeCode = ALM_CODE_DEFAULT;
  431. _ALARM_EXT ALM_IN alm_stIn = ALM_IN_DEFAULT;
  432. _ALARM_EXT ALM_BIKE_IN alm_stBikeIn = ALM_BIKE_IN_DEFAULT;
  433. _ALARM_EXT ALM_ACTION alm_unAction = ALM_ACTION_DEFAULT;
  434. _ALARM_EXT ALM_DETECT_COUNT alm_stDecCt = ALM_DETECT_COUNT_DEFAULT;
  435. _ALARM_EXT ALM_STOP_COUNT alm_stStopCt = ALM_STOP_COUNT_DEFAULT;
  436. _ALARM_EXT ALM_FSM_STATUS alm_enFSMStatus = Alm_Stop;
  437. _ALARM_EXT ALM_FSM_STATUS alm_enBikeFSMStatus = Alm_Stop;
  438. _ALARM_EXT ALM_RECOVER_COUNT alm_stRecCt = ALM_RECOVER_COUNT_DEFAULT;
  439. _ALARM_EXT ALM_DETECTBC_COF alm_stDetectTbcCoef = ALM_DETECTBC_COF_DEFAULT;
  440. _ALARM_EXT ALM_DETECTBS_COF alm_stDetectTbsCoef = ALM_DETECTBS_COF_DEFAULT;
  441. _ALARM_EXT ALM_STOPTBC_COF alm_stStopTbcCoef = ALM_STOPTBC_COF_DEFAULT;
  442. _ALARM_EXT ALM_RESET_COF alm_stResetCoef = ALM_RESET_COF_DEFAULT;
  443. _ALARM_EXT UWORD alm_uwRotorLockedResetCnts = 0;
  444. _ALARM_EXT UWORD alm_uwOSResetCnts = 0;
  445. _ALARM_EXT UWORD alm_uwIPMOCResetCnts = 0;
  446. _ALARM_EXT UWORD alm_uwOCResetCnts = 0;
  447. _ALARM_EXT BOOL alm_blPowerDownFlg = FALSE;
  448. _ALARM_EXT BOOL alm_blAlmOccrFlg = FALSE;
  449. _ALARM_EXT BOOL alm_blWarnOccrFlg = FALSE;
  450. _ALARM_EXT BOOL alm_blAlmSingleRecordDoneFlg = FALSE;
  451. _ALARM_EXT ALM_RESET1MS_COF alm_stReset1MSCoef = ALM_RESET1MS_COF_DEFAULT;
  452. _ALARM_EXT ALM_DETEC200MS_COF alm_stDetect200MSCoef = ALM_DETECT200MS_COF_DEFAULT;
  453. #else
  454. _ALARM_EXT ALM_IN alm_stIn;
  455. _ALARM_EXT ALM_BIKE_IN alm_stBikeIn;
  456. _ALARM_EXT ALM_CODE alm_unCode;
  457. _ALARM_EXT ALM_BIKE_CODE alm_unBikeCode;
  458. _ALARM_EXT ALM_ACTION alm_unAction;
  459. _ALARM_EXT ALM_DETECT_COUNT alm_stDecCt;
  460. _ALARM_EXT ALM_STOP_COUNT alm_stStopCt;
  461. _ALARM_EXT ALM_FSM_STATUS alm_enFSMStatus;
  462. _ALARM_EXT ALM_FSM_STATUS alm_enBikeFSMStatus;
  463. _ALARM_EXT ALM_RECOVER_COUNT alm_stRecCt;
  464. _ALARM_EXT ALM_DETECTBC_COF alm_stDetectTbcCoef;
  465. _ALARM_EXT ALM_DETECTBS_COF alm_stDetectTbsCoef;
  466. _ALARM_EXT ALM_STOPTBC_COF alm_stStopTbcCoef;
  467. _ALARM_EXT ALM_RESET_COF alm_stResetCoef;
  468. _ALARM_EXT UWORD alm_uwRotorLockedResetCnts;
  469. _ALARM_EXT UWORD alm_uwOSResetCnts;
  470. _ALARM_EXT UWORD alm_uwIPMOCResetCnts;
  471. _ALARM_EXT UWORD alm_uwOCResetCnts;
  472. _ALARM_EXT BOOL alm_blPowerDownFlg;
  473. _ALARM_EXT BOOL alm_blAlmOccrFlg;
  474. _ALARM_EXT BOOL alm_blWarnOccrFlg;
  475. _ALARM_EXT BOOL alm_blAlmSingleRecordDoneFlg;
  476. _ALARM_EXT ALM_RESET1MS_COF alm_stReset1MSCoef;
  477. _ALARM_EXT ALM_DETEC200MS_COF alm_stDetect200MSCoef;
  478. #endif
  479. /************************************************************************
  480. RAM ALLOCATION (N/A)
  481. *************************************************************************/
  482. #define alm_stDetectTbcCoefIn (*(ALM_DETECTBC_COFIN *)MN_BUFFER)
  483. #define alm_stDetectTbsCoefIn (*(ALM_DETECTBS_COFIN *)MN_BUFFER)
  484. #define alm_stStopTbcCoefIn (*(ALM_STOPTBC_COFIN *)MN_BUFFER)
  485. #define alm_stResetCoefIn (*(ALM_RESET_COFIN *)MN_BUFFER)
  486. #define alm_stDetect200MSCoefIn (*(ALM_DETEC200MS_COFIN *)MN_BUFFER)
  487. #define alm_stReset1MSCoefIn (*(ALM_RESET1MS_COFIN *)MN_BUFFER)
  488. /************************************************************************
  489. Exported Function Call Prototypes
  490. *************************************************************************/
  491. #ifdef _ALARM_C_
  492. _ALARM_EXT void alm_voInit(void);
  493. _ALARM_EXT void alm_voCoef(void);
  494. _ALARM_EXT void alm_voDetecTBC(const ALM_IN *in, const ALM_DETECTBC_COF *coef);
  495. _ALARM_EXT void alm_voDetecTBCCoef(ALM_DETECTBC_COFIN *in, ALM_DETECTBC_COF *out);
  496. _ALARM_EXT void alm_voDetecTBS(const ALM_IN *in, const ALM_DETECTBS_COF *coef);
  497. _ALARM_EXT void alm_voDetecTBSCoef(ALM_DETECTBS_COFIN *in, ALM_DETECTBS_COF *out);
  498. _ALARM_EXT void alm_voHandleTBC(const ALM_IN *in);
  499. _ALARM_EXT void alm_voHandleTBS(const ALM_IN *in);
  500. _ALARM_EXT void alm_voStopTBCCoef(ALM_STOPTBC_COFIN *in, ALM_STOPTBC_COF *out);
  501. _ALARM_EXT void alm_voStopTBC(const ALM_IN *in, const ALM_STOPTBC_COF *coef);
  502. _ALARM_EXT void alm_voStopTBS(void);
  503. _ALARM_EXT void alm_voResetCoef(ALM_RESET_COFIN *in, ALM_RESET_COF *out);
  504. _ALARM_EXT void alm_voReset(const ALM_IN *in, const ALM_RESET_COF *coef);
  505. _ALARM_EXT void alm_voHandleRst(void);
  506. _ALARM_EXT void alm_voDetec200MSCoef(ALM_DETEC200MS_COFIN *in, ALM_DETEC200MS_COF *out);
  507. _ALARM_EXT void alm_voDetec200MS(const ALM_BIKE_IN *in, const ALM_DETEC200MS_COF *coef);
  508. _ALARM_EXT void alm_voHandle1MS(const ALM_BIKE_IN *in);
  509. _ALARM_EXT void alm_voReset1MSCoef(const ALM_RESET1MS_COFIN *in, ALM_RESET1MS_COF *out);
  510. _ALARM_EXT void alm_voReset1MS(const ALM_BIKE_IN *in, const ALM_RESET1MS_COF *coef, const ALM_DETEC200MS_COF *detctcoef);
  511. #else
  512. _ALARM_EXT void alm_voInit(void);
  513. _ALARM_EXT void alm_voCoef(void);
  514. _ALARM_EXT void alm_voDetecTBC(const ALM_IN *in, const ALM_DETECTBC_COF *coef);
  515. _ALARM_EXT void alm_voDetecTBCCoef(ALM_DETECTBC_COFIN *in, ALM_DETECTBC_COF *out);
  516. _ALARM_EXT void alm_voDetecTBS(const ALM_IN *in, const ALM_DETECTBS_COF *coef);
  517. _ALARM_EXT void alm_voDetecTBSCoef(ALM_DETECTBS_COFIN *in, ALM_DETECTBS_COF *out);
  518. _ALARM_EXT void alm_voHandleTBC(const ALM_IN *in);
  519. _ALARM_EXT void alm_voHandleTBS(const ALM_IN *in);
  520. _ALARM_EXT void alm_voStopTBCCoef(ALM_STOPTBC_COFIN *in, ALM_STOPTBC_COF *out);
  521. _ALARM_EXT void alm_voStopTBC(const ALM_IN *in, const ALM_STOPTBC_COF *coef);
  522. _ALARM_EXT void alm_voStopTBS(void);
  523. _ALARM_EXT void alm_voResetCoef(ALM_RESET_COFIN *in, ALM_RESET_COF *out);
  524. _ALARM_EXT void alm_voReset(const ALM_IN *in, const ALM_RESET_COF *coef);
  525. _ALARM_EXT void alm_voHandleRst(void);
  526. _ALARM_EXT void alm_voDetec200MSCoef(ALM_DETEC200MS_COFIN *in, ALM_DETEC200MS_COF *out);
  527. _ALARM_EXT void alm_voDetec200MS(const ALM_BIKE_IN *in, const ALM_DETEC200MS_COF *coef);
  528. _ALARM_EXT void alm_voHandle1MS(const ALM_BIKE_IN *in);
  529. _ALARM_EXT void alm_voReset1MSCoef(const ALM_RESET1MS_COFIN *in, ALM_RESET1MS_COF *out);
  530. _ALARM_EXT void alm_voReset1MS(const ALM_BIKE_IN *in, const ALM_RESET1MS_COF *coef, const ALM_DETEC200MS_COF *detctcoef);
  531. #endif
  532. /************************************************************************
  533. Local Function Call Prototypes (N/A)
  534. *************************************************************************/
  535. /************************************************************************
  536. Flag Define (N/A)
  537. *************************************************************************/
  538. #endif
  539. /************************************************************************
  540. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  541. All rights reserved.
  542. *************************************************************************
  543. End of this File (EOF)!
  544. Do not put anything after this part!
  545. *************************************************************************/