Correct location of current limit truncate for openloop. Previously limit was not respected.

This commit is contained in:
Euan Mutch 2022-08-19 21:15:12 +01:00 committed by GitHub
parent 2620eed66c
commit 1af841f75c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 4 deletions

View File

@ -2881,13 +2881,14 @@ void mcpwm_foc_adc_int_handler(void *p, uint32_t flags) {
motor_now->m_motor_state.phase = motor_now->m_phase_now_observer_override;
motor_now->m_observer_state.x1 = motor_now->m_observer_x1_override;
motor_now->m_observer_state.x2 = motor_now->m_observer_x2_override;
iq_set_tmp += conf_now->foc_sl_openloop_boost_q * SIGN(iq_set_tmp);
if (conf_now->foc_sl_openloop_max_q > conf_now->cc_min_current) {
utils_truncate_number_abs(&iq_set_tmp, conf_now->foc_sl_openloop_max_q);
}
iq_set_tmp += conf_now->foc_sl_openloop_boost_q * SIGN(iq_set_tmp);
} else {
motor_now->m_motor_state.phase = motor_now->m_phase_now_observer;
}
if (conf_now->foc_sl_openloop_max_q > conf_now->cc_min_current) {
utils_truncate_number_abs(&iq_set_tmp, conf_now->foc_sl_openloop_max_q);
}
if (!motor_now->m_phase_override && motor_now->m_control_mode != CONTROL_MODE_OPENLOOP_PHASE) {
id_set_tmp = 0.0;