1
0

Develop.h 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. /* -------------------------- (C) COPYRIGHT 2020 Fortiortech ShenZhen ---------------------------*/
  2. /* File Name : Develop.h
  3. /* Author : Fortiortech Appliction Team
  4. /* Version : V1.0
  5. /* Date : 2020-08-31
  6. /* Description : This file contains Advanced Applications parameter used for Motor Control.
  7. /* ----------------------------------------------------------------------------------------------*/
  8. /* All Rights Reserved
  9. /* ----------------------------------------------------------------------------------------------*/
  10. /* -----Define to prevent recursive inclusion----- */
  11. #ifndef __DEVELOP_H_
  12. #define __DEVELOP_H_
  13. /* -----Define to prevent recursive inclusion----- */
  14. /* -----Q format define----- */
  15. #define _Q7(A) (int8) ((A) * (128))
  16. #define _Q8(A) (int16)((A) * (256)) // Q8 format
  17. #define _Q10(A) (int16)((A) * (1024)) // Q15 format
  18. #define _Q11(A) (int16)((A) * (2048)) // Q12 format
  19. #define _Q12(A) (int16)((A) * (4096)) // Q12 format
  20. #define _Q13(A) (int16)((A) * (8192)) // Q12 format
  21. #define _Q14(A) (int16)((A) * (16383)) // Q15 format
  22. #define _Q15(A) (int16)((A) * (32767)) // Q15 format
  23. #define _2PI (3.1415926 * 2) // 2 PI value
  24. #define _Q16 (65535.0) // Q16 format value
  25. /* -----Private define----- */
  26. #define SystemPowerUpTime (10000) // 上电等待时间,cpu计数时钟
  27. #define I_ValueX(Curr_Value) ((Curr_Value) * (HW_RSHUNT) * (HW_AMPGAIN) / (HW_ADC_REF))
  28. #define I_Value(Curr_Value) _Q15(I_ValueX(Curr_Value))
  29. #define QOUTVALUE I_Value(QOUTCURRENT) //I_Value(10.0)
  30. /* -----芯片参数值----- */
  31. /* -----CPU and PWM Parameter----- */
  32. #define MCU_CLOCK (24.0) // (MHz) 主频
  33. #define AO_Enable (1) //自适应估算器模式使能
  34. /* -----硬件板子参数设置值----- */
  35. /* -----PWM high or low level Mode----- */
  36. /* -----根据驱动芯片的类型选择,大部分芯片为High_Level----- */
  37. #define PWM_Level_Mode (UP_H_DOWN_L)
  38. #define RV ((RV1 + RV2 + RV3) / RV3) // 分压比
  39. #define HW_BOARD_VOLT_MAX (HW_ADC_REF * RV) // (V) ADC可测得的最大母线电压
  40. /* -----时间设置值----- */
  41. #define Calib_Time (1000) // 校正次数,固定1000次,单位:次
  42. #define Charge_Time (20) // (ms) 预充电时间,单位:ms
  43. /* -----正常运行时估算算法的参数设置值----- */
  44. #define OBS_KSLIDE _Q15(0.85) // SMO算法里的滑膜增益值
  45. #define E_BW_Wind (600.0)//(BASE_FREQ*2) // PLL算法里的反电动势滤波值
  46. #define E_BW (400.0)//(BASE_FREQ*2) // PLL算法里的反电动势滤波值
  47. /* -----逆风判断时的估算算法设置值----- */
  48. #define TailWind_Time (100) // (ms) 顺逆风检测时间
  49. #define ATO_BW_Wind (120.0)//120.0-PLL 120.0-smo // 逆风判断观测器带宽的滤波值,经典值为8.0-100.0
  50. #define SPD_BW_Wind (10.0)//10.0-PLL ,10.0-smo // 逆风判断速度带宽的滤波值,经典值为5.0-40.0
  51. /* -----逆风顺风状态下的KP、KI----- */
  52. #define DQKP_TailWind _Q12(0.8) //_Q12(1.0)-PLL , _Q12(1.5) -smo
  53. #define DQKI_TailWind _Q15(0.01) //_Q15(0.08)-PLL ,_Q15(0.2)-smo
  54. /* -----芯片参数值----- */
  55. /* -----CPU and PWM Parameter----- */
  56. #define PWM_CYCLE (1000.0 / PWM_FREQUENCY) // 周期us
  57. #define SAMP_FREQ (PWM_FREQUENCY * 1000) // 采样频率(HZ)
  58. #define TPWM_VALUE (1.0 / SAMP_FREQ) // 载波周期(S)
  59. #define PWM_VALUE_LOAD (uint16)(MCU_CLOCK * 500 / PWM_FREQUENCY) // PWM 定时器重载值
  60. /* -----初始位置检查参数----- */
  61. #define PosCheckEnable (0) // 初始位置使能,目前程序中没添加此功能 20220616
  62. #define AlignEnable (0) // 预定位使能
  63. /* -----脉冲注入时间长于2ms 或 低于2ms----- */
  64. #define InjectTime (Short_Inject)
  65. #define RPD_Time (3) // (ms) 每次RPD的时间
  66. #define RPD_CurValue (6.5) // (A) RPD过流值
  67. #define DAC_RPDCurValue _Q7(I_ValueX(RPD_CurValue * 2))
  68. #define ATT_COEF (0.85) // 无需改动
  69. #define UDQMAX_Volt_VALUE _Q15(Under_Protect_Voltage/HW_BOARD_VOLT_MAX)
  70. #define UDQMIN_Volt_VALUE _Q15(Over_Protect_Voltage/HW_BOARD_VOLT_MAX)
  71. #define UDQ_K ((float)(UDQMAX-UDQMIN)/(float)(UDQMAX_Volt_VALUE-UDQMIN_Volt_VALUE)) //2498
  72. /* -----过温保护值设置----- */
  73. #define Tempera_Value(NTC_Value) _Q15((5.0*NTC_Value/(10.0+NTC_Value))/4.5) // 10K上拉电阻时,NTC阻值对应Q15_AD值,单位:KΩ
  74. /* -----double resistor sample Parameter----- */
  75. #define DLL_TIME (1.0) // 双电阻最小脉宽设置(us),建议值为死区时间值+0.2us以上
  76. /* -----three resistor overmodule Parameter----- */
  77. #define OVERMOD_TIME (2.0) // 三电阻过调制时间(us),建议值2.0
  78. /* -----deadtime compensation----- */
  79. #define DT_TIME (0.0) // 死区补偿时间(us),适用于双电阻和三电阻,建议值是1/2死区时间
  80. /* -----*min pulse----- */
  81. #define GLI_TIME (0.0) // 桥臂窄脉宽消除(us),建议值0.5
  82. /* -----deadtime Parameter----- */
  83. #define PWM_LOAD_DEADTIME (PWM_DEADTIME * MCU_CLOCK) // 死区设置值
  84. #define PWM_OVERMODULE_TIME (OVERMOD_TIME * MCU_CLOCK / 2) // 过调制时间
  85. #define PWM_DLOWL_TIME (DLL_TIME * MCU_CLOCK / 2) //下桥臂最小时间
  86. /* -----single resistor sample Parameter----- */
  87. #define PWM_TS_LOAD (uint16)(_Q16 / PWM_CYCLE * MIN_WIND_TIME / 16) // 单电阻采样设置值
  88. #define PWM_DT_LOAD (uint16)(_Q16 / PWM_CYCLE * DT_TIME / 16) // 死区补偿值
  89. //#define PWM_TGLI_LOAD (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME + PWM_DEADTIME) / 16) // 最小脉冲
  90. #define PWM_TGLI_LOAD (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME) / 16) // 最小脉冲
  91. /* -----硬件板子参数设置值----- */
  92. /* -----hardware current sample Parameter----- */
  93. /* -----电流基准的电路参数----- */
  94. #define HW_BOARD_CURR_MAX (HW_ADC_REF / 2 / HW_AMPGAIN / HW_RSHUNT) // 最大采样电流,2.702A
  95. #define HW_BOARD_CURR_MIN (-HW_BOARD_CURR_MAX) // 最小采样电流,-2.702A
  96. #define HW_BOARD_CURR_BASE (HW_BOARD_CURR_MAX * 2) // 电流基准//5.4A
  97. /* -----hardware voltage sample Parameter----- */
  98. /* -----母线电压采样分压电路参数----- */
  99. #define HW_BOARD_VOLTAGE_BASE (HW_BOARD_VOLT_MAX / 1.732) // 电压基准
  100. #define HW_BOARD_VOLTAGE_VC ((RV1 + RV2 + RV3 * VC1) / (RV3 * VC1))
  101. #define HW_BOARD_VOLTAGE_BASE_Start (HW_ADC_REF * HW_BOARD_VOLTAGE_VC / 1.732) // 电压基准
  102. /* -----硬件过流保护DAC值----- */
  103. /*硬件过流保护DAC值*/
  104. #if (AMP0_VHALF == 1)
  105. #define DAC_OvercurrentValue ((uint8)_Q8(I_ValueX(OverHardcurrentValue))+0x7F)
  106. #else
  107. #define DAC_OvercurrentValue ((uint8)_Q8(I_ValueX(OverHardcurrentValue)))
  108. #endif
  109. #define Align_Theta _Q15((float)Align_Angle / 180.0)
  110. #define BEMF_Theta _Q15((float)0.0 / 180.0)
  111. #define BASE_FREQ ((MOTOR_SPEED_BASE / 60) * Pole_Pairs) // 基准频率
  112. #define FG_Value (TIM4_Fre/BASE_FREQ/ FG_K)
  113. /* -----保护参数值----- */
  114. #define GetCurrentOffsetValueLow (16383-GetCurrentOffsetValue) // 偏置电压差值低点
  115. #define GetCurrentOffsetValueHigh (16383+GetCurrentOffsetValue) // 偏置电压差值高点
  116. /* -----protect value----- */
  117. #define OVER_PROTECT_VALUE _Q15(Over_Protect_Voltage / HW_BOARD_VOLT_MAX)
  118. #define UNDER_PROTECT_VALUE _Q15(Under_Protect_Voltage / HW_BOARD_VOLT_MAX)
  119. #define OVER_RECOVER_VALUE _Q15(Over_Recover_Vlotage / HW_BOARD_VOLT_MAX)
  120. #define UNDER_RECOVER_VALUE _Q15(Under_Recover_Vlotage / HW_BOARD_VOLT_MAX)
  121. /* -----motor speed set value----- */
  122. #define Motor_Open_Ramp_ACC _Q15(MOTOR_OPEN_ACC / MOTOR_SPEED_BASE)
  123. #define Motor_Open_Ramp_Min _Q15(MOTOR_OPEN_ACC_MIN / MOTOR_SPEED_BASE)
  124. #define Motor_Omega_Ramp_Min _Q15(MOTOR_OMEGA_ACC_MIN / MOTOR_SPEED_BASE)
  125. #define Motor_Omega_Ramp_End _Q15(MOTOR_OMEGA_ACC_END / MOTOR_SPEED_BASE)
  126. #define Motor_Loop_Speed _Q15(MOTOR_LOOP_RPM / MOTOR_SPEED_BASE)
  127. #define Motor_Max_Speed _Q15(MOTOR_SPEED_MAX_RPM / MOTOR_SPEED_BASE)
  128. #define Motor_Min_Speed _Q15(MOTOR_SPEED_MIN_RPM / MOTOR_SPEED_BASE)
  129. #define Motor_Limit_Speed _Q15(MOTOR_SPEED_LIMIT_RPM / MOTOR_SPEED_BASE)
  130. #define Motor_Stop_Speed _Q15(MOTOR_SPEED_STOP_RPM / MOTOR_SPEED_BASE)
  131. #define Motor_Stall_Speed _Q15(Stall_DectSpeed / MOTOR_SPEED_BASE)
  132. #define Motor_Stall_Min_Speed _Q15(MOTOR_SPEED_STAL_MIN_RPM / MOTOR_SPEED_BASE)
  133. #define Motor_Stall_Max_Speed _Q15(MOTOR_SPEED_STAL_MAX_RPM / MOTOR_SPEED_BASE)
  134. #define Motor_RD_Speed _Q15(MOTOR_SPEED_RD_RPM / MOTOR_SPEED_BASE)
  135. #define Motor_RDPT_Speed _Q15(MOTOR_SPEED_RDPT_RPM / MOTOR_SPEED_BASE)
  136. #define Motor_RDRCV_Speed _Q15(MOTOR_SPEED_RDRCV_RPM / MOTOR_SPEED_BASE)
  137. #define Motor_Over_Speed _Q15(MOTOR_SPEED_OVER_RPM / MOTOR_SPEED_BASE)
  138. #define Motor_Over_RecoverSpeed _Q15(MOTOR_SPEED_OVER_RecoverRPM / MOTOR_SPEED_BASE)
  139. #define SPEED_K ((float)(Motor_Max_Speed-Motor_Min_Speed)/(float)(MAXPWMDuty-MINPWMDuty))
  140. #define POWER_K ((float)(Motor_Max_Power-Motor_Min_Power)/(float)(MAXPWMDuty-MINPWMDuty))
  141. /* -----obsever parameter set value----- */
  142. #define MAX_BEMF_VOLTAGE ((MOTOR_SPEED_BASE*Ke)/(1000.0))
  143. #define MAX_OMEG_RAD_SEC ((float)(_2PI*BASE_FREQ))
  144. //#define OBS_K1T _Q15(LD/(LD+RS*TPWM_VALUE))
  145. //#define OBS_K2T _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
  146. //#define OBS_K2T_SMO _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*1.4*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
  147. //#define OBS_K2T_Actual _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE/HW_BOARD_CURR_BASE))
  148. //#define OBS_K3T _Q15((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(MAX_BEMF_VOLTAGE/HW_BOARD_CURR_BASE))
  149. //#define OBS_K4T _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
  150. //自适应估算器模式使能
  151. #if (AO_Enable==1)
  152. #define OBS_K1T _Q11((1.0*3.0/(125.0*1.0))*(LQ/TPWM_VALUE)*(HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE))
  153. #define OBS_K2T _Q11(0.8*RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
  154. //#define OBS_K2T_SMO _Q11(1.0*RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
  155. #define OBS_K2T_Actual OBS_K2T
  156. #define OBS_K3T _Q8(2.5)
  157. #define OBS_K4T _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
  158. #else
  159. #define OBS_K1T _Q15(LD/(LD+RS*TPWM_VALUE))
  160. #define OBS_K2T _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
  161. #define OBS_K2T_SMO _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*1.4*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
  162. #define OBS_K2T_Actual _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE/HW_BOARD_CURR_BASE))
  163. #define OBS_K3T _Q15((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(MAX_BEMF_VOLTAGE/HW_BOARD_CURR_BASE))
  164. #define OBS_K4T _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
  165. #endif
  166. #define OBSW_KP_GAIN _Q12(2*_2PI*ATT_COEF*ATO_BW/BASE_FREQ)
  167. #define OBSW_KI_GAIN _Q15(_2PI*ATO_BW*ATO_BW*TPWM_VALUE/BASE_FREQ)
  168. #define OBSW_KP_GAIN_RUN _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN/BASE_FREQ)
  169. #define OBSW_KI_GAIN_RUN _Q15(_2PI*ATO_BW_RUN*ATO_BW_RUN*TPWM_VALUE/BASE_FREQ)
  170. #define OBSW_KP_GAIN_RUN1 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN1/BASE_FREQ)
  171. #define OBSW_KI_GAIN_RUN1 _Q15(_2PI*ATO_BW_RUN1*ATO_BW_RUN1*TPWM_VALUE/BASE_FREQ)
  172. #define OBSW_KP_GAIN_RUN2 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN2/BASE_FREQ)
  173. #define OBSW_KI_GAIN_RUN2 _Q15(_2PI*ATO_BW_RUN2*ATO_BW_RUN2*TPWM_VALUE/BASE_FREQ)
  174. #define OBSW_KP_GAIN_RUN3 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN3/BASE_FREQ)
  175. #define OBSW_KI_GAIN_RUN3 _Q15(_2PI*ATO_BW_RUN3*ATO_BW_RUN3*TPWM_VALUE/BASE_FREQ)
  176. #define OBSW_KP_GAIN_RUN4 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN4/BASE_FREQ)
  177. #define OBSW_KI_GAIN_RUN4 _Q15(_2PI*ATO_BW_RUN4*ATO_BW_RUN4*TPWM_VALUE/BASE_FREQ)
  178. #define OBS_FBASE BASE_FREQ*TPWM_VALUE*32768 // Fbase*Tpwm*32768
  179. #define OBS_KLPF _Q15(_2PI*BASE_FREQ*TPWM_VALUE) // 2PI*Fbase*Tpwm
  180. #define SPEED_KLPF _Q15(_2PI*SPD_BW*TPWM_VALUE) // 2PI*SPD_BW*Tpwm
  181. #define OBS_EA_KS _Q15((2*MOTOR_SPEED_SMOMIN_RPM*_2PI*BASE_FREQ*TPWM_VALUE)/MOTOR_SPEED_BASE) // SMO的最小速度
  182. #define OBSE_PLLKP_GAIN_WIND _Q11(((2*ATT_COEF*_2PI*E_BW_Wind*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
  183. #define OBSE_PLLKI_GAIN_WIND _Q11((_2PI*E_BW_Wind*_2PI*E_BW_Wind*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
  184. #define OBSE_PLLKP_GAIN _Q11(((2*ATT_COEF*_2PI*E_BW*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
  185. #define OBSE_PLLKI_GAIN _Q11((_2PI*E_BW*_2PI*E_BW*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
  186. #define VREF3_0 (1)
  187. #define VREF4_0 (2)
  188. #define VREF4_5 (3)
  189. #define VREF5_0 (4)
  190. #if (HW_ADC_VREF==VREF5_0)
  191. #define HW_ADC_REF (5.0) // (V) ADC参考电压
  192. #elif (HW_ADC_VREF==VREF4_5)
  193. #define HW_ADC_REF (4.5) // (V) ADC参考电压
  194. #elif (HW_ADC_VREF==VREF4_0)
  195. #define HW_ADC_REF (4.0) // (V) ADC参考电压
  196. #elif (HW_ADC_VREF==VREF3_0)
  197. #define HW_ADC_REF (3.0) // (V) ADC参考电压
  198. #endif
  199. /* -----逆风判断时的估算算法设置值----- */
  200. #define SPEED_KLPF_WIND _Q15(_2PI*SPD_BW_Wind*TPWM_VALUE) // 2PI*SPD_BW_Wind*Tpwm
  201. #define OBSW_KP_GAIN_WIND _Q12(2*_2PI*ATT_COEF*ATO_BW_Wind/BASE_FREQ)
  202. //#define OBSW_KI_GAIN_WIND _Q15(_2PI*0.5*ATO_BW_Wind*ATO_BW_Wind*TPWM_VALUE/BASE_FREQ) //---SMO
  203. #define OBSW_KI_GAIN_WIND _Q15(_2PI*ATO_BW_Wind*ATO_BW_Wind*TPWM_VALUE/BASE_FREQ) //---PLL
  204. /* -----motor start speed value----- */
  205. /* -----open 算法启动参数----- */
  206. #define MOTOR_OPEN_ACC (200) // 强拖启动的增量(每载波周期加一次)
  207. #define MOTOR_OPEN_ACC_MIN (0) // 强拖启动的初始速度
  208. #define MOTOR_OPEN_ACC_CNT (100) // 强拖启动的执行次数(MOTOR_OPEN_ACC_CNT*256)
  209. /* -----Current Calib:enable or disable----- */
  210. #define CalibDisable (0) //
  211. #define CalibEnable (1) //
  212. #define CalibENDIS (CalibEnable)
  213. /* -----SVPWM mode----- */
  214. #define SVPWM_5_Segment (0) // 五段式SVPWM
  215. #define SVPWM_7_Segment (1) // 七段式SVPWM
  216. #define SVPMW_Mode (SVPWM_7_Segment)
  217. /* -----double resistor sample mode----- */
  218. #define DouRes_1_Cycle (0) // 1 周期采样完 ia, ib
  219. #define DouRes_2_Cycle (1) // 交替采用ia, ib, 2周期采样完成
  220. #define DouRes_Sample_Mode (DouRes_1_Cycle)
  221. /* -----PWM high or low level Mode----- */
  222. /* -----根据驱动芯片的类型选择,大部分芯片为High_Level----- */
  223. #define High_Level (0) // 驱动高电平有效
  224. #define Low_Level (1) // 驱动低电平有效
  225. #define UP_H_DOWN_L (2) // 上桥臂高电平有效,下桥臂低电平有效
  226. #define UP_L_DOWN_H (3) // 上桥臂低电平有效,下桥臂高电平有效
  227. /* -----脉冲注入时间长于2ms 或 低于2ms----- */
  228. #define Long_Inject (0) // 脉冲注入时间长于2ms,若时间长于4ms,则要修改定时器分频
  229. #define Short_Inject (1) // 脉冲注入时间低于2ms
  230. /* -----调速模式----- */
  231. #define PWMMODE (0) // PWM调速
  232. #define SREFMODE (1) // 模拟调速
  233. #define NONEMODE (2) // 直接给定值,不调速
  234. #define KEYMODE (3) // 按键调速模式
  235. /* -----IPM测试模式----- */
  236. #define IPMtest (0) // IPM测试或者MOS测试,MCU输出固定占空比
  237. #define NormalRun (1) // 正常按电机状态机运行
  238. /* -----估算器模式选择----- */
  239. #define SMO (0) // SMO ,滑膜估算
  240. #define PLL (1) // PLL ,锁相环
  241. /* -----顺逆风判断设置----- */
  242. #define NoTailWind (0) // 无逆风顺风判断
  243. #define RSDMethod (1) // RSD比较器方法
  244. #define BEMFMethod (2) // BEMF方法
  245. /* -----开环启动模式选择----- */
  246. #define Open_Start (0) // 开环强拖启动
  247. #define Omega_Start (1) // Omega启动
  248. #define Open_Omega_Start (2) // 先开环启,后Omega启动
  249. /* -----电流采样模式----- */
  250. #define Single_Resistor (0) // 单电阻电流采样模式
  251. #define Double_Resistor (1) // 双电阻电流采样模式
  252. #define Three_Resistor (2) // 三电阻电流采样模式
  253. /* -----硬件过流保护----- */
  254. #define Hardware_FO_Protect (1) // 硬件FO过流保护使能,适用于IPM有FO保护的场合
  255. #define Hardware_CMP_Protect (2) // 硬件CMP比较过流保护使能,适用于MOS管应用场合
  256. #define Hardware_FO_CMP_Protect (3) // 硬件CMP比较和FO过流保护都使能
  257. #define Hardware_Protect_Disable (4) // 硬件过流保护禁止,用于测试
  258. /* -----硬件过流保护比较值来源----- */
  259. #define Compare_DAC (0) // DAC设置硬件过流值
  260. #define Compare_Hardware (1) // 硬件设置硬件过流值
  261. /* -----外环选择功率环或速度环----- */
  262. //#define POWER_LOOP_CONTROL (0) //恒功率
  263. //#define SPEED_LOOP_CONTROL (1) //恒转速
  264. //#define CURRENT_LOOP_CONTROL (2)
  265. /* -----外环使能----- */
  266. #define OUTLoop_Disable (0) // 关闭外环
  267. #define OUTLoop_Enable (1) // 使能外环
  268. /* -----正PWMduty or 负PWMduty Choose----- */
  269. #define PosiPWMDUTY (0) // 正PWMduty
  270. #define NegaPWMDUTY (1) // 负PWMduty
  271. /* -----堵转跟启动保护----- */
  272. #define StartFault (1) //
  273. #define StallFault (2) //
  274. #if (PosCheckEnable==1)
  275. #error "data 20220616,RPD Program has not been added"
  276. #endif
  277. #if ((AO_Enable==1) &&(EstimateAlgorithm == PLL))
  278. #error "AO_Enable must match `EstimateAlgorithm = SMO`"
  279. #endif
  280. #endif