ETB iTerm limits

This commit is contained in:
rusEfi 2019-03-02 14:00:32 -05:00
parent c99c44102e
commit 91e421ebae
9 changed files with 57 additions and 19 deletions

View File

@ -259,6 +259,7 @@ void setFrankensoBoardTestConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
}
// ETB_BENCH_ENGINE
void setEtbTestConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
setCustomEngineConfiguration(PASS_ENGINE_PARAMETER_SIGNATURE);

View File

@ -1,4 +1,4 @@
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Mar 02 13:19:29 EST 2019
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Mar 02 13:30:15 EST 2019
// begin
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
#define ENGINE_CONFIGURATION_GENERATED_H_
@ -2299,9 +2299,19 @@ typedef struct {
*/
float hip9011Gain;
/**
* iTerm min value
* offset 3980
*/
int mainUnusedEnd[625];
int16_t etb_iTermMin;
/**
* iTerm max value
* offset 3982
*/
int16_t etb_iTermMax;
/**
* offset 3984
*/
int mainUnusedEnd[624];
/** total size 6480*/
} engine_configuration_s;
@ -2548,4 +2558,4 @@ typedef struct {
#endif
// end
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Mar 02 13:19:29 EST 2019
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Mar 02 13:30:15 EST 2019

View File

@ -1640,8 +1640,12 @@
#define etbBiasValues_offset_hex f68
#define hip9011Gain_offset 3976
#define hip9011Gain_offset_hex f88
#define mainUnusedEnd_offset 3980
#define mainUnusedEnd_offset_hex f8c
#define etb_iTermMin_offset 3980
#define etb_iTermMin_offset_hex f8c
#define etb_iTermMax_offset 3982
#define etb_iTermMax_offset_hex f8e
#define mainUnusedEnd_offset 3984
#define mainUnusedEnd_offset_hex f90
#define cltCrankingCorrBins_offset 6480
#define cltCrankingCorrBins_offset_hex 1950
#define cltCrankingCorr_offset 6512

View File

@ -280,6 +280,8 @@ void setDefaultEtbParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->etb.dFactor = 0.0;
engineConfiguration->etb.periodMs = 100;
engineConfiguration->etbFreq = 300;
engineConfiguration->etb_iTermMin = -300;
engineConfiguration->etb_iTermMax = 300;
// CONFIGB(etbControlPin1) = GPIOE_4; // test board, matched default fuel pump relay
}
@ -353,10 +355,10 @@ static void setAutoOffset(int offset) {
void setDefaultEtbBiasCurve(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->etbBiasBins[0] = 0;
engineConfiguration->etbBiasBins[1] = 5;
engineConfiguration->etbBiasBins[2] = 7;
engineConfiguration->etbBiasBins[3] = 8;
engineConfiguration->etbBiasBins[4] = 11;
engineConfiguration->etbBiasBins[1] = 1;
engineConfiguration->etbBiasBins[2] = 2;
engineConfiguration->etbBiasBins[3] = 4;
engineConfiguration->etbBiasBins[4] = 7;
engineConfiguration->etbBiasBins[5] = 98;
engineConfiguration->etbBiasBins[6] = 99;
engineConfiguration->etbBiasBins[7] = 100;

View File

@ -147,8 +147,8 @@ struct pid_s
float dFactor;;"", 1, 0, -10000, 10000, 7
int16_t offset;Linear addition to PID logic;"", 1, 0, 0, 1000, 0
int16_t periodMs;PID dTime;"ms", 1, 0, 0, 3000, 0
int16_t minValue;Output min value;"", 1, 0, -3000, 3000.0, 3
int16_t maxValue;Output max value;"", 1, 0, -3000, 3000.0, 3
int16_t minValue;Output min value;"", 1, 0, -30000, 30000.0, 0
int16_t maxValue;Output max value;"", 1, 0, -30000, 30000.0, 0
end_struct
struct cranking_parameters_s
@ -976,7 +976,9 @@ tChargeMode_e tChargeMode;
float[ETB_BIAS_CURVE_LENGTH] etbBiasValues;PWM bias, 0 to 100%;"ETB duty cycle bias", 1, 0.0, -100, 100.0, 2
float hip9011Gain;
int[625] mainUnusedEnd;
int16_t etb_iTermMin;iTerm min value;"", 1, 0, -30000, 30000.0, 0
int16_t etb_iTermMax;iTerm max value;"", 1, 0, -30000, 30000.0, 0
int[624] mainUnusedEnd;
end_struct

View File

@ -1220,11 +1220,13 @@ cmd_call_from_pit = "w\x00\x20\x34\x56"
cmd_stop_engine = "w\x00\x49\x00\x00"
; MIATA_NA6_MAP = 41
cmd_set_engine_type_Miata_NA6_MAP = "w\x00\x30\x00\x29"
cmd_set_engine_type_Miata_NA6_MAP = "w\x00\x30\x00\x29"
; MIATA_NA6_VAF = 57
cmd_set_engine_type_Miata_NA6_VAF = "w\x00\x30\x00\x39"
cmd_set_engine_type_Miata_NA6_VAF = "w\x00\x30\x00\x39"
; MAZDA_MIATA_2003 = 47
cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
; ETB_BENCH_ENGINE = 58
cmd_set_engine_type_etb_test = "w\x00\x30\x00\x3A"
[UserDefined]
dialog = fuelTableBottomDialog, "", card
@ -2236,7 +2238,9 @@ cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
field = "offset", etb_offset, {throttlePedalPositionAdcChannel != 16}
field = "control period", etb_periodMs, {throttlePedalPositionAdcChannel != 16}
field = "pid min", etb_minValue, {throttlePedalPositionAdcChannel != 16}
field = "pid max", etb_maxValue, {throttlePedalPositionAdcChannel != 16}
field = "pid max", etb_maxValue, {throttlePedalPositionAdcChannel != 16}
field = "iTermMin", etb_iTermMin, {throttlePedalPositionAdcChannel != 16}
field = "iTermMax", etb_iTermMax, {throttlePedalPositionAdcChannel != 16}
dialog = testSpark, "Spark"
commandButton = "Spark #1", cmd_test_spk1
@ -2276,6 +2280,7 @@ cmd_set_engine_type_Miata_NA2 = "w\x00\x30\x00\x2F"
commandButton = "Miata NA6 Stage 0", cmd_set_engine_type_Miata_NA6_VAF
commandButton = "Miata NA6 Stage 1", cmd_set_engine_type_Miata_NA6_MAP
commandButton = "Miata NB2 MAP", cmd_set_engine_type_Miata_NA2
commandButton = "ETB test bench", cmd_set_engine_type_etb_test
; Board->ECU stimulator

View File

@ -161,12 +161,19 @@ void Pid::updateITerm(float value) {
* If we have exceeded the ability of the controlled device to hit target, the I factor will keep accumulating and approach infinity.
* Here we limit the I-term #353
*/
if (iTerm > pid->maxValue * 100)
if (iTerm > pid->maxValue * 100) {
iTerm = pid->maxValue * 100;
}
if (iTerm > iTermMax) {
iTerm = iTermMax;
}
// this is kind of a hack. a proper fix would be having separate additional settings 'maxIValue' and 'minIValye'
if (iTerm < -pid->maxValue * 100)
iTerm = -pid->maxValue * 100;
if (iTerm < iTermMin) {
iTerm = iTermMin;
}
}

View File

@ -52,6 +52,9 @@ public:
void showPidStatus(Logging *logging, const char*msg);
void sleep();
int resetCounter;
// todo: move this to pid_s one day
float iTermMin = -1000000.0;
float iTermMax = 1000000.0;
private:
pid_s *pid;

View File

@ -1,6 +1,6 @@
package com.rusefi.config;
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Mar 02 13:19:29 EST 2019
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Mar 02 13:30:15 EST 2019
public class Fields {
public static final int LE_COMMAND_LENGTH = 200;
public static final int BLOCKING_FACTOR = 400;
@ -1037,7 +1037,9 @@ public class Fields {
public static final int etbBiasBins_offset = 3912;
public static final int etbBiasValues_offset = 3944;
public static final int hip9011Gain_offset = 3976;
public static final int mainUnusedEnd_offset = 3980;
public static final int etb_iTermMin_offset = 3980;
public static final int etb_iTermMax_offset = 3982;
public static final int mainUnusedEnd_offset = 3984;
public static final int cltCrankingCorrBins_offset = 6480;
public static final int cltCrankingCorrBins_offset_hex = 1950;
public static final int cltCrankingCorr_offset = 6512;
@ -1885,6 +1887,8 @@ public class Fields {
public static final String[] tChargeMode_e = {"RPM+TPS (Default)", "Air Mass Interpolation"};
public static final Field TCHARGEMODE = Field.create("TCHARGEMODE", 3908, FieldType.INT, tChargeMode_e);
public static final Field HIP9011GAIN = Field.create("HIP9011GAIN", 3976, FieldType.FLOAT);
public static final Field ETB_ITERMMIN = Field.create("ETB_ITERMMIN", 3980, FieldType.INT);
public static final Field ETB_ITERMMAX = Field.create("ETB_ITERMMAX", 3982, FieldType.INT);
public static final Field FSIOFORMULAS1 = Field.create("FSIOFORMULAS1", 6672, FieldType.INT);
public static final Field FSIOFORMULAS2 = Field.create("FSIOFORMULAS2", 6872, FieldType.INT);
public static final Field FSIOFORMULAS3 = Field.create("FSIOFORMULAS3", 7072, FieldType.INT);