alarm.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574
  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 \
  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 \
  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, 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, 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 MotorOvrHeat : 1; // 11 Motor over heat
  103. UWORD CommOvrTm : 1; // 12 Communication over time
  104. UWORD ADCOffsetFlt : 1; // 13 ADC Self Detecting Fault
  105. UWORD Rsvd1 : 1; // 14 Reserved
  106. UWORD Rsvd2 : 1; // 15 Reserved
  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 Brake : 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 uwMotorTempCe; // Not Pu, centigrade
  163. UWORD uwIaOffset; // Ia offset value
  164. UWORD uwIbOffset; // Ib offset value
  165. UWORD uwIcOffset; // Ib offset value
  166. UWORD uwIdcOffset; // Idc offset value
  167. UWORD uwSectorNum; // Hall Value
  168. } ALM_IN;
  169. typedef struct
  170. {
  171. ULONG ulIa_Filter;
  172. ULONG ulIb_Filter;
  173. ULONG ulIc_Filter;
  174. }IABCSTRUCT;
  175. typedef struct
  176. {
  177. ULONG ulOvrCur;
  178. ULONG ulOvrVltLvl1;
  179. ULONG ulUndrVltLvl1;
  180. ULONG ulOvrSpd;
  181. ULONG ulIPMOvrHeat;
  182. ULONG ulIPMOvrHeat1;
  183. ULONG ulMotorOvrHeat;
  184. ULONG ulMotorOvrHeat1;
  185. ULONG ulPhsALoss;
  186. ULONG ulPhsBLoss;
  187. ULONG ulPhsCLoss;
  188. SLONG slRotorLock;
  189. ULONG ulHallLoss;
  190. ULONG ulBikeSpeedFltCnt;
  191. ULONG ulCadFreFltCnt;
  192. UWORD uwBikeSpdFlt;
  193. UWORD uwCadenceFlt;
  194. UWORD uwTorqFlt;
  195. UWORD uwThrottleFlt;
  196. UWORD uwPCBNTCFlt;
  197. UWORD uwMotorNTCFlt;
  198. UWORD uwBrakeFlt;
  199. } ALM_DETECT_COUNT;
  200. typedef enum
  201. {
  202. Alm_Stop = 0,
  203. Alm_VarClc = 1,
  204. Alm_Reset = 2,
  205. } ALM_FSM_STATUS;
  206. typedef struct
  207. {
  208. ULONG ulThrPhsShrtFrc;
  209. ULONG ulPWMOff;
  210. ULONG ulPWMOffShrtSw;
  211. ULONG ulShrtPWMOffSw;
  212. ULONG ulThrPhsShrt;
  213. UWORD uwRotorStopCnt;
  214. ULONG ulBikePWMOff;
  215. } ALM_STOP_COUNT;
  216. typedef struct
  217. {
  218. ULONG ulGlbl;
  219. ULONG ulOvrVlt;
  220. ULONG ulOvrVlt1;
  221. ULONG ulUndrVlt;
  222. ULONG ulUndrVlt1;
  223. ULONG ulIPMOC;
  224. ULONG ulIPMOvrHeat;
  225. ULONG ulIPMOvrHeat1;
  226. ULONG ulMotorOvrHeat;
  227. ULONG ulMotorOvrHeat1;
  228. ULONG ulBikeGlbl;
  229. ULONG ulBikeSpdFlt;
  230. ULONG ulCadenceFlt;
  231. ULONG ulTorqFlt;
  232. ULONG ulThrottleFlt;
  233. ULONG ulPCBNTCFlt;
  234. ULONG ulMotorNTCFlt;
  235. } ALM_RECOVER_COUNT;
  236. typedef struct
  237. { // input of "alm_voDetecTBC"
  238. ULONG ulOvrCurValPu; // ALM_OVR_CNT_VAL
  239. ULONG ulOvrCurValCt; // ALM_OVR_CNT_TM
  240. SLONG slAdcDetHigValPu; // ALM_ADC_DETE_HIG_VAL
  241. SLONG slAdcDetLowValPu; // ALM_ADC_DETE_LOW_VAL
  242. ULONG ulPhsLossValPu; // ALM_PHS_LOSS_VAL
  243. ULONG ulPhsLossValCt; // ALM_PHS_LOSS_TM
  244. ULONG slRotorLockSpdK; // ALM_ROTOR_LOCK_SPD_K
  245. SLONG slRotorLockValCt; // ALM_ROTOR_LOCK_TM
  246. SLONG slIqRefLpfAbsValPu; // alm_pvt_swIqRefLpfAbsPu
  247. SLONG slSpdFbLpfAbsValPu; // alm_pvt_swSpdFbLpfAbsPu
  248. UWORD uwRsPu;
  249. UWORD uwPbWt;
  250. } ALM_DETECTBC_COF;
  251. typedef struct
  252. {
  253. UWORD uwFTbcHz;
  254. UWORD uwIbAp; /* unit: 0.01A, Current base */
  255. UWORD uwUbVt;
  256. UWORD uwOvrCurIa; // ALM_OVR_CNT_VAL
  257. UWORD uwOvrCurTu; // ALM_OVR_CNT_TM
  258. UWORD uwAdcDetHigVt; // ALM_ADC_DETE_HIG_VAL
  259. UWORD uwAdcDetLowVt; // ALM_ADC_DETE_LOW_VAL
  260. UWORD uwPhsLossVt; // ALM_PHS_LOSS_VAL
  261. UWORD uwPhsLossTs; // ALM_PHS_LOSS_TM
  262. UWORD uwRotorLockSpdK; // ALM_ROTOR_LOCK_SPD_K
  263. UWORD uwRotorLockTs; // ALM_ROTOR_LOCK_TM
  264. SWORD swIqRefLpfAbsAp; // slIqRefLpfAbsValPu
  265. SWORD swSpdFbLpfAbsRpm; // slSpdFbLpfAbsValPu
  266. UWORD uwPairs;
  267. UWORD uwFbHz;
  268. UWORD uwMtRsOm;
  269. } ALM_DETECTBC_COFIN;
  270. typedef struct
  271. { // input of "alm_voDetecTBS"
  272. ULONG ulOvrVltLvl1ValPu; // ALM_OVR_VLT_LVL1_VAL
  273. ULONG ulOvrVltLvl1ValCt; // ALM_OVR_VLT_LVL1_TM
  274. ULONG ulUndrVltLvl1ValPu; // ALM_UNDR_VLT_LVL1_VAL
  275. ULONG ulUndrVltLvl1ValCt; // ALM_UNDR_VLT_LVL1_TM
  276. SLONG slOvrSpdValPu; // ALM_OVR_SPD_VAL
  277. ULONG ulOvrSpdValCt; // ALM_OVR_SPD_TM
  278. UWORD uwIPMOvrHeatRecValCe; // ALM_IPM_OVR_HEAT_REC_VAL
  279. ULONG ulIPMOvrHeatValCt; // ALM_IPM_OVR_TM
  280. UWORD uwIPMOvrHeatValCe; // ALM_IPM_OVR_HEAT_VAL
  281. UWORD uwMotorOvrHeatRecValCe; // ALM_MOTOR_OVR_HEAT_REC_VAL
  282. ULONG ulMotorOvrHeatValCt; // ALM_MOTOR_OVR_TM
  283. UWORD uwMotorOvrHeatValCe; // ALM_MOTOR_OVR_HEAT_VAL
  284. } ALM_DETECTBS_COF;
  285. typedef struct
  286. { // input of "alm_voDetecTBS"
  287. UWORD uwUbVt; /* unit: 0.1V, Voltage base */
  288. UWORD uwFbHz; /* unit: Hz, Frequency base */
  289. UWORD uwPairs; // Pole pairs base
  290. UWORD uwFTbsHz;
  291. UWORD uwOvrVlt1Vt; // ALM_OVR_VLT_LVL1_VAL
  292. UWORD uwOvrVlt1Tm; // ALM_OVR_VLT_LVL1_TM
  293. UWORD uwUndrVlt1Vt; // ALM_UNDR_VLT_LVL1_VAL
  294. UWORD uwUndrVlt1Tm; // ALM_UNDR_VLT_LVL1_TM
  295. UWORD uwOvrSpdRpm; // ALM_OVR_SPD_VAL
  296. UWORD uwOvrSpdTm; // ALM_OVR_SPD_TM
  297. UWORD uwIpmOvrHeatRecCe; // ALM_IPM_OVR_HEAT_REC_VAL
  298. UWORD uwIpmOvrHeatTs; // ALM_IPM_OVR_TM
  299. UWORD uwIpmOvrHeatCe; // ALM_IPM_OVR_HEAT_VAL
  300. UWORD uwMotorOvrHeatRecCe; // ALM_IPM_OVR_HEAT_REC_VAL
  301. UWORD uwMotorOvrHeatTs; // ALM_IPM_OVR_TM
  302. UWORD uwMotorOvrHeatCe; // ALM_IPM_OVR_HEAT_VAL
  303. } ALM_DETECTBS_COFIN;
  304. typedef struct
  305. { // input of "alm_voStopTBC"
  306. ULONG ulThrPhsShrtFrcValCt; // ALM_THR_PHS_SHRT_FRC_TM
  307. ULONG ulStopCurValCt; // ALM_STOP_CUR_TM
  308. ULONG ulPWMOffShrt1SwValCt; // ALM_PWMOFF_SHRT1_SW_TM
  309. ULONG ulShrtPWMOffSwValCt;
  310. ULONG ulPWMOffValCt; // ALM_PWM_OFF_TM
  311. ULONG ulThrPhsShrtNormValCt;
  312. ULONG ulOvrVltLvl1ValPu;
  313. } ALM_STOPTBC_COF;
  314. typedef struct
  315. { // input of "alm_voStopTBC"
  316. UWORD uwFTbcHz;
  317. UWORD uwIbAp; /* unit: 0.01A, Current base */
  318. UWORD uwUbVt; /* unit: 0.1V, Voltage base */
  319. UWORD uwThrPhsShrtFrcTs; // ALM_THR_PHS_SHRT_FRC_TM
  320. UWORD uwIPMOverCurStopTs; // ALM_IPM_OVER_CURRENT_STOP
  321. UWORD uwPwmoffShrt1SwTs; // ALM_PWMOFF_SHRT1_SW_TM
  322. UWORD uwShrtPwmoffSwTs;
  323. UWORD uwPwmOffTs; // ALM_PWM_OFF_TM
  324. UWORD uwThrPhsShrtTs;
  325. UWORD uwOvrVlt1Vt;
  326. } ALM_STOPTBC_COFIN;
  327. typedef struct
  328. { // input of "alm_voReset"
  329. ULONG ulRecAllValCt; // ALM_REC_ALL_TM
  330. ULONG ulIPMOcRecValCt; // ALM_IPM_OC_REC_TM
  331. ULONG ulOvrVltRecValPu; // ALM_OVR_VLT_REC_VAL
  332. ULONG ulOvrVltRecValCt; // ALM_OVR_VLT_REC_TM
  333. ULONG ulUndrVltRecValPu; // ALM_UNDR_VLT_REC_VAL
  334. ULONG ulUndrVltRecValCt; // ALM_UNDR_VLT_REC_TM
  335. UWORD uwIPMOvrHeatRecValCe; // ALM_IPM_OVR_HEAT_REC_VAL
  336. ULONG ulIPMOvrHeatRecValCt; // ALM_IPM_OVR_REC_TM
  337. ULONG ulIPMOvrHeatRec1ValCt; // ALM_IPM_OVR_REC_TM1
  338. UWORD uwMotorOvrHeatRecValCe; // ALM_IPM_OVR_HEAT_REC_VAL
  339. ULONG ulMotorOvrHeatRecValCt; // ALM_IPM_OVR_REC_TM
  340. ULONG ulMotorOvrHeatRec1ValCt; // ALM_IPM_OVR_REC_TM1
  341. } ALM_RESET_COF;
  342. typedef struct
  343. {
  344. UWORD uwUbVt; /* unit: 0.1V, Voltage base */
  345. UWORD uwFTbcHz;
  346. UWORD uwRecAllTs; // ALM_REC_ALL_TM
  347. UWORD uwIpmOcRecTs; // ALM_IPM_OC_REC_TM
  348. UWORD uwOvrVltRecVt; // ALM_OVR_VLT_REC_VAL
  349. UWORD uwOvrVltRecTs; // ALM_OVR_VLT_REC_TM
  350. UWORD uwUndrVltRecVt; // ALM_UNDR_VLT_REC_VAL
  351. UWORD uwUndrVltRecTs; // ALM_UNDR_VLT_REC_TM
  352. UWORD uwIpmOvrHeatRecCe; // ALM_IPM_OVR_HEAT_REC_VAL
  353. UWORD uwIpmOvrHeatRecTs; // ALM_IPM_OVR_REC_TM
  354. UWORD uwIpmOvrHeatRec1Ts; // ALM_IPM_OVR_REC_TM1
  355. UWORD uwMotorOvrHeatRecCe; // ALM_IPM_OVR_HEAT_REC_VAL
  356. UWORD uwMotorOvrHeatRecTs; // ALM_IPM_OVR_REC_TM
  357. UWORD uwMotorOvrHeatRec1Ts; // ALM_IPM_OVR_REC_TM1
  358. } ALM_RESET_COFIN;
  359. typedef struct
  360. {
  361. UWORD uwBikeSpdFltCt;
  362. UWORD uwCadenceFltCt;
  363. UWORD uwTorqFltCt;
  364. UWORD uwThrottleFltCt;
  365. UWORD uwPCBNTCFltCt;
  366. UWORD uwMotorNTCFltCt;
  367. SWORD swMotorSpdMinPu;
  368. UWORD uwTorqMinPu;
  369. UWORD uwTorqMinReg;
  370. UWORD uwTorqMaxReg;
  371. UWORD uwThrottleMinReg;
  372. UWORD uwThrottleMaxReg;
  373. UWORD uwNTCMinReg;
  374. UWORD uwNTCMaxReg;
  375. } ALM_DETEC200MS_COF;
  376. typedef struct
  377. {
  378. UWORD uwFbHz; // unit: Hz, Frequency base
  379. UWORD uwPairs;
  380. UWORD uwFT200MSHz;
  381. UWORD uwBikeSpdFltTs;
  382. UWORD uwCadenceFltTs;
  383. UWORD uwTorqFltTs;
  384. UWORD uwThrottleFltTs;
  385. UWORD uwPCBNTCFltTs;
  386. UWORD uwMotorNTCFltTs;
  387. SWORD swMotorSpdMinRpm;
  388. UWORD uwTorqMinNm;
  389. UWORD uwTorqMinVol;
  390. UWORD uwTorqMaxVol;
  391. UWORD uwThrottleMinVol;
  392. UWORD uwThrottleMaxVol;
  393. UWORD uwNTCMinVol;
  394. UWORD uwNTCMaxVol;
  395. } ALM_DETEC200MS_COFIN;
  396. typedef struct
  397. {
  398. UWORD uwBikeSpdPu;
  399. UWORD uwCadenceFreqPu;
  400. UWORD uwTroqReg;
  401. UWORD uwTroqPu;
  402. UWORD uwThrottleReg;
  403. UWORD uwPCBNTCReg;
  404. UWORD uwMotorNTCReg;
  405. SWORD swMotorSpdAbsPu;
  406. BOOL blBikeSpdOvrFlg;
  407. BOOL blCadenceFreqOvrFlg;
  408. BOOL blThrottleExistFlg;
  409. BOOL blMotorNTCExistFlg;
  410. } ALM_BIKE_IN;
  411. typedef struct
  412. {
  413. ULONG ulRecAllValCt;
  414. ULONG ulRecBikeSpdCt;
  415. ULONG ulRecCadenceCt;
  416. ULONG ulRecTorqCt;
  417. ULONG ulRecThrottleCt;
  418. ULONG ulRecPCBNTCCt;
  419. ULONG ulRecMotorNTCCt;
  420. } ALM_RESET1MS_COF;
  421. typedef struct
  422. {
  423. UWORD uwFT1MSHz;
  424. UWORD uwBikeGlblTm;
  425. UWORD uwBikeSpdFltTm;
  426. UWORD uwCadenceFltTm;
  427. UWORD uwTorqFltTm;
  428. UWORD uwThrottleFltTm;
  429. UWORD uwPCBNTCFltTm;
  430. UWORD uwMotorNTCFltTm;
  431. } ALM_RESET1MS_COFIN;
  432. /************************************************************************
  433. Exported Variables
  434. *************************************************************************/
  435. #ifdef _ALARM_C_
  436. _ALARM_EXT ALM_CODE alm_unCode = ALM_CODE_DEFAULT;
  437. _ALARM_EXT ALM_IN alm_stIn = ALM_IN_DEFAULT;
  438. _ALARM_EXT ALM_FSM_STATUS alm_enFSMStatus = Alm_Stop;
  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 ALM_BIKE_CODE alm_unBikeCode = ALM_CODE_DEFAULT;
  444. _ALARM_EXT ALM_BIKE_IN alm_stBikeIn = ALM_BIKE_IN_DEFAULT;
  445. _ALARM_EXT ALM_FSM_STATUS alm_enBikeFSMStatus = Alm_Stop;
  446. _ALARM_EXT ALM_RESET1MS_COF alm_stReset1MSCoef = ALM_RESET1MS_COF_DEFAULT;
  447. _ALARM_EXT ALM_DETEC200MS_COF alm_stDetect200MSCoef = ALM_DETECT200MS_COF_DEFAULT;
  448. _ALARM_EXT ALM_ACTION alm_unAction = ALM_ACTION_DEFAULT;
  449. _ALARM_EXT ALM_DETECT_COUNT alm_stDecCt = ALM_DETECT_COUNT_DEFAULT;
  450. _ALARM_EXT ALM_STOP_COUNT alm_stStopCt = ALM_STOP_COUNT_DEFAULT;
  451. _ALARM_EXT ALM_RECOVER_COUNT alm_stRecCt = ALM_RECOVER_COUNT_DEFAULT;
  452. _ALARM_EXT BOOL alm_blAlmOccrFlg = FALSE;
  453. _ALARM_EXT BOOL alm_blWarnOccrFlg = FALSE;
  454. _ALARM_EXT BOOL alm_blAlmSingleRecordDoneFlg = FALSE;
  455. #else
  456. _ALARM_EXT ALM_CODE alm_unCode;
  457. _ALARM_EXT ALM_IN alm_stIn;
  458. _ALARM_EXT ALM_FSM_STATUS alm_enFSMStatus;
  459. _ALARM_EXT ALM_DETECTBC_COF alm_stDetectTbcCoef;
  460. _ALARM_EXT ALM_DETECTBS_COF alm_stDetectTbsCoef;
  461. _ALARM_EXT ALM_STOPTBC_COF alm_stStopTbcCoef;
  462. _ALARM_EXT ALM_RESET_COF alm_stResetCoef;
  463. _ALARM_EXT ALM_BIKE_CODE alm_unBikeCode;
  464. _ALARM_EXT ALM_BIKE_IN alm_stBikeIn;
  465. _ALARM_EXT ALM_FSM_STATUS alm_enBikeFSMStatus;
  466. _ALARM_EXT ALM_RESET1MS_COF alm_stReset1MSCoef;
  467. _ALARM_EXT ALM_DETEC200MS_COF alm_stDetect200MSCoef;
  468. _ALARM_EXT ALM_ACTION alm_unAction;
  469. _ALARM_EXT ALM_DETECT_COUNT alm_stDecCt;
  470. _ALARM_EXT ALM_STOP_COUNT alm_stStopCt;
  471. _ALARM_EXT ALM_RECOVER_COUNT alm_stRecCt;
  472. _ALARM_EXT BOOL alm_blAlmOccrFlg;
  473. _ALARM_EXT BOOL alm_blWarnOccrFlg;
  474. _ALARM_EXT BOOL alm_blAlmSingleRecordDoneFlg;
  475. #endif
  476. /************************************************************************
  477. RAM ALLOCATION (N/A)
  478. *************************************************************************/
  479. #define alm_stDetectTbcCoefIn (*(ALM_DETECTBC_COFIN *)MN_BUFFER)
  480. #define alm_stDetectTbsCoefIn (*(ALM_DETECTBS_COFIN *)MN_BUFFER)
  481. #define alm_stStopTbcCoefIn (*(ALM_STOPTBC_COFIN *)MN_BUFFER)
  482. #define alm_stResetCoefIn (*(ALM_RESET_COFIN *)MN_BUFFER)
  483. #define alm_stDetect200MSCoefIn (*(ALM_DETEC200MS_COFIN *)MN_BUFFER)
  484. #define alm_stReset1MSCoefIn (*(ALM_RESET1MS_COFIN *)MN_BUFFER)
  485. /************************************************************************
  486. Exported Function Call Prototypes
  487. *************************************************************************/
  488. #ifdef _ALARM_C_
  489. _ALARM_EXT void alm_voInit(void);
  490. _ALARM_EXT void alm_voCoef(void);
  491. _ALARM_EXT void alm_voDetecTBC(ALM_IN *in, ALM_DETECTBC_COF *coef);
  492. _ALARM_EXT void alm_voDetecTBCCoef(ALM_DETECTBC_COFIN *in, ALM_DETECTBC_COF *out);
  493. _ALARM_EXT void alm_voDetecTBS(ALM_IN *in, ALM_DETECTBS_COF *coef);
  494. _ALARM_EXT void alm_voDetecTBSCoef(ALM_DETECTBS_COFIN *in, ALM_DETECTBS_COF *out);
  495. _ALARM_EXT void alm_voHandleTBC(ALM_IN *in);
  496. _ALARM_EXT void alm_voHandleTBS(ALM_IN *in);
  497. _ALARM_EXT void alm_voStopTBCCoef(ALM_STOPTBC_COFIN *in, ALM_STOPTBC_COF *out);
  498. _ALARM_EXT void alm_voStopTBC(ALM_IN *in, ALM_STOPTBC_COF *coef);
  499. _ALARM_EXT void alm_voStopTBS(void);
  500. _ALARM_EXT void alm_voResetCoef(ALM_RESET_COFIN *in, ALM_RESET_COF *out);
  501. _ALARM_EXT void alm_voReset(ALM_IN *in, ALM_RESET_COF *coef);
  502. _ALARM_EXT void alm_voHandleRst(void);
  503. _ALARM_EXT void alm_voDetec200MSCoef(ALM_DETEC200MS_COFIN *in, ALM_DETEC200MS_COF *out);
  504. _ALARM_EXT void alm_voDetec200MS(const ALM_BIKE_IN *in, const ALM_DETEC200MS_COF *coef);
  505. _ALARM_EXT void alm_voHandle1MS(const ALM_BIKE_IN *in);
  506. _ALARM_EXT void alm_voReset1MSCoef(const ALM_RESET1MS_COFIN *in, ALM_RESET1MS_COF *out);
  507. _ALARM_EXT void alm_voReset1MS(const ALM_BIKE_IN *in, const ALM_RESET1MS_COF *coef, const ALM_DETEC200MS_COF *detctcoef);
  508. #else
  509. _ALARM_EXT void alm_voInit(void);
  510. _ALARM_EXT void alm_voCoef(void);
  511. _ALARM_EXT void alm_voDetecTBC(ALM_IN *in, ALM_DETECTBC_COF *coef);
  512. _ALARM_EXT void alm_voDetecTBCCoef(ALM_DETECTBC_COFIN *in, ALM_DETECTBC_COF *out);
  513. _ALARM_EXT void alm_voDetecTBS(ALM_IN *in, ALM_DETECTBS_COF *coef);
  514. _ALARM_EXT void alm_voDetecTBSCoef(ALM_DETECTBS_COFIN *in, ALM_DETECTBS_COF *out);
  515. _ALARM_EXT void alm_voHandleTBC(ALM_IN *in);
  516. _ALARM_EXT void alm_voHandleTBS(ALM_IN *in);
  517. _ALARM_EXT void alm_voStopTBCCoef(ALM_STOPTBC_COFIN *in, ALM_STOPTBC_COF *out);
  518. _ALARM_EXT void alm_voStopTBC(ALM_IN *in, ALM_STOPTBC_COF *coef);
  519. _ALARM_EXT void alm_voStopTBS(void);
  520. _ALARM_EXT void alm_voResetCoef(ALM_RESET_COFIN *in, ALM_RESET_COF *out);
  521. _ALARM_EXT void alm_voReset(ALM_IN *in, ALM_RESET_COF *coef);
  522. _ALARM_EXT void alm_voHandleRst(void);
  523. _ALARM_EXT void alm_voDetec200MSCoef(ALM_DETEC200MS_COFIN *in, ALM_DETEC200MS_COF *out);
  524. _ALARM_EXT void alm_voDetec200MS(const ALM_BIKE_IN *in, const ALM_DETEC200MS_COF *coef);
  525. _ALARM_EXT void alm_voHandle1MS(const ALM_BIKE_IN *in);
  526. _ALARM_EXT void alm_voReset1MSCoef(const ALM_RESET1MS_COFIN *in, ALM_RESET1MS_COF *out);
  527. _ALARM_EXT void alm_voReset1MS(const ALM_BIKE_IN *in, const ALM_RESET1MS_COF *coef, const ALM_DETEC200MS_COF *detctcoef);
  528. #endif
  529. /************************************************************************
  530. Local Function Call Prototypes (N/A)
  531. *************************************************************************/
  532. /************************************************************************
  533. Flag Define (N/A)
  534. *************************************************************************/
  535. #endif
  536. /************************************************************************
  537. Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd.
  538. All rights reserved.
  539. *************************************************************************
  540. End of this File (EOF)!
  541. Do not put anything after this part!
  542. *************************************************************************/