Protect.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. /**
  2. * @copyright (C) COPYRIGHT 2022 Fortiortech Shenzhen
  3. * @file Protect.h
  4. * @author Marcel He
  5. * @note Last modify author is Marcel He
  6. * @since 2022-07-01
  7. * @date 2022-07-14
  8. * @brief This file contains protection parameter used for Motor Control.
  9. */
  10. /* Define to prevent recursive inclusion -------------------------------------------------------- */
  11. #ifndef __PROTECT_H_
  12. #define __PROTECT_H_
  13. /*保护参数设置--------------------------------------------------------------------------------------------*/
  14. /* Faults processing Enable */
  15. #define OC_SW_ProtectEn (1) // 软件过流保护使能: 0,不使能;1,使能
  16. #define OV_ProtectEn (1) // 过欠压保护使能: 0,不使能;1,使能
  17. #define LP_ProtectEn (1) // 缺相保护使能: 0,不使能;1,使能
  18. #define OT_ProtectEn (1) // 过温保护使能: 0,不使能;1,使能
  19. #define Stall_ProtectEn (1) // 堵转失速保护使能: 0,不使能;1,使能
  20. #define OP_ProtectEn (0) ///< 功率保护,0,不使能;1,使能
  21. #define GetCurrentOffsetEnable (1) // 偏置电压保护,0,不使能;1,使能
  22. /* 保护重启参数设置 */
  23. #define OC_RecoveryTimes (200) // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
  24. #define OC_RecoveryDelayTime (3000) // (ms)重启延迟时间
  25. #define OV_RecoveryTimes (255) // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
  26. #define OV_RecoveryDelayTime (1200) // (ms)欠过压保护恢复时间
  27. #define OV_RecoveryDelayTime1 (200) ///< (5ms) 欠过压保护恢复时间,过零判断用于快速插拔电开关机
  28. #define OV_RecoveryDelayTime2 (1000) ///< (5ms) 过压保护恢复时间
  29. #define LP_RecoveryTimes (200) // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
  30. #define LP_RecoveryDelayTime (500) // (ms)重启延迟时间
  31. #define OT_RecoveryTimes (200) // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
  32. #define OT_RecoveryDelayTime (500) // (ms)重启延迟时间
  33. #define Stall_RecoveryTimes (200) // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
  34. #define Stall_RecoveryDelayTime (500) // (ms)重启延迟时间
  35. #define OP_RecoveryTimes (200) // 重启次数,设定值<255 达到重启次数后不再重启,设定值>=255,一直重启
  36. #define OP_RecoveryDelayTime (500) // (ms)重启延迟时间
  37. /* HW current protection */
  38. #define HW_OC_FO_MODE (1) ///< 硬件FO过流保护使能,适用于IPM有FO保护的场合
  39. #define HW_OC_CMP_MODE (2) ///< 硬件CMP比较过流保护使能,适用于MOS管应用场合
  40. #define HW_OC_FOCMP_MODE (3) ///< 硬件CMP比较和FO过流保护都使能
  41. #define HW_OC_DISABLE (4) ///< 硬件过流保护禁止,用于测试
  42. #define HW_OC_MODE (HW_OC_CMP_MODE) ///< 硬件过流保护实现方式
  43. /* 硬件过流保护比较值来源 */
  44. #define COMPARE_DAC_MODE (0) ///< DAC设置硬件过流值
  45. #define COMPARE_HW_MODE (1) ///< 硬件设置硬件过流值
  46. #define COMPARE_MODE (COMPARE_DAC_MODE) ///< 硬件过流值的来源
  47. #define HWOCValue (1.2) ///< (A) DAC模式下的硬件过流值
  48. /* 软件过流保护参数设置 */
  49. #define SW_OC_CurrentVal I_Value(1.2) ///< (A)软件过流值
  50. #define SW_OC_DectTime (10) ///< (ms)软件过流检测时间
  51. /* -----偏置电压保护----- */
  52. #define GetCurrentOffsetValue _Q14(0.05) // (单位:100%)偏置电压保护误差范围,超过该范围保护
  53. /* -----功率保护----- */
  54. #define OverPowerValue (12000) ///<功率保护阈值
  55. /* 直流母线电压保护参数设置值 */
  56. #define OVER_VOLTAGE_DECTTIME (300) ///< (ms) 直流母线电压过压检测保持时间
  57. #define UNDER_VOLTAGE_DECTTIME (300) ///< (ms) 直流母线电压欠压检测保持时间
  58. #define OVER_VOLTAGE_PROTECT UDC_Value(220) ///< (V) 直流母线电压过压保护值
  59. #define UNDER_VOLTAGE_PROTECT UDC_Value(100) ///< (V) 直流母线电压欠压保护值
  60. #define OVER_VOLTAGE_RECOVER UDC_Value(200) ///< (V) 直流母线电压过压保护恢复值
  61. #define UNDER_VOLTAGE_RECOVER UDC_Value(120) ///< (V) 直流母线电压欠压保护恢复值
  62. /* 堵转保护参数设置值 */
  63. #define STALL_SPEED_MAX S_Value(2000)
  64. #define STALL_SPEED_MIN S_Value(300)
  65. #define EsThresholdValueL (800.0)
  66. #define EsThresholdValueH (1200.0)
  67. #define EsThresholdSpeed S_Value(1000) ///< (RPM) 电机转速
  68. /* 缺相保护参数设置值 */
  69. #define LP_NoLoadCurrentValue I_Value(0.1) ///< (A) 相电流峰值小于该电流值则不进行缺相判断
  70. #define LP_DectDealyTIME (500) ///< (ms) 启动延迟检测时间,用于屏蔽启动阶段
  71. #define LP_DectCycleTIME (50) ///< (ms) 峰值检测周期时间,需满足覆盖至少一个完整电周期
  72. /* -----NTC过温保护----- */
  73. #define TemperatureProtectTime (1000) // (ms)温度保护检测时间
  74. #define OVER_Temperature Tempera_Value(1.0) // 过温保护阈值,根据NTC曲线设定,10K上拉电阻,80℃
  75. #define UNDER_Temperature Tempera_Value(1.5) // 过温保护恢复阈值,根据NTC曲线设定,10K上拉电阻,70℃
  76. /* 故障显示 */
  77. #define LED_ONTime (100)
  78. #define LED_OFFTime (233)
  79. #define LED_ONOFFTime (LED_ONTime + LED_OFFTime)
  80. #define LED_DelayTime (200)
  81. #define LED_IntervalTime (1000)
  82. typedef enum
  83. {
  84. FaultNoSource = 0, ///< 无故障
  85. FaultHardOVCurrent = 1, ///< 硬件过流
  86. FaultSoftOVCurrent = 2, ///< 软件过流
  87. FaultOverVoltageDC = 3, ///< 过压
  88. FaultUnderVoltageDC = 4, ///< 欠压
  89. FaultPhaseLost = 5, ///< 缺相
  90. FaultStall = 6, ///< 堵转
  91. FaultNtcOTErr = 7, ///< NTC过温
  92. FaultMotorOTErr = 8, ///< 电机过温
  93. FaultTSD = 9, ///< MCU内部过温
  94. FaultOTWarning = 10, ///< IPM高温预警
  95. FaultUartLost = 11, ///< 通信丢失
  96. FaultPOST = 12, ///< FCT自检故障
  97. FaultLVW = 13, ///< LVW
  98. FaultGetOffset = 14, // 偏置电压保护
  99. FaultOverPowerErr = 15, ///<功率保护
  100. } FaultStateType;
  101. typedef struct
  102. {
  103. uint8 SWOC_DectTimeCnt;
  104. int16 Is;
  105. uint8 HWOC_Times;
  106. uint8 HWOC_DectTimeCnt;
  107. }FaultCurrentVarible;
  108. typedef struct
  109. {
  110. uint16 DetecCnt;
  111. uint16 WarningDetecCnt;
  112. uint8 WarningFlag;
  113. }FaultTemperatureVarible;
  114. typedef struct
  115. {
  116. uint16 DectDealyCnt;
  117. uint16 DectCycleCnt;
  118. uint16 ALossCnt ;
  119. uint16 BLossCnt ;
  120. uint16 CLossCnt ;
  121. uint16 ABCLossCnt;
  122. uint16 mcLossPHRecCount;
  123. uint16 Max_ia;
  124. uint16 Max_ib;
  125. uint16 Max_ic;
  126. }FaultPhaseLossVarible;
  127. typedef struct
  128. {
  129. uint16 OverVoltDetecCnt;
  130. uint16 UnderVoltDetecCnt;
  131. uint16 VoltRecoverCnt;
  132. uint16 BusVoltDetecCnt;
  133. uint16 DectDealyCnt;
  134. uint16 VoltDetecBraketCount;
  135. uint8 FlagBrakeInit;
  136. uint16 VoltDetecBraketDuty;
  137. }FaultVoltageVarible;
  138. typedef struct
  139. {
  140. uint16 EsValue;
  141. uint16 Mode0DectCnt;
  142. int16 SpeedErr;
  143. uint16 DeviSpeedCnt;
  144. uint16 EsDectCnt;
  145. uint16 SpeedDectCnt;
  146. uint16 SpeedMinCnt;
  147. uint16 DectDealyCnt;
  148. uint8 Type;
  149. }FaultStallTypedef;
  150. typedef struct
  151. {
  152. uint16 OverPowerDetecCnt; ///< 过功率检测次数
  153. }FaultOverPower;
  154. typedef struct
  155. {
  156. uint16 DC_DelayTcnt;
  157. uint16 LP_DelayTcnt;
  158. uint16 OT_DelayTcnt;
  159. uint16 SWOC_DelayTcnt;
  160. uint16 Stall_DealyTcnt;
  161. uint16 OverPower_DealyTcnt;
  162. uint8 OV_Times;
  163. uint8 OT_Times;
  164. uint8 LP_Times;
  165. uint8 SWOC_Times;
  166. uint8 Stall_Times;
  167. uint8 OverPower_Times;
  168. }FaultRecoverTypedef;
  169. typedef struct
  170. {
  171. FaultCurrentVarible Current;
  172. FaultPhaseLossVarible PhaseLoss;
  173. FaultVoltageVarible Voltage;
  174. FaultStallTypedef Stall;
  175. FaultTemperatureVarible Temperature;
  176. FaultOverPower Power;
  177. }FaultVarible;
  178. extern FaultStateType data mcFaultSource;
  179. extern uint8 xdata mcPOSTErrSource;
  180. extern FaultVarible xdata fault;
  181. extern FaultCurrentVarible idata mcCurVarible;
  182. extern FaultRecoverTypedef xdata Restart;
  183. /* Exported variables ---------------------------------------------------------------------------*/
  184. /* Exported functions ---------------------------------------------------------------------------*/
  185. extern void Fault_Detection(void);
  186. extern void Fault_OverCurrent(void);
  187. extern void Fault_Temperature(void);
  188. extern void Fault_Voltage(void);
  189. extern void Fault_Stall(void);
  190. extern void Fault_PhaseLoss(void);
  191. extern void UnderProcess(void);
  192. extern void Fault_Power(void);
  193. #endif