Customer.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. #ifndef __CUSTOMER_H_
  2. #define __CUSTOMER_H_
  3. // ------------------------------------------------------------------------------------------------------------------
  4. // 1.电机相关参数: 电阻(Ω) DQ电感(H) 反电动势常数(V/RPM) 转向(CW/CCW) 基准转速(RPM) 极对数
  5. #define RS (0.5)
  6. #define LD (0.004)
  7. #define LQ (0.004)
  8. #define Ke (38.3)
  9. #define Psi (float)(Ke * 207.84 / 1000.0 / 2.0 / 1.732 / Pole_Pairs / _2PI )
  10. #define IRMODE (CCW)
  11. #define MOTOR_SPEED_BASE (12000.0)
  12. #define Pole_Pairs (2)
  13. #define ID_Limit I_Value(-Psi/LD/2)
  14. // ------------------------------------------------------------------------------------------------------------------
  15. // 2.硬件相关:载波频率(KHz) 死区(us) 单电阻最小窗口(us) 驱动电平 基准电压(V)
  16. #define PWM_FREQUENCY (5.0)
  17. #define PWM_DEADTIME (5.0)
  18. #define MIN_WIND_TIME (5.9)
  19. #define PWM_Level_Mode (High_Level)
  20. #define HW_ADC_VREF (VREF5_0)
  21. #define HW_ADC_REF (5.0)
  22. // 运放配置 运放倍数
  23. #define HW_AMP_MODE (AMP_NOMAL)
  24. #define HW_AMPGAIN (0.5)
  25. // ------------------------------------------------------------------------------------------------------------------
  26. // 3.其他
  27. // ------------------------------------------------------------------------------------------------------------------
  28. // 4.LED故障指示
  29. #define LED_PIN (GP03)
  30. #define LED_ON (LED_PIN = 0) // LED 点亮
  31. #define LED_OFF (LED_PIN = 1) // LED 熄灭
  32. #define LED_OFF_STATE (LED_PIN == 1) // LED 熄灭状态
  33. #define LED_TOGGLE (LED_PIN = ~LED_PIN) // LED 翻转
  34. #define HW_RSHUNT (0.04) // (Ω) 采样电阻
  35. #define I_ValueX(Curr_Value) (Curr_Value * HW_RSHUNT * HW_AMPGAIN / (HW_ADC_REF))
  36. #define I_Value(Curr_Value) _Q15(I_ValueX(Curr_Value))
  37. #define MCU_CLOCK (24.0) // (MHz) 主频
  38. #define RV1 (940.0) // (kΩ) 母线电压分压电阻1
  39. #define RV2 (940.0) // (kΩ) 母线电压分压电阻2
  40. #define RV3 (0.3) // (kΩ) 母线电压分压电阻3
  41. #define VC1 (1.0) // 电压补偿系数
  42. // #define RV ((RV1 + RV2 + RV3) / RV3) // 分压比
  43. #define RV (250.7 / 1.0) // 分压比 ((RV1 + RV2 + RV3) / RV3/8/7.5*2.4)
  44. #define HW_BOARD_VOLT_MAX (HW_ADC_REF * RV) // (V) ADC可测得的最大母线电压
  45. #define RL1 (450.0) // (kΩ) 母线电压分压电阻1
  46. #define RL2 (2.0) // (kΩ) 母线电压分压电阻2
  47. #define RL ((RL1 + RL2) / RL2) // 分压比
  48. #define HW_L_VOLT_MAX (HW_ADC_REF * RL) // (V) ADC可测得的最大母线电压
  49. #define Udcmax_ms (20.0* PWM_FREQUENCY ) // 60*ms读取一次UDC最大值和最小值
  50. /*预充电设置值-------------------------------------------------------------------*/
  51. #define Charge_Time (100) //30 // (ms) 预充电时间,单位:ms
  52. #define Calib_Duty (0.1) // 预充电占空比
  53. /*正常运行时估算算法的参数设置值-------------------------------------------------*/
  54. #define OBS_KSLIDE _Q15(0.85) //0.65 // SMO算法里的滑膜增益值
  55. #define E_BW1 (80.0) // PLL算法里的反电动势滤波值
  56. #define E_BW2 (80.0) // PLL算法里的反电动势滤波值
  57. #define E_BW3 (80.0) // PLL算法里的反电动势滤波值
  58. #define E_BW4 (80.0) // PLL算法里的反电动势滤波值
  59. #define E_BW5 (80.0) // PLL算法里的反电动势滤波值
  60. #define AlignTestMode (0) // 预定位测试模式
  61. /***预定位的Kp、Ki****/
  62. #define DQKP_Alignment _Q12(5.0) // 预定位的KP
  63. #define DQKI_Alignment _Q15(0.01) // 预定位的KI
  64. #define IQ_Align_CURRENT I_Value(0.0) /* (A) D轴定位电流 */
  65. #define ID_Align_CURRENT_Start I_Value(15.0) /* (A) Q轴定位初始电流 */
  66. #define ID_Align_CURRENT_End ID_Align_CURRENT_Start /* (A) Q轴定位保持电流 */
  67. #define Align_Angle1 _Q15((float)0.0 / 180.0) /* 定位角度1,固定为 0 度 用于检测缺相 */
  68. #define Align_Angle2 _Q15((float)90.0 / 180.0) /* 定位角度2,二次预定位 */
  69. #define Align_Start (Align_Angle2 - _Q15((float)30.0 / 180.0)) /* 启动角度 */
  70. #define AlignmentRampTime (500.0) /* (ms) 预定位电流爬坡时间 */
  71. #define AlignmentHoldTime1 (500.0) /* (ms) 预定位电流保持时间 */
  72. #define AlignmentHoldTime2 (500.0) /* (ms) 预定位电流保持时间 */
  73. #define Align_Time (AlignmentRampTime + AlignmentHoldTime1+AlignmentHoldTime2)
  74. /***启动电流****/
  75. #define ID_Start_CURRENT I_Value(0.0) // (A) D轴启动电流
  76. #define IQ_Start_CURRENT I_Value(25.0) // (A) Q轴启动电流
  77. #define IQ_Start_CURRENT2 I_Value(25.0) // (A) Q轴启动电流
  78. /***运行电流****/
  79. #define ID_RUN_CURRENT I_Value(0.0) // (A) D轴运行电流
  80. #define IQ_RUN_CURRENT I_Value(1.5) // (A) Q轴运行电流
  81. #define Start_FOC_THECOMP _Q15(10.0/180.0) //启动补偿角度
  82. /*************Omega启动的参数***************/
  83. #define ATO_BW (120.0) // 观测器带宽的滤波值,经典值为1.0-200.0
  84. #define ATO_BW_RUN (130.0)
  85. #define ATO_BW_RUN1 (140.0)
  86. #define ATO_BW_RUN2 (150.0)
  87. #define ATO_BW_RUN3 (160.0)
  88. #define ATO_BW_RUN4 (190.0)
  89. #define SPD_BW (25.0) // 速度带宽的滤波值,经典值为5.0-40.0
  90. #define ATT_COEF (0.95) // 无需改动
  91. /*转速参数值-------------------------------------------------------------------*/
  92. /* motor start speed value */
  93. //open 算法启动参数
  94. #define MOTOR_OPEN_ACC (1.0) //30.0 // 强拖启动的增量(每载波周期加一次)
  95. #define MOTOR_OPEN_ACC_MIN (100.0) //20.0 // 强拖启动的初始速度
  96. #define MOTOR_OPEN_ACC_CNT (250.0) //100.0 // 强拖启动的执行次数(MOTOR_OPEN_ACC_CNT*256)
  97. #define MOTOR_OPEN_ACC_CYCLE (100) //5 // 强拖启动循环拖动的次数
  98. //OMEGA启动参数
  99. #define Motor_Omega_Ramp_ACC (300.0) //(50.00) //5.0 //60 // omega启动的增量 12
  100. #define MOTOR_OMEGA_ACC_MIN (200.0) //(800.0) //20.0 //100 // (RPM) omega启动的最小切换转速
  101. #define MOTOR_OMEGA_ACC_END (400.0) //50.0 // (RPM) omega启动的限制转速
  102. #define TARGET_SPEED_SET _Q15(2000.0/MOTOR_SPEED_BASE)
  103. #define MOTOR_SPEED_SMOMIN_RPM (400.0)
  104. #define MOTOR_LOOP_RPM _Q15(500.0 / MOTOR_SPEED_BASE)
  105. #define MOTOE_MIN_SPEED _Q15(900.0/ MOTOR_SPEED_BASE)
  106. #define MOTOR_MAX_SPEED _Q15(5400.0/ MOTOR_SPEED_BASE)
  107. #define MOTOR_STALL_MIN_SPEED _Q15(800.0/ MOTOR_SPEED_BASE)
  108. #define MOTOR_STALL_MAX_SPEED _Q15(7000.0/ MOTOR_SPEED_BASE)
  109. #define MOTOR_STOP_SPEED _Q15(1300.0/ MOTOR_SPEED_BASE)
  110. /*******运行时的参数*****************/
  111. /*电流环参数设置值--------------------------------------------------------------*/
  112. /*启动*/
  113. #define DQKPStart _Q12(4.0) //1.1
  114. #define DQKIStart _Q15(0.0081) //0.01
  115. /*低速*/
  116. #define DQKP _Q12(2.0) //带载时5.0
  117. #define DQKI _Q15(0.002) //此值不能太大,大了后影响低速性能(与转矩补偿冲突)
  118. /*中速*/
  119. #define DQKP_zhong _Q12(1.5) //带载时5.0
  120. #define DQKI_zhong _Q15(0.002) //
  121. /*高速*/
  122. #define DQKP_highspeed _Q12(1.5) //4.0 切换时易导致转速波动
  123. #define DQKI_highspeed _Q15(0.002) //0.02 0.011
  124. #define QOUTINC (1)
  125. /*外环参数设置值----------------------------------------------------------------*/
  126. #define SPEED_LOOP_TIME (1) //2 // (ms) 速度环调节周期 SPEED_INC_DEC_TIME
  127. #define WEAK_LOOP_TIME (1) //2 // (ms) 速度环调节周期 SPEED_INC_DEC_TIME
  128. #define SPEED_INC_DEC_TIME (200) // (ms) 速度环爬坡周期
  129. /*启动*/
  130. #define SKP _Q12(0.65) //0.25 // 外环KP
  131. #define SKI _Q15(0.010) //0.00251
  132. /*低速*/
  133. #define SKPRun _Q12(0.45) //0.35 // 外环KP
  134. #define SKIRun _Q15(0.03) //0.03 // 外环KI 0.01 ,影响转矩补偿
  135. /*中速*/
  136. #define SKPRun1 _Q12(0.30)//0.2 太大高速时波动,太小
  137. #define SKIRun1 _Q15(0.01) //0.0005
  138. /*高速*/
  139. #define SKPRun2 _Q12(0.30)//0.15 太大高速时波动,太小
  140. #define SKIRun2 _Q15(0.01) //0.0002 // 外环KI
  141. #define SOUTMAX I_Value(60.0) //7.0 //16 // (A) 外环最大限幅值
  142. #define SOUTMIN I_Value(0.0) //0.02 // (A) 外环最小限幅值
  143. #define I_OVER I_Value(78.0) // 降频点 超过此值降频率
  144. #define I_LIMIT I_Value(77.0) // 限制电流值
  145. #define P_OVER P_Power(15180) // 降频点 超过此值降频率
  146. #define P_LIMIT P_Power(15150) // 限制功率值
  147. /*外环增量*/
  148. #define SPEED_INC_Start (200.0)
  149. #define SPEED_INC (200.0) //150 // 速度环增量
  150. #define SPEED_DEC (200.0) //150 // 速度环减量
  151. #define SPEED_DEC1 (800.0) //150 // 速度环减量 停机时使用
  152. #define SpeedRampStartInc (S_Value(SPEED_INC_Start))/(1000/SPEED_INC_DEC_TIME)
  153. #define Motor_Speed_Inc (S_Value(SPEED_INC)) /(1000/(SPEED_LOOP_TIME*20.0))
  154. #define Motor_Speed_Dec (S_Value(SPEED_DEC)) /(1000/(SPEED_LOOP_TIME*20.0))
  155. #define Motor_Speed_Dec1 (S_Value(SPEED_DEC1)) /(1000/SPEED_INC_DEC_TIME)
  156. #define MotorStartHoldTime (15000) //上油时间 15000
  157. #define Motor_Start_Hold_Speed _Q15(2700.0 / MOTOR_SPEED_BASE)
  158. #define OUT_LOOP_CONTROL (1)
  159. #define LOOP_MODE (SPEED_CONTROL_MODE)
  160. #define SPEED_MODE (UARTMODE)
  161. #define CONTROL_MODE (NONEMODE)
  162. #define StopBrakeFlag (0)
  163. #define StopWaitTime (2000) // (ms) 刹车等待时间
  164. // 弱磁控制
  165. #define FiledWeakenCompEnable (0)
  166. #define DcbusK _Q15(0.8)
  167. #define FiledWeakenKp _Q12(0.4)
  168. #define FiledWeakenKi _Q15(0.0001)
  169. #define TIM_4_T (375000) //定时器4频率
  170. #define TIM_4_T_Pole_Pairs (4) //风机脉冲数
  171. #define TIM_4_fengji_speedxishu ((60*TIM_4_T)/TIM_4_T_Pole_Pairs) //60f/p
  172. #define Uart_MoNi (0) //模拟串口
  173. #define Uart_Yingjian (1) //硬件串口
  174. #define Uart_Select (Uart_Yingjian) // 通信模式选择,380bps及其选择软件,否则硬件
  175. #define Uart_COMMUNICATION (1) // 通信协议 0:格力 1;月兔
  176. #define Debugg (1) // 调试工具选择
  177. #define IFFDebugg (0) // 强拖测试模式
  178. #define IF_I_Value I_Value(10.0) // 强拖测试电流
  179. #define VoltageCompensationEn (0)//电压补偿使能位
  180. //电压限频
  181. #define VAC_Min_F 900
  182. #define VAC_Max_F 900
  183. #define VAC_Min _Q15((290.0*1.414) / HW_L_VOLT_MAX)
  184. #define VAC_Max _Q15((360.0*1.414) / HW_L_VOLT_MAX)
  185. #define VAC_Max_K ((float)(VAC_Max_F-VAC_Min_F)/(float)(VAC_Max-VAC_Min))
  186. #endif