|
|
@@ -91,22 +91,6 @@
|
|
|
#define DT_TIME (1.0) // 死区补偿时间(us)适用于双电阻和三电阻,建议值是1/2死区时间
|
|
|
#define GLI_TIME (0.5) // 桥臂窄脉宽消除(us),建议值0.5
|
|
|
|
|
|
-#define PWM_CYCLE (1000.0 / PWM_FREQUENCY) // 周期us
|
|
|
-#define SAMP_FREQ (PWM_FREQUENCY * 1000) // 采样频率(HZ)
|
|
|
-#define TPWM_VALUE (1.0 / SAMP_FREQ) // 载波周期(S)
|
|
|
-#define PWM_VALUE_LOAD (uint16)(MCU_CLOCK * 1000 *2 / PWM_FREQUENCY) // PWM 定时器重载值
|
|
|
-
|
|
|
-#define PWM_LOAD_DEADTIME (PWM_DEADTIME * MCU_CLOCK) // 死区设置值
|
|
|
-#define PWM_OVERMODULE_TIME (OVERMOD_TIME * MCU_CLOCK / 2) // 过调制时间
|
|
|
-#define PWM_DLOWL_TIME (DLL_TIME * MCU_CLOCK / 2) //下桥臂最小时间
|
|
|
-
|
|
|
-#define PWM_TS_LOAD (uint16)(_Q16 / PWM_CYCLE * MIN_WIND_TIME / 16) // 单电阻采样设置值
|
|
|
-#define PWM_DT_LOAD (uint16)(_Q16 / PWM_CYCLE * DT_TIME / 16) // 死区补偿值
|
|
|
-#define PWM_TGLI_LOAD (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME + PWM_DEADTIME) / 16) // 最小脉冲
|
|
|
-
|
|
|
-#define BASE_FREQ ((MOTOR_SPEED_BASE / 60) * Pole_Pairs) // 基准频率
|
|
|
-
|
|
|
-
|
|
|
#define PWM_LEVEL_MODE (HIGH_LEVEL)
|
|
|
|
|
|
// DQ轴最大限幅值
|
|
|
@@ -140,6 +124,30 @@
|
|
|
#define SPD_BW (25.0)
|
|
|
#define ATT_COEF (0.95)
|
|
|
|
|
|
+#define PWM_CYCLE (1000.0 / PWM_FREQUENCY) // 周期us
|
|
|
+#define SAMP_FREQ (PWM_FREQUENCY * 1000) // 采样频率(HZ)
|
|
|
+#define TPWM_VALUE (1.0 / SAMP_FREQ) // 载波周期(S)
|
|
|
+#define PWM_VALUE_LOAD (uint16)(MCU_CLOCK * 1000 *2 / PWM_FREQUENCY) // PWM 定时器重载值
|
|
|
+
|
|
|
+#define PWM_LOAD_DEADTIME (PWM_DEADTIME * MCU_CLOCK) // 死区设置值
|
|
|
+#define PWM_OVERMODULE_TIME (OVERMOD_TIME * MCU_CLOCK / 2) // 过调制时间
|
|
|
+#define PWM_DLOWL_TIME (DLL_TIME * MCU_CLOCK / 2) //下桥臂最小时间
|
|
|
+
|
|
|
+#define PWM_TS_LOAD (uint16)(_Q16 / PWM_CYCLE * MIN_WIND_TIME / 16) // 单电阻采样设置值
|
|
|
+#define PWM_DT_LOAD (uint16)(_Q16 / PWM_CYCLE * DT_TIME / 16) // 死区补偿值
|
|
|
+#define PWM_TGLI_LOAD (uint16)(_Q16 / PWM_CYCLE * (GLI_TIME + PWM_DEADTIME) / 16) // 最小脉冲
|
|
|
+
|
|
|
+#define BASE_FREQ ((MOTOR_SPEED_BASE / 60) * Pole_Pairs) // 基准频率
|
|
|
+
|
|
|
+
|
|
|
+#define MAX_BEMF_VOLTAGE ((MOTOR_SPEED_BASE*Ke)/(1000.0))
|
|
|
+#define MAX_OMEG_RAD_SEC ((float)(_2PI*BASE_FREQ))
|
|
|
+
|
|
|
+#define OBS_FBASE _Q15(BASE_FREQ*TPWM_VALUE)
|
|
|
+#define OBS_KLPF _Q15(_2PI*BASE_FREQ*TPWM_VALUE)
|
|
|
+#define SPEED_KLPF _Q15(_2PI*SPD_BW*TPWM_VALUE)
|
|
|
+#define OBS_EA_KS _Q15((2*MOTOR_SPEED_SMOMIN_RPM*_2PI*BASE_FREQ*TPWM_VALUE)/MOTOR_SPEED_BASE)
|
|
|
+
|
|
|
|
|
|
// 过调制
|
|
|
#define OverModulation (0)
|
|
|
@@ -152,6 +160,57 @@
|
|
|
#define SVPMW_Mode (SVPWM_7_Segment)
|
|
|
#define DouRes_Sample_Mode (DouRes_1_Cycle)
|
|
|
|
|
|
+
|
|
|
+#if (EstimateAlgorithm==AO)
|
|
|
+ #define OBS_K1T _Q11((3.0/(125.0*1.0))*(LQ/TPWM_VALUE)*(HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE))
|
|
|
+ #define OBS_K2T _Q11(RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
|
|
|
+ #define OBS_K2T_Actual _Q11(RS*HW_BOARD_CURR_BASE/HW_BOARD_VOLTAGE_BASE)
|
|
|
+ #define OBS_K3T _Q8(2.5)
|
|
|
+ #define OBS_K4T _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
|
|
|
+#else
|
|
|
+ #define OBS_K1T _Q15(LD/(LD+RS*TPWM_VALUE))
|
|
|
+ #define OBS_K2T _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE_Start/HW_BOARD_CURR_BASE))
|
|
|
+ #define OBS_K2T_Actual _Q13((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(HW_BOARD_VOLTAGE_BASE/HW_BOARD_CURR_BASE))
|
|
|
+ #define OBS_K3T _Q15((TPWM_VALUE/(LD+RS*TPWM_VALUE))*(MAX_BEMF_VOLTAGE/HW_BOARD_CURR_BASE))
|
|
|
+ #define OBS_K4T _Q15(((LD-LQ)*TPWM_VALUE*MAX_OMEG_RAD_SEC)/(LD+RS*TPWM_VALUE))
|
|
|
+#endif
|
|
|
+
|
|
|
+// AO SMO 估算器增益
|
|
|
+#define OBSW_KP_GAIN _Q12(2*_2PI*ATT_COEF*ATO_BW/BASE_FREQ)
|
|
|
+#define OBSW_KI_GAIN _Q15(_2PI*ATO_BW*ATO_BW*TPWM_VALUE/BASE_FREQ)
|
|
|
+
|
|
|
+#define OBSW_KP_GAIN_RUN _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN/BASE_FREQ)
|
|
|
+#define OBSW_KI_GAIN_RUN _Q15(_2PI*ATO_BW_RUN*ATO_BW_RUN*TPWM_VALUE/BASE_FREQ)
|
|
|
+
|
|
|
+#define OBSW_KP_GAIN_RUN1 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN1/BASE_FREQ)
|
|
|
+#define OBSW_KI_GAIN_RUN1 _Q15(_2PI*ATO_BW_RUN1*ATO_BW_RUN1*TPWM_VALUE/BASE_FREQ)
|
|
|
+
|
|
|
+#define OBSW_KP_GAIN_RUN2 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN2/BASE_FREQ)
|
|
|
+#define OBSW_KI_GAIN_RUN2 _Q15(_2PI*ATO_BW_RUN2*ATO_BW_RUN2*TPWM_VALUE/BASE_FREQ)
|
|
|
+
|
|
|
+#define OBSW_KP_GAIN_RUN3 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN3/BASE_FREQ)
|
|
|
+#define OBSW_KI_GAIN_RUN3 _Q15(_2PI*ATO_BW_RUN3*ATO_BW_RUN3*TPWM_VALUE/BASE_FREQ)
|
|
|
+
|
|
|
+#define OBSW_KP_GAIN_RUN4 _Q12(2*_2PI*ATT_COEF*ATO_BW_RUN4/BASE_FREQ)
|
|
|
+#define OBSW_KI_GAIN_RUN4 _Q15(_2PI*ATO_BW_RUN4*ATO_BW_RUN4*TPWM_VALUE/BASE_FREQ)
|
|
|
+
|
|
|
+// PLL估算器增益
|
|
|
+#define OBSE_PLLKP_GAIN1 _Q11(((2*ATT_COEF*_2PI*E_BW1*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+#define OBSE_PLLKI_GAIN1 _Q11((_2PI*E_BW1*_2PI*E_BW1*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+
|
|
|
+#define OBSE_PLLKP_GAIN2 _Q11(((2*ATT_COEF*_2PI*E_BW2*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+#define OBSE_PLLKI_GAIN2 _Q11((_2PI*E_BW2*_2PI*E_BW2*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+
|
|
|
+#define OBSE_PLLKP_GAIN3 _Q11(((2*ATT_COEF*_2PI*E_BW3*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+#define OBSE_PLLKI_GAIN3 _Q11((_2PI*E_BW3*_2PI*E_BW3*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+
|
|
|
+#define OBSE_PLLKP_GAIN4 _Q11(((2*ATT_COEF*_2PI*E_BW4*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+#define OBSE_PLLKI_GAIN4 _Q11((_2PI*E_BW4*_2PI*E_BW4*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+
|
|
|
+#define OBSE_PLLKP_GAIN5 _Q11(((2*ATT_COEF*_2PI*E_BW5*LD - RS)*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+#define OBSE_PLLKI_GAIN5 _Q11((_2PI*E_BW5*_2PI*E_BW5*LD*TPWM_VALUE*HW_BOARD_CURR_BASE)/HW_BOARD_VOLTAGE_BASE)
|
|
|
+
|
|
|
+
|
|
|
// ------------------------------------------------------------------------------------------------------------------
|
|
|
// 3.其他宏定义
|
|
|
|