|
|
@@ -626,41 +626,41 @@ u8 PMSM_FOC_CtrlMode(void) {
|
|
|
return gFoc_Ctrl.out.n_RunMode;
|
|
|
}
|
|
|
|
|
|
-#define RAMPE_1 CONFIG_RAMP_FIRST_TARGET
|
|
|
-#define NORMAL_STEP 3.0F
|
|
|
static void crosszero_step_towards(float *value, float target) {
|
|
|
- static float no_cro_step = NORMAL_STEP;
|
|
|
+ static float no_cro_step = CONFIG_CrossZero_NorStep;
|
|
|
float v_now = *value;
|
|
|
bool cross_zero = false;
|
|
|
-
|
|
|
- float high_ramp_torque = CONFIG_RAMP_SECOND_TARGET;
|
|
|
+ float nor_step = mc_conf()->cz.normal_step;
|
|
|
+ float min_step = mc_conf()->cz.min_step;
|
|
|
+ float min_ramp_torque = mc_conf()->cz.low;
|
|
|
+ float high_ramp_torque = mc_conf()->cz.high;
|
|
|
if (target > 0) {
|
|
|
- if (v_now < -RAMPE_1) {
|
|
|
- step_towards(value, -RAMPE_1 + 0.001f, NORMAL_STEP);
|
|
|
+ if (v_now < -min_ramp_torque) {
|
|
|
+ step_towards(value, -min_ramp_torque + 0.001f, nor_step);
|
|
|
cross_zero = true;
|
|
|
- }else if (v_now >= -RAMPE_1 && v_now <= high_ramp_torque) {
|
|
|
- step_towards(value, target, 0.03f);
|
|
|
+ }else if (v_now >= -min_ramp_torque && v_now <= high_ramp_torque) {
|
|
|
+ step_towards(value, target, min_step);
|
|
|
cross_zero = true;
|
|
|
}
|
|
|
}else if (target == 0) {
|
|
|
if (v_now > high_ramp_torque) {
|
|
|
- step_towards(value, high_ramp_torque - 0.001f, NORMAL_STEP);
|
|
|
+ step_towards(value, high_ramp_torque - 0.001f, nor_step);
|
|
|
cross_zero = true;
|
|
|
- }else if (v_now >= RAMPE_1 && v_now <= high_ramp_torque) {
|
|
|
- step_towards(value, target, 0.03f);
|
|
|
+ }else if (v_now >= min_ramp_torque && v_now <= high_ramp_torque) {
|
|
|
+ step_towards(value, target, min_step);
|
|
|
cross_zero = true;
|
|
|
}
|
|
|
}else {
|
|
|
if (v_now > high_ramp_torque) {
|
|
|
- step_towards(value, high_ramp_torque - 0.001f, NORMAL_STEP);
|
|
|
+ step_towards(value, high_ramp_torque - 0.001f, nor_step);
|
|
|
cross_zero = true;
|
|
|
- }else if (v_now >= -RAMPE_1 && v_now <= high_ramp_torque) {
|
|
|
- step_towards(value, target, 0.03f);
|
|
|
+ }else if (v_now >= -min_ramp_torque && v_now <= high_ramp_torque) {
|
|
|
+ step_towards(value, target, min_step);
|
|
|
cross_zero = true;
|
|
|
}
|
|
|
}
|
|
|
if (!cross_zero) {
|
|
|
- step_towards(&no_cro_step, NORMAL_STEP, 0.1f);
|
|
|
+ step_towards(&no_cro_step, nor_step, 0.1f);
|
|
|
step_towards(value, target, no_cro_step);
|
|
|
}else {
|
|
|
no_cro_step = 0.5f;
|