mirror of https://github.com/rusefi/bldc.git
Add confgen and running states
This commit is contained in:
parent
7db04df582
commit
0f5c6f5379
|
@ -235,15 +235,31 @@ bool check_faults(bool ignoreTimers){
|
|||
void calculate_setpoint_target(void){
|
||||
if(setpointAdjustmentType == CENTERING && setpoint_target_interpolated != setpoint_target){
|
||||
// Ignore tiltback during centering sequence
|
||||
}else if(abs_duty_cycle > balance_conf.tiltback_duty ||
|
||||
(abs_duty_cycle > 0.05 && GET_INPUT_VOLTAGE() > balance_conf.tiltback_high_voltage) ||
|
||||
(abs_duty_cycle > 0.05 && GET_INPUT_VOLTAGE() < balance_conf.tiltback_low_voltage)){
|
||||
state = RUNNING;
|
||||
}else if(abs_duty_cycle > balance_conf.tiltback_duty){
|
||||
if(erpm > 0){
|
||||
setpoint_target = balance_conf.tiltback_angle;
|
||||
} else {
|
||||
setpoint_target = -balance_conf.tiltback_angle;
|
||||
}
|
||||
setpointAdjustmentType = TILTBACK;
|
||||
state = RUNNING_TILTBACK_DUTY;
|
||||
}else if(abs_duty_cycle > 0.05 && GET_INPUT_VOLTAGE() > balance_conf.tiltback_high_voltage){
|
||||
if(erpm > 0){
|
||||
setpoint_target = balance_conf.tiltback_angle;
|
||||
} else {
|
||||
setpoint_target = -balance_conf.tiltback_angle;
|
||||
}
|
||||
setpointAdjustmentType = TILTBACK;
|
||||
state = RUNNING_TILTBACK_HIGH_VOLTAGE;
|
||||
}else if(abs_duty_cycle > 0.05 && GET_INPUT_VOLTAGE() < balance_conf.tiltback_low_voltage){
|
||||
if(erpm > 0){
|
||||
setpoint_target = balance_conf.tiltback_angle;
|
||||
} else {
|
||||
setpoint_target = -balance_conf.tiltback_angle;
|
||||
}
|
||||
setpointAdjustmentType = TILTBACK;
|
||||
state = RUNNING_TILTBACK_LOW_VOLTAGE;
|
||||
}else if(abs_erpm > balance_conf.tiltback_constant_erpm){
|
||||
// Nose angle adjustment
|
||||
if(erpm > 0){
|
||||
|
@ -252,9 +268,11 @@ void calculate_setpoint_target(void){
|
|||
setpoint_target = -balance_conf.tiltback_constant;
|
||||
}
|
||||
setpointAdjustmentType = TILTBACK;
|
||||
state = RUNNING_TILTBACK_CONSTANT;
|
||||
}else{
|
||||
setpointAdjustmentType = TILTBACK;
|
||||
setpoint_target = 0;
|
||||
state = RUNNING;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -241,16 +241,24 @@ int32_t confgenerator_serialize_appconf(uint8_t *buffer, const app_configuration
|
|||
buffer_append_float32_auto(buffer, conf->app_balance_conf.ki, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.kd, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.hertz, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.pitch_fault, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.roll_fault, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.adc1, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.adc2, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.overspeed_duty, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_duty, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.fault_pitch, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.fault_roll, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.fault_duty, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.fault_adc1, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.fault_adc2, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_delay_pitch, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_delay_roll, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_delay_duty, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_delay_switch_half, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_delay_switch_full, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_adc_half_erpm, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_angle, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_speed, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_duty, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_high_voltage, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_low_voltage, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_constant, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.tiltback_constant_erpm, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.startup_pitch_tolerance, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.startup_roll_tolerance, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.startup_speed, &ind);
|
||||
|
@ -261,16 +269,13 @@ int32_t confgenerator_serialize_appconf(uint8_t *buffer, const app_configuration
|
|||
buffer_append_float32_auto(buffer, conf->app_balance_conf.yaw_ki, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.yaw_kd, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.roll_steer_kp, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.brake_current, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.overspeed_delay, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.fault_delay, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.tiltback_constant, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.roll_steer_erpm_kp, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.brake_current, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.yaw_current_clamp, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.adc_half_fault_erpm, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.setpoint_pitch_filter, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.setpoint_target_filter, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.setpoint_clamp, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_balance_conf.setpoint_filter_clamp, &ind);
|
||||
buffer_append_uint16(buffer, conf->app_balance_conf.kd_pt1_frequency, &ind);
|
||||
buffer[ind++] = conf->imu_conf.type;
|
||||
buffer[ind++] = conf->imu_conf.mode;
|
||||
buffer_append_uint16(buffer, conf->imu_conf.sample_rate_hz, &ind);
|
||||
|
@ -538,16 +543,24 @@ bool confgenerator_deserialize_appconf(const uint8_t *buffer, app_configuration
|
|||
conf->app_balance_conf.ki = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.kd = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.hertz = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.pitch_fault = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.roll_fault = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.adc1 = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.adc2 = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.overspeed_duty = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_duty = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.fault_pitch = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.fault_roll = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.fault_duty = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.fault_adc1 = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.fault_adc2 = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.fault_delay_pitch = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.fault_delay_roll = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.fault_delay_duty = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.fault_delay_switch_half = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.fault_delay_switch_full = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.fault_adc_half_erpm = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_angle = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_speed = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_duty = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_high_voltage = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_low_voltage = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_constant = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_constant_erpm = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.startup_pitch_tolerance = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.startup_roll_tolerance = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.startup_speed = buffer_get_float32_auto(buffer, &ind);
|
||||
|
@ -558,16 +571,13 @@ bool confgenerator_deserialize_appconf(const uint8_t *buffer, app_configuration
|
|||
conf->app_balance_conf.yaw_ki = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.yaw_kd = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.roll_steer_kp = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.brake_current = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.overspeed_delay = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.fault_delay = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.tiltback_constant = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.roll_steer_erpm_kp = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.brake_current = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.yaw_current_clamp = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.adc_half_fault_erpm = buffer_get_uint16(buffer, &ind);
|
||||
conf->app_balance_conf.setpoint_pitch_filter = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.setpoint_target_filter = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.setpoint_clamp = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.setpoint_filter_clamp = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_balance_conf.kd_pt1_frequency = buffer_get_uint16(buffer, &ind);
|
||||
conf->imu_conf.type = buffer[ind++];
|
||||
conf->imu_conf.mode = buffer[ind++];
|
||||
conf->imu_conf.sample_rate_hz = buffer_get_uint16(buffer, &ind);
|
||||
|
@ -819,16 +829,24 @@ void confgenerator_set_defaults_appconf(app_configuration *conf) {
|
|||
conf->app_balance_conf.ki = APPCONF_BALANCE_KI;
|
||||
conf->app_balance_conf.kd = APPCONF_BALANCE_KD;
|
||||
conf->app_balance_conf.hertz = APPCONF_BALANCE_HERTZ;
|
||||
conf->app_balance_conf.pitch_fault = APPCONF_BALANCE_PITCH_FAULT;
|
||||
conf->app_balance_conf.roll_fault = APPCONF_BALANCE_ROLL_FAULT;
|
||||
conf->app_balance_conf.adc1 = APPCONF_BALANCE_ADC1;
|
||||
conf->app_balance_conf.adc2 = APPCONF_BALANCE_ADC2;
|
||||
conf->app_balance_conf.overspeed_duty = APPCONF_BALANCE_OVERSPEED_DUTY;
|
||||
conf->app_balance_conf.tiltback_duty = APPCONF_BALANCE_TILTBACK_DUTY;
|
||||
conf->app_balance_conf.fault_pitch = APPCONF_BALANCE_FAULT_PITCH;
|
||||
conf->app_balance_conf.fault_roll = APPCONF_BALANCE_FAULT_ROLL;
|
||||
conf->app_balance_conf.fault_duty = APPCONF_BALANCE_FAULT_DUTY;
|
||||
conf->app_balance_conf.fault_adc1 = APPCONF_BALANCE_FAULT_ADC1;
|
||||
conf->app_balance_conf.fault_adc2 = APPCONF_BALANCE_FAULT_ADC2;
|
||||
conf->app_balance_conf.fault_delay_pitch = APPCONF_BALANCE_FAULT_DELAY_PITCH;
|
||||
conf->app_balance_conf.fault_delay_roll = APPCONF_BALANCE_FAULT_DELAY_ROLL;
|
||||
conf->app_balance_conf.fault_delay_duty = APPCONF_BALANCE_FAULT_DELAY_DUTY;
|
||||
conf->app_balance_conf.fault_delay_switch_half = APPCONF_BALANCE_FAULT_DELAY_SWITCH_HALF;
|
||||
conf->app_balance_conf.fault_delay_switch_full = APPCONF_BALANCE_FAULT_DELAY_SWITCH_FULL;
|
||||
conf->app_balance_conf.fault_adc_half_erpm = APPCONF_BALANCE_FAULT_ADC_HALF_ERPM;
|
||||
conf->app_balance_conf.tiltback_angle = APPCONF_BALANCE_TILTBACK_ANGLE;
|
||||
conf->app_balance_conf.tiltback_speed = APPCONF_BALANCE_TILTBACK_SPEED;
|
||||
conf->app_balance_conf.tiltback_duty = APPCONF_BALANCE_TILTBACK_DUTY;
|
||||
conf->app_balance_conf.tiltback_high_voltage = APPCONF_BALANCE_TILTBACK_HIGH_V;
|
||||
conf->app_balance_conf.tiltback_low_voltage = APPCONF_BALANCE_TILTBACK_LOW_V;
|
||||
conf->app_balance_conf.tiltback_constant = APPCONF_BALANCE_TILTBACK_CONSTANT;
|
||||
conf->app_balance_conf.tiltback_constant_erpm = APPCONF_BALANCE_TILTBACK_CONSTANT_ERPM;
|
||||
conf->app_balance_conf.startup_pitch_tolerance = APPCONF_BALANCE_STARTUP_PITCH_TOLERANCE;
|
||||
conf->app_balance_conf.startup_roll_tolerance = APPCONF_BALANCE_STARTUP_ROLL_TOLERANCE;
|
||||
conf->app_balance_conf.startup_speed = APPCONF_BALANCE_STARTUP_SPEED;
|
||||
|
@ -839,16 +857,13 @@ void confgenerator_set_defaults_appconf(app_configuration *conf) {
|
|||
conf->app_balance_conf.yaw_ki = APPCONF_BALANCE_YAW_KI;
|
||||
conf->app_balance_conf.yaw_kd = APPCONF_BALANCE_YAW_KD;
|
||||
conf->app_balance_conf.roll_steer_kp = APPCONF_BALANCE_ROLL_STEER_KP;
|
||||
conf->app_balance_conf.brake_current = APPCONF_BALANCE_BRAKE_CURRENT;
|
||||
conf->app_balance_conf.overspeed_delay = APPCONF_BALANCE_OVERSPEED_DELAY;
|
||||
conf->app_balance_conf.fault_delay = APPCONF_BALANCE_FAULT_DELAY;
|
||||
conf->app_balance_conf.tiltback_constant = APPCONF_BALANCE_TILTBACK_CONSTANT;
|
||||
conf->app_balance_conf.roll_steer_erpm_kp = APPCONF_BALANCE_ROLL_STEER_ERPM_KP;
|
||||
conf->app_balance_conf.brake_current = APPCONF_BALANCE_BRAKE_CURRENT;
|
||||
conf->app_balance_conf.yaw_current_clamp = APPCONF_BALANCE_YAW_CURRENT_CLAMP;
|
||||
conf->app_balance_conf.adc_half_fault_erpm = APPCONF_BALANCE_ADC_HALF_FAULT_ERPM;
|
||||
conf->app_balance_conf.setpoint_pitch_filter = APPCONF_BALANCE_SETPOINT_PITCH_FILTER;
|
||||
conf->app_balance_conf.setpoint_target_filter = APPCONF_BALANCE_SETPOINT_TARGET_FILTER;
|
||||
conf->app_balance_conf.setpoint_clamp = APPCONF_BALANCE_SETPOINT_CLAMP;
|
||||
conf->app_balance_conf.setpoint_filter_clamp = APPCONF_BALANCE_SETPOINT_FILTER_CLAMP;
|
||||
conf->app_balance_conf.kd_pt1_frequency = APPCONF_BALANCE_KD_PT1_FREQUENCY;
|
||||
conf->imu_conf.type = APPCONF_IMU_TYPE;
|
||||
conf->imu_conf.mode = APPCONF_IMU_AHRS_MODE;
|
||||
conf->imu_conf.sample_rate_hz = APPCONF_IMU_SAMPLE_RATE_HZ;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
// Constants
|
||||
#define MCCONF_SIGNATURE 1358025204
|
||||
#define APPCONF_SIGNATURE 2662993821
|
||||
#define APPCONF_SIGNATURE 664237692
|
||||
|
||||
// Functions
|
||||
int32_t confgenerator_serialize_mcconf(uint8_t *buffer, const mc_configuration *conf);
|
||||
|
|
Loading…
Reference in New Issue