alarm.h 21 KB

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