Procházet zdrojové kódy

定义CONFIG_ZERO_SPEED_RPM为0速度

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui před 3 roky
rodič
revize
c259f1378d
2 změnil soubory, kde provedl 6 přidání a 6 odebrání
  1. 1 1
      Applications/foc/foc_config.h
  2. 5 5
      Applications/foc/motor/motor.c

+ 1 - 1
Applications/foc/foc_config.h

@@ -33,7 +33,7 @@
 #define CONFIG_SPD_CTRL_US (CONFIG_SPD_CTRL_MS * 1000)
 #define CONFIG_FOC_VDQ_RAMP_TS 100
 #define CONFIG_FOC_VDQ_RAMP_FINAL_TIME 3000
-
+#define CONFIG_ZERO_SPEED_RPM  10
 /* 电子刹车,动能回收,加速 */
 #define CONFIG_eCTRL_STEP_TS CONFIG_SPD_CTRL_MS     /* 斜率给定的step的时间值,单位 ms */
 #define CONFIG_eCTRL_Brake_TIME 1500     /* 捏住刹车的时间,超过这个时间启动ebrake,单位 ms */

+ 5 - 5
Applications/foc/motor/motor.c

@@ -194,7 +194,7 @@ bool mc_start(u8 mode) {
 		PMSM_FOC_SetErrCode(FOC_Param_Err);
 		return false;
 	}
-	if (motor_encoder_get_speed() > 10.0f) {
+	if (motor_encoder_get_speed() > CONFIG_ZERO_SPEED_RPM) {
 		PMSM_FOC_SetErrCode(FOC_NowAllowed_With_Speed);
 		return false;
 	}
@@ -246,7 +246,7 @@ bool mc_stop(void) {
 		return false;
 	}
 
-	if (motor_encoder_get_speed() > 10.0f) {
+	if (motor_encoder_get_speed() > CONFIG_ZERO_SPEED_RPM) {
 		PMSM_FOC_SetErrCode(FOC_NowAllowed_With_Speed);
 		return false;
 	}
@@ -317,7 +317,7 @@ bool mc_start_epm(bool epm) {
 		PMSM_FOC_SetErrCode(FOC_NotAllowed);
 		return false;
 	}
-	if (PMSM_FOC_GetSpeed() != 0.0f) {
+	if (motor_encoder_get_speed() > CONFIG_ZERO_SPEED_RPM) {
 		PMSM_FOC_SetErrCode(FOC_NowAllowed_With_Speed);
 		return false;
 	}
@@ -536,7 +536,7 @@ bool mc_lock_motor(bool lock) {
 		ret = false;
 		goto ml_ex_cri;
 	}
-	if (lock && (PMSM_FOC_GetSpeed() > 10)) {
+	if (lock && (motor_encoder_get_speed() > CONFIG_ZERO_SPEED_RPM)) {
 		PMSM_FOC_SetErrCode(FOC_NowAllowed_With_Speed);
 		ret = false;
 		goto ml_ex_cri;
@@ -799,7 +799,7 @@ static void mc_autohold_process(void) {
 			mc_auto_hold(false);
 		}
 	}
-	if (!PMSM_FOC_AutoHoldding() && motor.b_break && (encoder_get_speed() == 0.0f)) {
+	if (!PMSM_FOC_AutoHoldding() && motor.b_break && (motor_encoder_get_speed() < CONFIG_ZERO_SPEED_RPM)) {
 		if (motor.n_autohold_time == 0) {
 			motor.n_autohold_time = get_tick_ms();
 		}else {