From a6fbc5036a3f469cf76cd706fa02ae03b293424c Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 11 Sep 2019 20:46:50 -0400 Subject: [PATCH] Delayed A/C compressor switch #922 --- .../controllers/actuators/idle_thread.cpp | 29 ++++++++++++-- firmware/controllers/algo/engine_parts.h | 3 ++ firmware/controllers/core/fsio_impl.cpp | 16 +++++++- firmware/controllers/engine_controller.cpp | 2 +- ...ngine_configuration_generated_structures.h | 14 ++++--- .../generated/fsio_enums_generated.def | 4 +- .../controllers/generated/fsio_getters.def | 6 ++- firmware/controllers/generated/fsio_names.def | 4 +- .../controllers/generated/fsio_strings.def | 6 ++- .../controllers/generated/rusefi_generated.h | 28 +++++++++++--- firmware/controllers/system_fsio.h | 3 +- firmware/integration/rusefi_config.txt | 7 ++-- firmware/tunerstudio/rusefi.ini | 27 +++++++++---- firmware/tunerstudio/rusefi.input | 12 ++++-- firmware/tunerstudio/rusefi_frankenso.ini | 27 +++++++++---- firmware/tunerstudio/rusefi_microrusefi.ini | 27 +++++++++---- firmware/tunerstudio/rusefi_prometheus.ini | 27 +++++++++---- firmware/util/math/pid.h | 2 +- .../com/rusefi/config/generated/Fields.java | 38 +++++++++++++++---- 19 files changed, 213 insertions(+), 69 deletions(-) diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index 1ecddcc18e..2eafab6030 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -61,7 +61,29 @@ static bool mightResetPid = false; // Use new PID with CIC integrator PidCic idlePid; #else -Pid idlePid; + +class PidWithOverrides : public Pid { +public: + float getOffset() const override { +#if EFI_FSIO && ! EFI_UNIT_TEST + if (engineConfiguration->useFSIO12ForIdleOffset) { + return ENGINE(fsioState.fsioIdleOffset); + } +#endif /* EFI_FSIO */ + return parameters->offset; + } + + float getMinValue() const override { +#if EFI_FSIO && ! EFI_UNIT_TEST + if (engineConfiguration->useFSIO13ForIdleMinValue) { + return ENGINE(fsioState.fsioIdleMinValue); + } +#endif /* EFI_FSIO */ + return parameters->minValue; + } +}; + +PidWithOverrides idlePid; #endif /* EFI_IDLE_INCREMENTAL_PID_CIC */ // todo: extract interface for idle valve hardware, with solenoid and stepper implementations? @@ -221,7 +243,6 @@ static percent_t automaticIdleController(DECLARE_ENGINE_PARAMETER_SIGNATURE) { int targetRpm = getTargetRpmForIdleCorrection(PASS_ENGINE_PARAMETER_SIGNATURE); efitick_t nowNt = getTimeNowNt(); - // check if within the dead zone float rpm; if (CONFIG(useInstantRpmForIdle)) { @@ -229,6 +250,8 @@ static percent_t automaticIdleController(DECLARE_ENGINE_PARAMETER_SIGNATURE) { } else { rpm = GET_RPM(); } + + // check if within the dead zone if (absI(rpm - targetRpm) <= CONFIG(idlePidRpmDeadZone)) { engine->engineState.idle.idleState = RPM_DEAD_ZONE; // current RPM is close enough, no need to change anything @@ -249,9 +272,9 @@ static percent_t automaticIdleController(DECLARE_ENGINE_PARAMETER_SIGNATURE) { // the state of PID has been changed, so we might reset it now, but only when needed (see idlePidDeactivationTpsThreshold) mightResetPid = true; +#if EFI_IDLE_INCREMENTAL_PID_CIC percent_t tpsPos = getTPS(PASS_ENGINE_PARAMETER_SIGNATURE); -#if EFI_IDLE_INCREMENTAL_PID_CIC // Treat the 'newValue' as if it contains not an actual IAC position, but an incremental delta. // So we add this delta to the base IAC position, with a smooth taper for TPS transients. newValue = engine->engineState.idle.baseIdlePosition + interpolateClamped(0.0f, newValue, CONFIGB(idlePidDeactivationTpsThreshold), 0.0f, tpsPos); diff --git a/firmware/controllers/algo/engine_parts.h b/firmware/controllers/algo/engine_parts.h index 25a66ed7e5..70f3a651c7 100644 --- a/firmware/controllers/algo/engine_parts.h +++ b/firmware/controllers/algo/engine_parts.h @@ -148,6 +148,9 @@ public: float servoValues[SERVO_COUNT]; float fsioLastValue[FSIO_COMMAND_COUNT]; + float fsioIdleOffset = 0; + float fsioIdleMinValue = 0; + #if EFI_ENABLE_ENGINE_WARNING /** * Shall we purposely miss on some cylinders in order to attract driver's attention to some problem diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index c9a9ba0b5d..ea888a49d5 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -5,6 +5,8 @@ * set debug_mode 23 * https://rusefi.com/wiki/index.php?title=Manual:Flexible_Logic * + * 'fsioinfo' command in console shows current state of FSIO - formulas and current value + * * @date Oct 5, 2014 * @author Andrey Belomutskiy, (c) 2012-2019 */ @@ -27,6 +29,11 @@ */ #define NO_PWM 0 +// see useFSIO12ForIdleOffset +#define MAGIC_OFFSET_FOR_IDLE_OFFSET 12 +// see useFSIO13ForIdleMinValue +#define MAGIC_OFFSET_FOR_IDLE_MIN_VALUE 13 + // see useFSIO15ForIdleRpmAdjustment #define MAGIC_OFFSET_FOR_IDLE_TARGET_RPM 14 // see useFSIO16ForTimingAdjustment @@ -50,7 +57,9 @@ static LENameOrdinalPair leVBatt(LE_METHOD_VBATT, "vbatt"); static LENameOrdinalPair leFan(LE_METHOD_FAN, "fan"); static LENameOrdinalPair leCoolant(LE_METHOD_COOLANT, "coolant"); static LENameOrdinalPair leIsCoolantBroken(LE_METHOD_IS_COOLANT_BROKEN, "is_clt_broken"); +// @returns boolean state of A/C toggle switch static LENameOrdinalPair leAcToggle(LE_METHOD_AC_TOGGLE, "ac_on_switch"); +// @returns float number of seconds since last A/C toggle static LENameOrdinalPair leTimeSinceAcToggle(LE_METHOD_TIME_SINCE_AC_TOGGLE, "time_since_ac_on_switch"); static LENameOrdinalPair leTimeSinceBoot(LE_METHOD_TIME_SINCE_BOOT, "time_since_boot"); static LENameOrdinalPair leFsioSetting(LE_METHOD_FSIO_SETTING, "fsio_setting"); @@ -496,10 +505,15 @@ void runFsio(DECLARE_ENGINE_PARAMETER_SIGNATURE) { } #endif /* EFI_ENABLE_CRITICAL_ENGINE_STOP */ + if (engineConfiguration->useFSIO12ForIdleOffset) { + updateValueOrWarning(MAGIC_OFFSET_FOR_IDLE_OFFSET, "idle offset", &ENGINE(fsioState.fsioIdleOffset) PASS_ENGINE_PARAMETER_SUFFIX); + } + if (engineConfiguration->useFSIO13ForIdleMinValue) { + updateValueOrWarning(MAGIC_OFFSET_FOR_IDLE_MIN_VALUE, "idle minValue", &ENGINE(fsioState.fsioIdleMinValue) PASS_ENGINE_PARAMETER_SUFFIX); + } if (engineConfiguration->useFSIO15ForIdleRpmAdjustment) { updateValueOrWarning(MAGIC_OFFSET_FOR_IDLE_TARGET_RPM, "RPM target", &ENGINE(fsioState.fsioIdleTargetRPMAdjustment) PASS_ENGINE_PARAMETER_SUFFIX); } - if (engineConfiguration->useFSIO16ForTimingAdjustment) { updateValueOrWarning(MAGIC_OFFSET_FOR_TIMING_FSIO, "timing", &ENGINE(fsioState.fsioTimingAdjustment) PASS_ENGINE_PARAMETER_SUFFIX); } diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 77a3529b32..af4c78f4be 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -814,6 +814,6 @@ int getRusEfiVersion(void) { if (initBootloader() != 0) return 123; #endif /* EFI_BOOTLOADER_INCLUDE_CODE */ - return 20190910; + return 20190911; } #endif /* EFI_UNIT_TEST */ diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index ef501fb1b5..82aceb7228 100644 --- a/firmware/controllers/generated/engine_configuration_generated_structures.h +++ b/firmware/controllers/generated/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 // by class com.rusefi.output.CHeaderConsumer // begin #ifndef CONTROLLERS_GENERATED_ENGINE_CONFIGURATION_GENERATED_STRUCTURES_H @@ -1569,10 +1569,10 @@ struct engine_configuration_s { bool useFSIO4ForSeriousEngineWarning : 1; /** offset 1464 bit 29 */ - bool unused_bit_1472_29 : 1; + bool useFSIO12ForIdleOffset : 1; /** offset 1464 bit 30 */ - bool unused_bit_1472_30 : 1; + bool useFSIO13ForIdleMinValue : 1; /** * offset 1468 */ @@ -2557,7 +2557,11 @@ struct engine_configuration_s { /** * offset 4040 */ - int mainUnusedEnd[590]; + pid_s idleRpmPid2; + /** + * offset 4060 + */ + int mainUnusedEnd[585]; /** total size 6400*/ }; @@ -2820,4 +2824,4 @@ typedef struct persistent_config_s persistent_config_s; #endif // end -// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 +// this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 diff --git a/firmware/controllers/generated/fsio_enums_generated.def b/firmware/controllers/generated/fsio_enums_generated.def index b3d0bce3cd..aaa58d7feb 100644 --- a/firmware/controllers/generated/fsio_enums_generated.def +++ b/firmware/controllers/generated/fsio_enums_generated.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 23:14:54 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 // by class com.rusefi.output.FileFsioSettingsConsumer FSIO_SETTING_FANONTEMPERATURE = 1000, @@ -22,3 +22,5 @@ FSIO_SETTING_AUXPID4_MINVALUE = 1018, FSIO_SETTING_IDLETIMINGPID_OFFSET = 1019, FSIO_SETTING_IDLETIMINGPID_MINVALUE = 1020, + FSIO_SETTING_IDLERPMPID2_OFFSET = 1021, + FSIO_SETTING_IDLERPMPID2_MINVALUE = 1022, diff --git a/firmware/controllers/generated/fsio_getters.def b/firmware/controllers/generated/fsio_getters.def index c84bcb41ed..3b23be0839 100644 --- a/firmware/controllers/generated/fsio_getters.def +++ b/firmware/controllers/generated/fsio_getters.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 23:40:30 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_FANONTEMPERATURE: @@ -43,3 +43,7 @@ return engineConfiguration->idleTimingPid.offset; case FSIO_SETTING_IDLETIMINGPID_MINVALUE: return engineConfiguration->idleTimingPid.minValue; + case FSIO_SETTING_IDLERPMPID2_OFFSET: + return engineConfiguration->idleRpmPid2.offset; + case FSIO_SETTING_IDLERPMPID2_MINVALUE: + return engineConfiguration->idleRpmPid2.minValue; diff --git a/firmware/controllers/generated/fsio_names.def b/firmware/controllers/generated/fsio_names.def index 4244e5c56f..7f99c41d54 100644 --- a/firmware/controllers/generated/fsio_names.def +++ b/firmware/controllers/generated/fsio_names.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 18:41:30 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 // by class com.rusefi.output.FileFsioSettingsConsumer static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature"); @@ -22,3 +22,5 @@ static LENameOrdinalPair leauxPid4_offset(FSIO_SETTING_AUXPID4_OFFSET, "cfg_auxP static LENameOrdinalPair leauxPid4_minValue(FSIO_SETTING_AUXPID4_MINVALUE, "cfg_auxPid4_minValue"); static LENameOrdinalPair leidleTimingPid_offset(FSIO_SETTING_IDLETIMINGPID_OFFSET, "cfg_idleTimingPid_offset"); static LENameOrdinalPair leidleTimingPid_minValue(FSIO_SETTING_IDLETIMINGPID_MINVALUE, "cfg_idleTimingPid_minValue"); +static LENameOrdinalPair leidleRpmPid2_offset(FSIO_SETTING_IDLERPMPID2_OFFSET, "cfg_idleRpmPid2_offset"); +static LENameOrdinalPair leidleRpmPid2_minValue(FSIO_SETTING_IDLERPMPID2_MINVALUE, "cfg_idleRpmPid2_minValue"); diff --git a/firmware/controllers/generated/fsio_strings.def b/firmware/controllers/generated/fsio_strings.def index ef2468dc58..e44072c9cd 100644 --- a/firmware/controllers/generated/fsio_strings.def +++ b/firmware/controllers/generated/fsio_strings.def @@ -1,4 +1,4 @@ -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 19:17:01 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 // by class com.rusefi.output.FileFsioSettingsConsumer case FSIO_SETTING_FANONTEMPERATURE: @@ -43,3 +43,7 @@ return "cfg_idleTimingPid_offset"; case FSIO_SETTING_IDLETIMINGPID_MINVALUE: return "cfg_idleTimingPid_minValue"; + case FSIO_SETTING_IDLERPMPID2_OFFSET: + return "cfg_idleRpmPid2_offset"; + case FSIO_SETTING_IDLERPMPID2_MINVALUE: + return "cfg_idleRpmPid2_minValue"; diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 21fc851a41..64c8a4901b 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1061,6 +1061,22 @@ #define idlePidRpmDeadZone_offset_hex 766 #define idlePidRpmUpperLimit_offset 1484 #define idlePidRpmUpperLimit_offset_hex 5cc +#define idleRpmPid2_dFactor_offset 4048 +#define idleRpmPid2_dFactor_offset_hex fd0 +#define idleRpmPid2_iFactor_offset 4044 +#define idleRpmPid2_iFactor_offset_hex fcc +#define idleRpmPid2_maxValue_offset 4058 +#define idleRpmPid2_maxValue_offset_hex fda +#define idleRpmPid2_minValue_offset 4056 +#define idleRpmPid2_minValue_offset_hex fd8 +#define idleRpmPid2_offset 4040 +#define idleRpmPid2_offset_hex fc8 +#define idleRpmPid2_offset_offset 4052 +#define idleRpmPid2_offset_offset_hex fd4 +#define idleRpmPid2_periodMs_offset 4054 +#define idleRpmPid2_periodMs_offset_hex fd6 +#define idleRpmPid2_pFactor_offset 4040 +#define idleRpmPid2_pFactor_offset_hex fc8 #define idleRpmPid_dFactor_offset 1796 #define idleRpmPid_dFactor_offset_hex 704 #define idleRpmPid_iFactor_offset 1792 @@ -1368,8 +1384,8 @@ #define mainRelayPin_offset_hex 2c2 #define mainRelayPinMode_offset 752 #define mainRelayPinMode_offset_hex 2f0 -#define mainUnusedEnd_offset 4040 -#define mainUnusedEnd_offset_hex fc8 +#define mainUnusedEnd_offset 4060 +#define mainUnusedEnd_offset_hex fdc #define malfunctionIndicatorPin_offset 660 #define malfunctionIndicatorPin_offset_hex 294 #define malfunctionIndicatorPinMode_offset 661 @@ -1851,10 +1867,6 @@ #define unused_1484_bit_20_offset_hex 5c4 #define unused_1484_bit_21_offset 1476 #define unused_1484_bit_21_offset_hex 5c4 -#define unused_bit_1472_29_offset 1464 -#define unused_bit_1472_29_offset_hex 5b8 -#define unused_bit_1472_30_offset 1464 -#define unused_bit_1472_30_offset_hex 5b8 #define unused_board_984_31_offset 744 #define unused_board_984_31_offset_hex 2e8 #define unused_former_warmup_target_afr_offset 2096 @@ -1905,8 +1917,12 @@ #define useFSIO10ForServo3_offset_hex 5b8 #define useFSIO11ForServo4_offset 1464 #define useFSIO11ForServo4_offset_hex 5b8 +#define useFSIO12ForIdleOffset_offset 1464 +#define useFSIO12ForIdleOffset_offset_hex 5b8 #define useFSIO12ForServo5_offset 1464 #define useFSIO12ForServo5_offset_hex 5b8 +#define useFSIO13ForIdleMinValue_offset 1464 +#define useFSIO13ForIdleMinValue_offset_hex 5b8 #define useFSIO15ForIdleRpmAdjustment_offset 1464 #define useFSIO15ForIdleRpmAdjustment_offset_hex 5b8 #define useFSIO16ForTimingAdjustment_offset 1464 diff --git a/firmware/controllers/system_fsio.h b/firmware/controllers/system_fsio.h index 8c32f58184..059a4d9bab 100644 --- a/firmware/controllers/system_fsio.h +++ b/firmware/controllers/system_fsio.h @@ -25,7 +25,8 @@ // Human-readable: coolant > 120 #define TOO_HOT_LOGIC "coolant 120 >" -// Human-readable: ac_on_switch & rpm > 850 +// Human-readable: ac_on_switch & rpm > 850 & time_since_ac_on_switch > 0.3 +// ac_on_switch rpm & 850 time_since_ac_on_switch & > 0.3 > #define AC_RELAY_LOGIC "ac_on_switch rpm & 850 >" // Combined RPM, CLT and VBATT warning light diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 0f86019e7f..9ba3b224a2 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -737,8 +737,8 @@ bit hasFrequencyReportingMapSensor; bit useFSIO15ForIdleRpmAdjustment; bit useFSIO5ForCriticalIssueEngineStop;Sometimes we just have to shut the engine down. Use carefully! bit useFSIO4ForSeriousEngineWarning;Sometimes we have to miss injection on purpose to attract driver's attention -bit unused_bit_1472_29; -bit unused_bit_1472_30; +bit useFSIO12ForIdleOffset; +bit useFSIO13ForIdleMinValue; adc_channel_e hipOutputChannel; adc_channel_e acSwitchAdc;A/C button input handled as analogue input @@ -1056,7 +1056,8 @@ uint8_t[4] unusuedvref; uint8_t[4] unusuedsw; int[3] alFIn; uint8_t[4] unusedSpiPadding3; - int[590] mainUnusedEnd; + pid_s idleRpmPid2 + int[585] mainUnusedEnd; end_struct diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index e44581d130..075091bef3 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:01:55 EDT 2019 pageSize = 20000 page = 1 @@ -527,8 +527,8 @@ page = 1 useFSIO15ForIdleRpmAdjustment= bits, U32, 1464, [26:26], "false", "true" useFSIO5ForCriticalIssueEngineStop= bits, U32, 1464, [27:27], "false", "true" useFSIO4ForSeriousEngineWarning= bits, U32, 1464, [28:28], "false", "true" - unused_bit_1472_29 = bits, U32, 1464, [29:29], "false", "true" - unused_bit_1472_30 = bits, U32, 1464, [30:30], "false", "true" + useFSIO12ForIdleOffset = bits, U32, 1464, [29:29], "false", "true" + useFSIO13ForIdleMinValue= bits, U32, 1464, [30:30], "false", "true" hipOutputChannel = bits, U08, 1468, [0:4] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "PB12", "PB13", "PC14", "PC15", "PC16", "PC17", "PD3", "PD4", "PE2", "PE6", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" acSwitchAdc = bits, U08, 1469, [0:4] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "PB12", "PB13", "PC14", "PC15", "PC16", "PC17", "PD3", "PD4", "PE2", "PE6", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" vRefAdcChannel = bits, U08, 1470, [0:4] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "PB12", "PB13", "PC14", "PC15", "PC16", "PC17", "PD3", "PD4", "PE2", "PE6", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" @@ -881,7 +881,14 @@ page = 1 ;no TS info - skipping unusuedsw offset 4020 ;no TS info - skipping alFIn offset 4024 ;no TS info - skipping unusedSpiPadding3 offset 4036 -;no TS info - skipping mainUnusedEnd offset 4040 + idleRpmPid2_pFactor = scalar, F32, 4040, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_iFactor = scalar, F32, 4044, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_dFactor = scalar, F32, 4048, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_offset = scalar, S16, 4052, "", 1, 0, -1000, 1000, 0 + idleRpmPid2_periodMs = scalar, S16, 4054, "ms", 1, 0, 0, 3000, 0 + idleRpmPid2_minValue = scalar, S16, 4056, "", 1, 0, -30000, 30000.0, 0 + idleRpmPid2_maxValue = scalar, S16, 4058, "", 1, 0, -30000, 30000.0, 0 +;no TS info - skipping mainUnusedEnd offset 4060 pedalToTpsTable = array, U08, 6400, [8x8],"deg", 1, 0, -720, 720, 2 pedalToTpsPedalBins = array, U08, 6464, [8], "%", 1, 0, 0.0, 120.0, 0 pedalToTpsRpmBins = array, U08, 6472, [8], "RPM", 50, 0, 0.0, 12000.0, 0 @@ -2903,6 +2910,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax + field = "Offset#2", idleRpmPid2_offset + field = "Min#2", idleRpmPid2_minValue field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit @@ -3361,14 +3370,16 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "#7", fsioFormulas7 field = "use FSIO #8 for servo #1", useFSIO8ForServo1 field = "#8", fsioFormulas8 - field = "use FSIO #9 for servo #2", useFSIO8ForServo1 + field = "use FSIO #9 for servo #2", useFSIO9ForServo2 field = "#9", fsioFormulas9 - field = "use FSIO #10 for servo #3", useFSIO8ForServo1 + field = "use FSIO #10 for servo #3", useFSIO10ForServo3 field = "#10", fsioFormulas10 - field = "use FSIO #11 for servo #4", useFSIO8ForServo1 + field = "use FSIO #11 for servo #4", useFSIO11ForServo4 field = "#11", fsioFormulas11 - field = "use FSIO #12 for servo #5", useFSIO8ForServo1 + field = "use FSIO #12 for servo #5", useFSIO12ForServo5 + field = "use FSIO #12 idle offset", useFSIO12ForIdleOffset field = "#12", fsioFormulas12 + field = "use FSIO #13 idle min value", useFSIO13ForIdleMinValue field = "#13", fsioFormulas13 field = "#14", fsioFormulas14 field = "use FSIO #15 for target idle RPM adjustment", useFSIO15ForIdleRpmAdjustment diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index a6c07a8e19..91b0d2dbe8 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1923,6 +1923,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax + field = "Offset#2", idleRpmPid2_offset + field = "Min#2", idleRpmPid2_minValue field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit @@ -2381,14 +2383,16 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "#7", fsioFormulas7 field = "use FSIO #8 for servo #1", useFSIO8ForServo1 field = "#8", fsioFormulas8 - field = "use FSIO #9 for servo #2", useFSIO8ForServo1 + field = "use FSIO #9 for servo #2", useFSIO9ForServo2 field = "#9", fsioFormulas9 - field = "use FSIO #10 for servo #3", useFSIO8ForServo1 + field = "use FSIO #10 for servo #3", useFSIO10ForServo3 field = "#10", fsioFormulas10 - field = "use FSIO #11 for servo #4", useFSIO8ForServo1 + field = "use FSIO #11 for servo #4", useFSIO11ForServo4 field = "#11", fsioFormulas11 - field = "use FSIO #12 for servo #5", useFSIO8ForServo1 + field = "use FSIO #12 for servo #5", useFSIO12ForServo5 + field = "use FSIO #12 idle offset", useFSIO12ForIdleOffset field = "#12", fsioFormulas12 + field = "use FSIO #13 idle min value", useFSIO13ForIdleMinValue field = "#13", fsioFormulas13 field = "#14", fsioFormulas14 field = "use FSIO #15 for target idle RPM adjustment", useFSIO15ForIdleRpmAdjustment diff --git a/firmware/tunerstudio/rusefi_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini index 0029814305..6d354af558 100644 --- a/firmware/tunerstudio/rusefi_frankenso.ini +++ b/firmware/tunerstudio/rusefi_frankenso.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:57:03 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:02:00 EDT 2019 pageSize = 20000 page = 1 @@ -527,8 +527,8 @@ page = 1 useFSIO15ForIdleRpmAdjustment= bits, U32, 1464, [26:26], "false", "true" useFSIO5ForCriticalIssueEngineStop= bits, U32, 1464, [27:27], "false", "true" useFSIO4ForSeriousEngineWarning= bits, U32, 1464, [28:28], "false", "true" - unused_bit_1472_29 = bits, U32, 1464, [29:29], "false", "true" - unused_bit_1472_30 = bits, U32, 1464, [30:30], "false", "true" + useFSIO12ForIdleOffset = bits, U32, 1464, [29:29], "false", "true" + useFSIO13ForIdleMinValue= bits, U32, 1464, [30:30], "false", "true" hipOutputChannel = bits, U08, 1468, [0:4] "Analog 3O","Analog 3L","Analog 3M","Analog 3J","Analog 3I","INVALID","Analog 3H","Analog 3G","INVALID","INVALID","INVALID","Analog 3P","Analog 3Q","Analog 3N","Analog VBatt","Analog 3E","NONE","INVALID","INVALID","INVALID" acSwitchAdc = bits, U08, 1469, [0:4] "Analog 3O","Analog 3L","Analog 3M","Analog 3J","Analog 3I","INVALID","Analog 3H","Analog 3G","INVALID","INVALID","INVALID","Analog 3P","Analog 3Q","Analog 3N","Analog VBatt","Analog 3E","NONE","INVALID","INVALID","INVALID" vRefAdcChannel = bits, U08, 1470, [0:4] "Analog 3O","Analog 3L","Analog 3M","Analog 3J","Analog 3I","INVALID","Analog 3H","Analog 3G","INVALID","INVALID","INVALID","Analog 3P","Analog 3Q","Analog 3N","Analog VBatt","Analog 3E","NONE","INVALID","INVALID","INVALID" @@ -881,7 +881,14 @@ page = 1 ;no TS info - skipping unusuedsw offset 4020 ;no TS info - skipping alFIn offset 4024 ;no TS info - skipping unusedSpiPadding3 offset 4036 -;no TS info - skipping mainUnusedEnd offset 4040 + idleRpmPid2_pFactor = scalar, F32, 4040, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_iFactor = scalar, F32, 4044, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_dFactor = scalar, F32, 4048, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_offset = scalar, S16, 4052, "", 1, 0, -1000, 1000, 0 + idleRpmPid2_periodMs = scalar, S16, 4054, "ms", 1, 0, 0, 3000, 0 + idleRpmPid2_minValue = scalar, S16, 4056, "", 1, 0, -30000, 30000.0, 0 + idleRpmPid2_maxValue = scalar, S16, 4058, "", 1, 0, -30000, 30000.0, 0 +;no TS info - skipping mainUnusedEnd offset 4060 pedalToTpsTable = array, U08, 6400, [8x8],"deg", 1, 0, -720, 720, 2 pedalToTpsPedalBins = array, U08, 6464, [8], "%", 1, 0, 0.0, 120.0, 0 pedalToTpsRpmBins = array, U08, 6472, [8], "RPM", 50, 0, 0.0, 12000.0, 0 @@ -2903,6 +2910,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax + field = "Offset#2", idleRpmPid2_offset + field = "Min#2", idleRpmPid2_minValue field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit @@ -3361,14 +3370,16 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "#7", fsioFormulas7 field = "use FSIO #8 for servo #1", useFSIO8ForServo1 field = "#8", fsioFormulas8 - field = "use FSIO #9 for servo #2", useFSIO8ForServo1 + field = "use FSIO #9 for servo #2", useFSIO9ForServo2 field = "#9", fsioFormulas9 - field = "use FSIO #10 for servo #3", useFSIO8ForServo1 + field = "use FSIO #10 for servo #3", useFSIO10ForServo3 field = "#10", fsioFormulas10 - field = "use FSIO #11 for servo #4", useFSIO8ForServo1 + field = "use FSIO #11 for servo #4", useFSIO11ForServo4 field = "#11", fsioFormulas11 - field = "use FSIO #12 for servo #5", useFSIO8ForServo1 + field = "use FSIO #12 for servo #5", useFSIO12ForServo5 + field = "use FSIO #12 idle offset", useFSIO12ForIdleOffset field = "#12", fsioFormulas12 + field = "use FSIO #13 idle min value", useFSIO13ForIdleMinValue field = "#13", fsioFormulas13 field = "#14", fsioFormulas14 field = "use FSIO #15 for target idle RPM adjustment", useFSIO15ForIdleRpmAdjustment diff --git a/firmware/tunerstudio/rusefi_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini index eec0ca7204..d91e34c106 100644 --- a/firmware/tunerstudio/rusefi_microrusefi.ini +++ b/firmware/tunerstudio/rusefi_microrusefi.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:57:01 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:01:58 EDT 2019 pageSize = 20000 page = 1 @@ -527,8 +527,8 @@ page = 1 useFSIO15ForIdleRpmAdjustment= bits, U32, 1464, [26:26], "false", "true" useFSIO5ForCriticalIssueEngineStop= bits, U32, 1464, [27:27], "false", "true" useFSIO4ForSeriousEngineWarning= bits, U32, 1464, [28:28], "false", "true" - unused_bit_1472_29 = bits, U32, 1464, [29:29], "false", "true" - unused_bit_1472_30 = bits, U32, 1464, [30:30], "false", "true" + useFSIO12ForIdleOffset = bits, U32, 1464, [29:29], "false", "true" + useFSIO13ForIdleMinValue= bits, U32, 1464, [30:30], "false", "true" hipOutputChannel = bits, U08, 1468, [0:4] "18 - AN temp 1","23 - AN temp 2","24 - AN temp 3","22 - AN temp 4","28 - AN volt 10","INVALID","26 - AN volt 2","31 - AN volt 3","36 - AN volt 8","40 - AN volt 9","27 - AN volt 1","Battery Sense","19 - AN volt 4","20 - AN volt 5","32 - AN volt 6","30 - AN volt 7","NONE","INVALID","INVALID","INVALID" acSwitchAdc = bits, U08, 1469, [0:4] "18 - AN temp 1","23 - AN temp 2","24 - AN temp 3","22 - AN temp 4","28 - AN volt 10","INVALID","26 - AN volt 2","31 - AN volt 3","36 - AN volt 8","40 - AN volt 9","27 - AN volt 1","Battery Sense","19 - AN volt 4","20 - AN volt 5","32 - AN volt 6","30 - AN volt 7","NONE","INVALID","INVALID","INVALID" vRefAdcChannel = bits, U08, 1470, [0:4] "18 - AN temp 1","23 - AN temp 2","24 - AN temp 3","22 - AN temp 4","28 - AN volt 10","INVALID","26 - AN volt 2","31 - AN volt 3","36 - AN volt 8","40 - AN volt 9","27 - AN volt 1","Battery Sense","19 - AN volt 4","20 - AN volt 5","32 - AN volt 6","30 - AN volt 7","NONE","INVALID","INVALID","INVALID" @@ -881,7 +881,14 @@ page = 1 ;no TS info - skipping unusuedsw offset 4020 ;no TS info - skipping alFIn offset 4024 ;no TS info - skipping unusedSpiPadding3 offset 4036 -;no TS info - skipping mainUnusedEnd offset 4040 + idleRpmPid2_pFactor = scalar, F32, 4040, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_iFactor = scalar, F32, 4044, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_dFactor = scalar, F32, 4048, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_offset = scalar, S16, 4052, "", 1, 0, -1000, 1000, 0 + idleRpmPid2_periodMs = scalar, S16, 4054, "ms", 1, 0, 0, 3000, 0 + idleRpmPid2_minValue = scalar, S16, 4056, "", 1, 0, -30000, 30000.0, 0 + idleRpmPid2_maxValue = scalar, S16, 4058, "", 1, 0, -30000, 30000.0, 0 +;no TS info - skipping mainUnusedEnd offset 4060 pedalToTpsTable = array, U08, 6400, [8x8],"deg", 1, 0, -720, 720, 2 pedalToTpsPedalBins = array, U08, 6464, [8], "%", 1, 0, 0.0, 120.0, 0 pedalToTpsRpmBins = array, U08, 6472, [8], "RPM", 50, 0, 0.0, 12000.0, 0 @@ -2888,6 +2895,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax + field = "Offset#2", idleRpmPid2_offset + field = "Min#2", idleRpmPid2_minValue field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit @@ -3345,14 +3354,16 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "#7", fsioFormulas7 field = "use FSIO #8 for servo #1", useFSIO8ForServo1 field = "#8", fsioFormulas8 - field = "use FSIO #9 for servo #2", useFSIO8ForServo1 + field = "use FSIO #9 for servo #2", useFSIO9ForServo2 field = "#9", fsioFormulas9 - field = "use FSIO #10 for servo #3", useFSIO8ForServo1 + field = "use FSIO #10 for servo #3", useFSIO10ForServo3 field = "#10", fsioFormulas10 - field = "use FSIO #11 for servo #4", useFSIO8ForServo1 + field = "use FSIO #11 for servo #4", useFSIO11ForServo4 field = "#11", fsioFormulas11 - field = "use FSIO #12 for servo #5", useFSIO8ForServo1 + field = "use FSIO #12 for servo #5", useFSIO12ForServo5 + field = "use FSIO #12 idle offset", useFSIO12ForIdleOffset field = "#12", fsioFormulas12 + field = "use FSIO #13 idle min value", useFSIO13ForIdleMinValue field = "#13", fsioFormulas13 field = "#14", fsioFormulas14 field = "use FSIO #15 for target idle RPM adjustment", useFSIO15ForIdleRpmAdjustment diff --git a/firmware/tunerstudio/rusefi_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini index b0ee5558c3..644696e027 100644 --- a/firmware/tunerstudio/rusefi_prometheus.ini +++ b/firmware/tunerstudio/rusefi_prometheus.ini @@ -82,7 +82,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:57:05 EDT 2019 +; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:02:03 EDT 2019 pageSize = 20000 page = 1 @@ -527,8 +527,8 @@ page = 1 useFSIO15ForIdleRpmAdjustment= bits, U32, 1464, [26:26], "false", "true" useFSIO5ForCriticalIssueEngineStop= bits, U32, 1464, [27:27], "false", "true" useFSIO4ForSeriousEngineWarning= bits, U32, 1464, [28:28], "false", "true" - unused_bit_1472_29 = bits, U32, 1464, [29:29], "false", "true" - unused_bit_1472_30 = bits, U32, 1464, [30:30], "false", "true" + useFSIO12ForIdleOffset = bits, U32, 1464, [29:29], "false", "true" + useFSIO13ForIdleMinValue= bits, U32, 1464, [30:30], "false", "true" hipOutputChannel = bits, U08, 1468, [0:4] "Analog 3O","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","NONE","INVALID","INVALID","INVALID" acSwitchAdc = bits, U08, 1469, [0:4] "Analog 3O","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","NONE","INVALID","INVALID","INVALID" vRefAdcChannel = bits, U08, 1470, [0:4] "Analog 3O","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","NONE","INVALID","INVALID","INVALID" @@ -881,7 +881,14 @@ page = 1 ;no TS info - skipping unusuedsw offset 4020 ;no TS info - skipping alFIn offset 4024 ;no TS info - skipping unusedSpiPadding3 offset 4036 -;no TS info - skipping mainUnusedEnd offset 4040 + idleRpmPid2_pFactor = scalar, F32, 4040, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_iFactor = scalar, F32, 4044, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_dFactor = scalar, F32, 4048, "", 1, 0, -10000, 10000, 7 + idleRpmPid2_offset = scalar, S16, 4052, "", 1, 0, -1000, 1000, 0 + idleRpmPid2_periodMs = scalar, S16, 4054, "ms", 1, 0, 0, 3000, 0 + idleRpmPid2_minValue = scalar, S16, 4056, "", 1, 0, -30000, 30000.0, 0 + idleRpmPid2_maxValue = scalar, S16, 4058, "", 1, 0, -30000, 30000.0, 0 +;no TS info - skipping mainUnusedEnd offset 4060 pedalToTpsTable = array, U08, 6400, [8x8],"deg", 1, 0, -720, 720, 2 pedalToTpsPedalBins = array, U08, 6464, [8], "%", 1, 0, 0.0, 120.0, 0 pedalToTpsRpmBins = array, U08, 6472, [8], "RPM", 50, 0, 0.0, 12000.0, 0 @@ -2899,6 +2906,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax + field = "Offset#2", idleRpmPid2_offset + field = "Min#2", idleRpmPid2_minValue field = "period", idleRpmPid_periodMs field = "RPM dead zone to deactivate IAC pid", idlePidRpmDeadZone field = "RPM upper limit to deactivate IAC pid",idlePidRpmUpperLimit @@ -3357,14 +3366,16 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "#7", fsioFormulas7 field = "use FSIO #8 for servo #1", useFSIO8ForServo1 field = "#8", fsioFormulas8 - field = "use FSIO #9 for servo #2", useFSIO8ForServo1 + field = "use FSIO #9 for servo #2", useFSIO9ForServo2 field = "#9", fsioFormulas9 - field = "use FSIO #10 for servo #3", useFSIO8ForServo1 + field = "use FSIO #10 for servo #3", useFSIO10ForServo3 field = "#10", fsioFormulas10 - field = "use FSIO #11 for servo #4", useFSIO8ForServo1 + field = "use FSIO #11 for servo #4", useFSIO11ForServo4 field = "#11", fsioFormulas11 - field = "use FSIO #12 for servo #5", useFSIO8ForServo1 + field = "use FSIO #12 for servo #5", useFSIO12ForServo5 + field = "use FSIO #12 idle offset", useFSIO12ForIdleOffset field = "#12", fsioFormulas12 + field = "use FSIO #13 idle min value", useFSIO13ForIdleMinValue field = "#13", fsioFormulas13 field = "#14", fsioFormulas14 field = "use FSIO #15 for target idle RPM adjustment", useFSIO15ForIdleRpmAdjustment diff --git a/firmware/util/math/pid.h b/firmware/util/math/pid.h index 6f3b9895c3..e8f990af0d 100644 --- a/firmware/util/math/pid.h +++ b/firmware/util/math/pid.h @@ -68,7 +68,7 @@ public: // todo: move this to pid_s one day float iTermMin = -1000000.0; float iTermMax = 1000000.0; -private: +protected: pid_s *parameters; private: diff --git a/java_console/models/src/com/rusefi/config/generated/Fields.java b/java_console/models/src/com/rusefi/config/generated/Fields.java index 84a563bbd0..3d95b101e4 100644 --- a/java_console/models/src/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/com/rusefi/config/generated/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config.generated; -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Tue Sep 10 22:56:58 EDT 2019 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 20:00:32 EDT 2019 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -710,6 +710,14 @@ public class Fields { public static final int idlePidRpmDeadZone_offset = 1894; public static final int idlePidRpmDeadZone_offset_hex = 766; public static final int idlePidRpmUpperLimit_offset = 1484; + public static final int idleRpmPid2_dFactor_offset = 4048; + public static final int idleRpmPid2_iFactor_offset = 4044; + public static final int idleRpmPid2_maxValue_offset = 4058; + public static final int idleRpmPid2_minValue_offset = 4056; + public static final int idleRpmPid2_offset = 4040; + public static final int idleRpmPid2_offset_offset = 4052; + public static final int idleRpmPid2_periodMs_offset = 4054; + public static final int idleRpmPid2_pFactor_offset = 4040; public static final int idleRpmPid_dFactor_offset = 1796; public static final int idleRpmPid_dFactor_offset_hex = 704; public static final int idleRpmPid_iFactor_offset = 1792; @@ -899,7 +907,7 @@ public class Fields { public static final int mafSensorType_offset = 948; public static final int mainRelayPin_offset = 706; public static final int mainRelayPinMode_offset = 752; - public static final int mainUnusedEnd_offset = 4040; + public static final int mainUnusedEnd_offset = 4060; public static final int malfunctionIndicatorPin_offset = 660; public static final int malfunctionIndicatorPin_offset_hex = 294; public static final int malfunctionIndicatorPinMode_offset = 661; @@ -1205,8 +1213,6 @@ public class Fields { public static final int unused1234234_offset = 2042; public static final int unused_1484_bit_20_offset = 1476; public static final int unused_1484_bit_21_offset = 1476; - public static final int unused_bit_1472_29_offset = 1464; - public static final int unused_bit_1472_30_offset = 1464; public static final int unused_board_984_31_offset = 744; public static final int unused_former_warmup_target_afr_offset = 2096; public static final int unused_former_warmup_target_afr_offset_hex = 830; @@ -1235,7 +1241,9 @@ public class Fields { public static final int useFixedBaroCorrFromMap_offset = 1476; public static final int useFSIO10ForServo3_offset = 1464; public static final int useFSIO11ForServo4_offset = 1464; + public static final int useFSIO12ForIdleOffset_offset = 1464; public static final int useFSIO12ForServo5_offset = 1464; + public static final int useFSIO13ForIdleMinValue_offset = 1464; public static final int useFSIO15ForIdleRpmAdjustment_offset = 1464; public static final int useFSIO16ForTimingAdjustment_offset = 1464; public static final int useFSIO4ForSeriousEngineWarning_offset = 1464; @@ -1721,8 +1729,8 @@ public class Fields { public static final Field USEFSIO15FORIDLERPMADJUSTMENT = Field.create("USEFSIO15FORIDLERPMADJUSTMENT", 1464, FieldType.BIT, 26); public static final Field USEFSIO5FORCRITICALISSUEENGINESTOP = Field.create("USEFSIO5FORCRITICALISSUEENGINESTOP", 1464, FieldType.BIT, 27); public static final Field USEFSIO4FORSERIOUSENGINEWARNING = Field.create("USEFSIO4FORSERIOUSENGINEWARNING", 1464, FieldType.BIT, 28); - public static final Field UNUSED_BIT_1472_29 = Field.create("UNUSED_BIT_1472_29", 1464, FieldType.BIT, 29); - public static final Field UNUSED_BIT_1472_30 = Field.create("UNUSED_BIT_1472_30", 1464, FieldType.BIT, 30); + public static final Field USEFSIO12FORIDLEOFFSET = Field.create("USEFSIO12FORIDLEOFFSET", 1464, FieldType.BIT, 29); + public static final Field USEFSIO13FORIDLEMINVALUE = Field.create("USEFSIO13FORIDLEMINVALUE", 1464, FieldType.BIT, 30); public static final Field HIPOUTPUTCHANNEL = Field.create("HIPOUTPUTCHANNEL", 1468, FieldType.INT8, adc_channel_e); public static final Field ACSWITCHADC = Field.create("ACSWITCHADC", 1469, FieldType.INT8, adc_channel_e); public static final Field VREFADCCHANNEL = Field.create("VREFADCCHANNEL", 1470, FieldType.INT8, adc_channel_e); @@ -2039,6 +2047,13 @@ public class Fields { public static final Field IDLERPMPID_ITERMMAX = Field.create("IDLERPMPID_ITERMMAX", 4006, FieldType.INT16); public static final Field MC33972SPIDEVICE = Field.create("MC33972SPIDEVICE", 4008, FieldType.INT8); public static final Field ETBIDLETHROTTLERANGE = Field.create("ETBIDLETHROTTLERANGE", 4012, FieldType.FLOAT); + public static final Field IDLERPMPID2_PFACTOR = Field.create("IDLERPMPID2_PFACTOR", 4040, FieldType.FLOAT); + public static final Field IDLERPMPID2_IFACTOR = Field.create("IDLERPMPID2_IFACTOR", 4044, FieldType.FLOAT); + public static final Field IDLERPMPID2_DFACTOR = Field.create("IDLERPMPID2_DFACTOR", 4048, FieldType.FLOAT); + public static final Field IDLERPMPID2_OFFSET = Field.create("IDLERPMPID2_OFFSET", 4052, FieldType.INT16); + public static final Field IDLERPMPID2_PERIODMS = Field.create("IDLERPMPID2_PERIODMS", 4054, FieldType.INT16); + public static final Field IDLERPMPID2_MINVALUE = Field.create("IDLERPMPID2_MINVALUE", 4056, FieldType.INT16); + public static final Field IDLERPMPID2_MAXVALUE = Field.create("IDLERPMPID2_MAXVALUE", 4058, FieldType.INT16); public static final Field PEDALTOTPSTABLE = Field.create("PEDALTOTPSTABLE", 6400, FieldType.INT); public static final Field FSIOFORMULAS1 = Field.create("FSIOFORMULAS1", 6672, FieldType.INT); public static final Field FSIOFORMULAS2 = Field.create("FSIOFORMULAS2", 6872, FieldType.INT); @@ -2493,8 +2508,8 @@ public class Fields { USEFSIO15FORIDLERPMADJUSTMENT, USEFSIO5FORCRITICALISSUEENGINESTOP, USEFSIO4FORSERIOUSENGINEWARNING, - UNUSED_BIT_1472_29, - UNUSED_BIT_1472_30, + USEFSIO12FORIDLEOFFSET, + USEFSIO13FORIDLEMINVALUE, HIPOUTPUTCHANNEL, ACSWITCHADC, VREFADCCHANNEL, @@ -2806,6 +2821,13 @@ public class Fields { IDLERPMPID_ITERMMAX, MC33972SPIDEVICE, ETBIDLETHROTTLERANGE, + IDLERPMPID2_PFACTOR, + IDLERPMPID2_IFACTOR, + IDLERPMPID2_DFACTOR, + IDLERPMPID2_OFFSET, + IDLERPMPID2_PERIODMS, + IDLERPMPID2_MINVALUE, + IDLERPMPID2_MAXVALUE, PEDALTOTPSTABLE, FSIOFORMULAS1, FSIOFORMULAS2,