mirror of https://github.com/rusefi/bldc.git
Revert "Add ramp input to the speed PID loop."
This commit is contained in:
parent
c9a89fb0df
commit
e58c87103c
|
@ -118,7 +118,6 @@ int32_t confgenerator_serialize_mcconf(uint8_t *buffer, const mc_configuration *
|
||||||
buffer_append_float32_auto(buffer, conf->s_pid_kd_filter, &ind);
|
buffer_append_float32_auto(buffer, conf->s_pid_kd_filter, &ind);
|
||||||
buffer_append_float32_auto(buffer, conf->s_pid_min_erpm, &ind);
|
buffer_append_float32_auto(buffer, conf->s_pid_min_erpm, &ind);
|
||||||
buffer[ind++] = conf->s_pid_allow_braking;
|
buffer[ind++] = conf->s_pid_allow_braking;
|
||||||
buffer_append_float32_auto(buffer, conf->s_pid_ramp_erpms_s, &ind);
|
|
||||||
buffer_append_float32_auto(buffer, conf->p_pid_kp, &ind);
|
buffer_append_float32_auto(buffer, conf->p_pid_kp, &ind);
|
||||||
buffer_append_float32_auto(buffer, conf->p_pid_ki, &ind);
|
buffer_append_float32_auto(buffer, conf->p_pid_ki, &ind);
|
||||||
buffer_append_float32_auto(buffer, conf->p_pid_kd, &ind);
|
buffer_append_float32_auto(buffer, conf->p_pid_kd, &ind);
|
||||||
|
@ -411,7 +410,6 @@ bool confgenerator_deserialize_mcconf(const uint8_t *buffer, mc_configuration *c
|
||||||
conf->s_pid_kd_filter = buffer_get_float32_auto(buffer, &ind);
|
conf->s_pid_kd_filter = buffer_get_float32_auto(buffer, &ind);
|
||||||
conf->s_pid_min_erpm = buffer_get_float32_auto(buffer, &ind);
|
conf->s_pid_min_erpm = buffer_get_float32_auto(buffer, &ind);
|
||||||
conf->s_pid_allow_braking = buffer[ind++];
|
conf->s_pid_allow_braking = buffer[ind++];
|
||||||
conf->s_pid_ramp_erpms_s = buffer_get_float32_auto(buffer, &ind);
|
|
||||||
conf->p_pid_kp = buffer_get_float32_auto(buffer, &ind);
|
conf->p_pid_kp = buffer_get_float32_auto(buffer, &ind);
|
||||||
conf->p_pid_ki = buffer_get_float32_auto(buffer, &ind);
|
conf->p_pid_ki = buffer_get_float32_auto(buffer, &ind);
|
||||||
conf->p_pid_kd = buffer_get_float32_auto(buffer, &ind);
|
conf->p_pid_kd = buffer_get_float32_auto(buffer, &ind);
|
||||||
|
@ -700,7 +698,6 @@ void confgenerator_set_defaults_mcconf(mc_configuration *conf) {
|
||||||
conf->s_pid_kd_filter = MCCONF_S_PID_KD_FILTER;
|
conf->s_pid_kd_filter = MCCONF_S_PID_KD_FILTER;
|
||||||
conf->s_pid_min_erpm = MCCONF_S_PID_MIN_RPM;
|
conf->s_pid_min_erpm = MCCONF_S_PID_MIN_RPM;
|
||||||
conf->s_pid_allow_braking = MCCONF_S_PID_ALLOW_BRAKING;
|
conf->s_pid_allow_braking = MCCONF_S_PID_ALLOW_BRAKING;
|
||||||
conf->s_pid_ramp_erpms_s = MCCONF_S_PID_RAMP_ERPMS_S;
|
|
||||||
conf->p_pid_kp = MCCONF_P_PID_KP;
|
conf->p_pid_kp = MCCONF_P_PID_KP;
|
||||||
conf->p_pid_ki = MCCONF_P_PID_KI;
|
conf->p_pid_ki = MCCONF_P_PID_KI;
|
||||||
conf->p_pid_kd = MCCONF_P_PID_KD;
|
conf->p_pid_kd = MCCONF_P_PID_KD;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
#define MCCONF_SIGNATURE 1775793947
|
#define MCCONF_SIGNATURE 3698540221
|
||||||
#define APPCONF_SIGNATURE 2460147246
|
#define APPCONF_SIGNATURE 2460147246
|
||||||
|
|
||||||
// Functions
|
// Functions
|
||||||
|
|
|
@ -321,7 +321,6 @@ typedef struct {
|
||||||
float s_pid_kd_filter;
|
float s_pid_kd_filter;
|
||||||
float s_pid_min_erpm;
|
float s_pid_min_erpm;
|
||||||
bool s_pid_allow_braking;
|
bool s_pid_allow_braking;
|
||||||
float s_pid_ramp_erpms_s;
|
|
||||||
// Pos PID
|
// Pos PID
|
||||||
float p_pid_kp;
|
float p_pid_kp;
|
||||||
float p_pid_ki;
|
float p_pid_ki;
|
||||||
|
|
|
@ -136,9 +136,6 @@
|
||||||
#ifndef MCCONF_S_PID_ALLOW_BRAKING
|
#ifndef MCCONF_S_PID_ALLOW_BRAKING
|
||||||
#define MCCONF_S_PID_ALLOW_BRAKING true // Allow braking in speed control mode
|
#define MCCONF_S_PID_ALLOW_BRAKING true // Allow braking in speed control mode
|
||||||
#endif
|
#endif
|
||||||
#ifndef MCCONF_S_PID_RAMP_ERPMS_S
|
|
||||||
#define MCCONF_S_PID_RAMP_ERPMS_S -1.0 // Default Speed Input Ramp
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Position PID parameters
|
// Position PID parameters
|
||||||
#ifndef MCCONF_P_PID_KP
|
#ifndef MCCONF_P_PID_KP
|
||||||
|
|
17
mcpwm_foc.c
17
mcpwm_foc.c
|
@ -111,7 +111,6 @@ typedef struct {
|
||||||
bool m_output_on;
|
bool m_output_on;
|
||||||
float m_pos_pid_set;
|
float m_pos_pid_set;
|
||||||
float m_speed_pid_set_rpm;
|
float m_speed_pid_set_rpm;
|
||||||
float m_speed_command_rpm;
|
|
||||||
float m_phase_now_observer;
|
float m_phase_now_observer;
|
||||||
float m_phase_now_observer_override;
|
float m_phase_now_observer_override;
|
||||||
bool m_phase_observer_override;
|
bool m_phase_observer_override;
|
||||||
|
@ -166,7 +165,6 @@ typedef struct {
|
||||||
float m_hall_dt_diff_now;
|
float m_hall_dt_diff_now;
|
||||||
} motor_all_state_t;
|
} motor_all_state_t;
|
||||||
|
|
||||||
|
|
||||||
// Private variables
|
// Private variables
|
||||||
static volatile bool m_dccal_done = false;
|
static volatile bool m_dccal_done = false;
|
||||||
static volatile float m_last_adc_isr_duration;
|
static volatile float m_last_adc_isr_duration;
|
||||||
|
@ -800,17 +798,8 @@ void mcpwm_foc_set_duty_noramp(float dutyCycle) {
|
||||||
* The electrical RPM goal value to use.
|
* The electrical RPM goal value to use.
|
||||||
*/
|
*/
|
||||||
void mcpwm_foc_set_pid_speed(float rpm) {
|
void mcpwm_foc_set_pid_speed(float rpm) {
|
||||||
if( motor_now()->m_conf->s_pid_ramp_erpms_s > 0.0 ){
|
|
||||||
if( motor_now()->m_control_mode != CONTROL_MODE_SPEED ||
|
|
||||||
motor_now()->m_state != MC_STATE_RUNNING ){
|
|
||||||
motor_now()->m_speed_pid_set_rpm = mcpwm_foc_get_rpm();
|
|
||||||
}
|
|
||||||
motor_now()->m_speed_command_rpm = rpm;
|
|
||||||
}else{
|
|
||||||
motor_now()->m_speed_pid_set_rpm = rpm;
|
|
||||||
}
|
|
||||||
|
|
||||||
motor_now()->m_control_mode = CONTROL_MODE_SPEED;
|
motor_now()->m_control_mode = CONTROL_MODE_SPEED;
|
||||||
|
motor_now()->m_speed_pid_set_rpm = rpm;
|
||||||
|
|
||||||
if (motor_now()->m_state != MC_STATE_RUNNING) {
|
if (motor_now()->m_state != MC_STATE_RUNNING) {
|
||||||
motor_now()->m_state = MC_STATE_RUNNING;
|
motor_now()->m_state = MC_STATE_RUNNING;
|
||||||
|
@ -3643,10 +3632,6 @@ static void run_pid_control_speed(float dt, volatile motor_all_state_t *motor) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(conf_now->s_pid_ramp_erpms_s > 0.0){
|
|
||||||
utils_step_towards((float*)&motor->m_speed_pid_set_rpm, motor->m_speed_command_rpm, conf_now->s_pid_ramp_erpms_s * dt);
|
|
||||||
}
|
|
||||||
|
|
||||||
const float rpm = mcpwm_foc_get_rpm();
|
const float rpm = mcpwm_foc_get_rpm();
|
||||||
float error = motor->m_speed_pid_set_rpm - rpm;
|
float error = motor->m_speed_pid_set_rpm - rpm;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue