Преглед изворни кода

epm 模式空转和骑行同一套参数

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui пре 3 година
родитељ
комит
64b2726b6c
2 измењених фајлова са 15 додато и 3 уклоњено
  1. 8 2
      Applications/foc/core/PMSM_FOC_Core.c
  2. 7 1
      Applications/foc/motor/motor.c

+ 8 - 2
Applications/foc/core/PMSM_FOC_Core.c

@@ -622,6 +622,13 @@ static __INLINE void PMSM_FOC_VelCtrl_Decide(void) {
 	static u32  change_time = 0xFFFFFFFF;
 	float f_te = F_get_Te();
 	float f_accl = F_get_accl();
+	if (mc_is_epm()) {
+		change_cnt = 0;
+		change_time = 0xFFFFFFFF;
+		change_done = false;
+		gFoc_Ctrl.out.empty_load = false;
+		return;
+	}
 	if (gFoc_Ctrl.in.s_motVelocity == 0.0f || gFoc_Ctrl.out.n_RunMode == CTRL_MODE_OPEN) {
 		change_cnt = 0;
 		change_time = 0xFFFFFFFF;
@@ -629,10 +636,9 @@ static __INLINE void PMSM_FOC_VelCtrl_Decide(void) {
 		gFoc_Ctrl.out.empty_load = false;
 		return;
 	}
-	if ((f_te <= 0.0f) && (gFoc_Ctrl.in.s_motVelocity >= 0.0f)) {
+	if (f_te <= 0.0f) {
 		change_cnt = 0;
 		change_time = 0xFFFFFFFF;
-		//gFoc_Ctrl.out.empty_load = false;
 		return;
 	}
 	f_te = ABS(f_te);

+ 7 - 1
Applications/foc/motor/motor.c

@@ -520,10 +520,16 @@ bool mc_start_epm_move(EPM_Dir_t dir, bool is_command) {
 		}else if (PMSM_FOC_AutoHoldding()) {
 			mc_auto_hold(false);
 		}
+		if (dir == EPM_Dir_Back) {
+			PMSM_FOC_Change_VelLoop_Params(3.0f, 500.0f);
+		}else {
+			PMSM_FOC_Change_VelLoop_Params(3.0f, 350.0f);
+		}
 		PMSM_FOC_TorqueLimit(motor.f_epm_trq);
 		PMSM_FOC_Set_Speed(motor.f_epm_vel);
 	}else {
 		motor.b_epm_cmd_move = false;
+		PMSM_FOC_Change_VelLoop_Params(nv_get_foc_params()->f_adrc_vel_Wcv, nv_get_foc_params()->f_adrc_vel_B0);
 		PMSM_FOC_Set_Speed(0);
 	}
 	cpu_exit_critical(mask);
@@ -1136,7 +1142,7 @@ static void mc_process_epm_move(void) {
 		step = 0.1f;
 	}
 	step_towards(&motor.f_epm_vel, target_vel, step);
-	step_towards(&motor.f_epm_trq, target_trq, 0.05f);
+	step_towards(&motor.f_epm_trq, target_trq, 0.1f);
 	PMSM_FOC_TorqueLimit(motor.f_epm_trq);
 	PMSM_FOC_Set_Speed(motor.f_epm_vel);
 }