|
|
@@ -148,8 +148,9 @@ static u32 _self_check_task(void *p) {
|
|
|
}
|
|
|
|
|
|
if (ENC_Check_error()) {
|
|
|
- mc_crit_err_add_s16(FOC_CRIT_Encoder_Err, -1);
|
|
|
- mc_set_critical_error(FOC_CRIT_Encoder_Err);
|
|
|
+ if (mc_set_critical_error(FOC_CRIT_Encoder_Err)) {
|
|
|
+ mc_crit_err_add_s16(FOC_CRIT_Encoder_Err, -1);
|
|
|
+ }
|
|
|
}
|
|
|
if (get_tick_ms() < 5000) { //启动后5s内检测锁电机线
|
|
|
if (mc_is_gpio_mlock()) {
|
|
|
@@ -1226,9 +1227,7 @@ static void motor_vbus_crit_check(s16 curr_vbus) {
|
|
|
mot_contrl_stop(&motor.controller);
|
|
|
}
|
|
|
if (mc_set_critical_error(FOC_CRIT_OV_Vol_Err)) {
|
|
|
- if (mot_contrl_get_speed(&motor.controller) > CONFIG_ZERO_SPEED_RPM) {
|
|
|
- mc_crit_err_add_s16(FOC_CRIT_OV_Vol_Err, curr_vbus);
|
|
|
- }
|
|
|
+ mc_crit_err_add_s16(FOC_CRIT_OV_Vol_Err, curr_vbus);
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
@@ -1616,10 +1615,6 @@ void Sched_MC_mTask(void) {
|
|
|
/* 母线电流,实际采集的相电流矢量大小的计算 */
|
|
|
mot_contrl_calc_current(&motor.controller);
|
|
|
|
|
|
- if (factory_is_running()) {
|
|
|
- motor.n_CritiCalErrMask = 0;
|
|
|
- return;
|
|
|
- }
|
|
|
if ((mot_contrl_get_dc_current(&motor.controller) > (CONFIG_HW_MAX_DC_CURRENT * 1.1f)) || (mot_contrl_get_dc_current(&motor.controller) < CONFIG_HW_MAX_CHRG_CURRENT)) {
|
|
|
vbus_err_cnt ++;
|
|
|
if (vbus_err_cnt >= 5) {
|
|
|
@@ -1641,11 +1636,13 @@ void Sched_MC_mTask(void) {
|
|
|
mc_gear_mode_set();
|
|
|
if (sensor_less && foc_observer_sensorless_stable()) {//unstable 记录在ADC中断处理中
|
|
|
if (motor_encoder_may_error() == ENCODER_PWM_ERR) {
|
|
|
- mc_set_critical_error(FOC_CRIT_Encoder_Err);
|
|
|
- mc_crit_err_add(FOC_CRIT_Encoder_Err, (s16)enc_pwm_err_ms, enc_delta_err2);
|
|
|
+ if (mc_set_critical_error(FOC_CRIT_Encoder_Err)) {
|
|
|
+ mc_crit_err_add(FOC_CRIT_Encoder_Err, (s16)enc_pwm_err_ms, enc_delta_err2);
|
|
|
+ }
|
|
|
}else if (motor_encoder_may_error() == ENCODER_AB_ERR) {
|
|
|
- mc_set_critical_error(FOC_CRIT_ENC_AB_Err);
|
|
|
- mc_crit_err_add(FOC_CRIT_ENC_AB_Err, enc_delta_err1, enc_delta_err2);
|
|
|
+ if (mc_set_critical_error(FOC_CRIT_ENC_AB_Err)) {
|
|
|
+ mc_crit_err_add(FOC_CRIT_ENC_AB_Err, enc_delta_err1, enc_delta_err2);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
motor.b_limit_pending = false;
|