|
|
@@ -1106,10 +1106,8 @@ void ADC_IRQHandler(void) {
|
|
|
|
|
|
#if (CONFIG_ENABLE_IAB_REC==1)
|
|
|
if (b_iab_rec && (iab_w_count < CONFIG_IAB_REC_COUNT)) {
|
|
|
- float iabc[3];
|
|
|
- phase_current_get(iabc);
|
|
|
- ia[iab_w_count] = (s16)iabc[0];
|
|
|
- ib[iab_w_count] = (s16)iabc[1];
|
|
|
+ ia[iab_w_count] = (s16)PMSM_FOC_Get()->in.s_iABC[0];
|
|
|
+ ib[iab_w_count] = (s16)PMSM_FOC_Get()->in.s_iABC[1];
|
|
|
iab_w_count ++;
|
|
|
}
|
|
|
#endif
|
|
|
@@ -1124,19 +1122,23 @@ void ADC_IRQHandler(void) {
|
|
|
if (PMSM_FOC_Is_Start()) {
|
|
|
pwm_disable_channel();
|
|
|
/* 记录错误 */
|
|
|
- mc_save_err_runtime();
|
|
|
+ if (!foc_observer_is_force_sensorless()) {
|
|
|
+ mc_save_err_runtime();
|
|
|
+ }
|
|
|
PMSM_FOC_Stop();
|
|
|
g_meas_foc.first = true;
|
|
|
- if (mc_set_critical_error(FOC_CRIT_Angle_Err)) {
|
|
|
- mc_crit_err_add_s16(FOC_CRIT_Angle_Err, (s16)motor_encoder_get_speed());
|
|
|
- }
|
|
|
- if (motor_encoder_may_error() == ENCODER_PWM_ERR) {
|
|
|
- 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);
|
|
|
+ if (!foc_observer_is_force_sensorless()) {
|
|
|
+ if (mc_set_critical_error(FOC_CRIT_Angle_Err)) {
|
|
|
+ mc_crit_err_add_s16(FOC_CRIT_Angle_Err, (s16)motor_encoder_get_speed());
|
|
|
}
|
|
|
- }else if (motor_encoder_may_error() == ENCODER_AB_ERR) {
|
|
|
- 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);
|
|
|
+ if (motor_encoder_may_error() == ENCODER_PWM_ERR) {
|
|
|
+ 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) {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|