From 76b2bb8149af5d0cbef5ebdcdfb0a541ccbd6d93 Mon Sep 17 00:00:00 2001 From: GitHub gen-configs Action Date: Sat, 24 Jun 2023 01:08:02 +0000 Subject: [PATCH] Auto-generated configs and docs --- ...ngine_configuration_generated_structures.h | 51 +++++++++++++++---- .../controllers/algo/rusefi_generated.h | 8 +-- ...ngine_configuration_generated_structures.h | 51 +++++++++++++++---- .../controllers/algo/rusefi_generated.h | 8 +-- ...ngine_configuration_generated_structures.h | 51 +++++++++++++++---- .../controllers/algo/rusefi_generated.h | 8 +-- ...ngine_configuration_generated_structures.h | 51 +++++++++++++++---- .../controllers/generated/rusefi_generated.h | 8 +-- .../controllers/generated/signature_48way.h | 4 +- .../generated/signature_alphax-2chan.h | 4 +- .../generated/signature_alphax-4chan.h | 4 +- .../generated/signature_alphax-4chan_f7.h | 4 +- .../generated/signature_alphax-8chan.h | 4 +- .../generated/signature_alphax-8chan_f7.h | 4 +- .../controllers/generated/signature_atlas.h | 4 +- .../controllers/generated/signature_core8.h | 4 +- .../controllers/generated/signature_cypress.h | 4 +- .../generated/signature_f407-discovery.h | 4 +- .../generated/signature_f429-discovery.h | 4 +- .../generated/signature_frankenso_na6.h | 4 +- .../generated/signature_harley81.h | 4 +- .../generated/signature_hellen-gm-e67.h | 4 +- .../generated/signature_hellen-honda-k.h | 4 +- .../generated/signature_hellen-nb1.h | 4 +- .../generated/signature_hellen121nissan.h | 4 +- .../generated/signature_hellen121vag.h | 4 +- .../generated/signature_hellen128.h | 4 +- .../generated/signature_hellen154hyundai.h | 4 +- .../generated/signature_hellen72.h | 4 +- .../generated/signature_hellen81.h | 4 +- .../generated/signature_hellen88bmw.h | 4 +- .../generated/signature_hellenNA6.h | 4 +- .../generated/signature_hellenNA8_96.h | 4 +- .../controllers/generated/signature_kin.h | 4 +- .../controllers/generated/signature_m74_9.h | 4 +- .../controllers/generated/signature_mre_f4.h | 4 +- .../controllers/generated/signature_mre_f7.h | 4 +- .../generated/signature_nucleo_f429.h | 4 +- .../generated/signature_nucleo_f767.h | 4 +- .../generated/signature_nucleo_h743.h | 4 +- .../generated/signature_prometheus_405.h | 4 +- .../generated/signature_prometheus_469.h | 4 +- .../generated/signature_proteus_f4.h | 4 +- .../generated/signature_proteus_f7.h | 4 +- .../generated/signature_proteus_h7.h | 4 +- .../controllers/generated/signature_s105.h | 4 +- .../generated/signature_small-can.h | 4 +- .../generated/signature_subaru_eg33_f7.h | 4 +- .../controllers/generated/signature_t-b-g.h | 4 +- .../generated/signature_tdg-pdm8.h | 4 +- .../lua/generated/value_lookup_generated.cpp | 40 +++++++++++++++ .../lua/generated/value_lookup_generated.md | 15 ++++++ firmware/tunerstudio/generated/rusefi.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_48way.ini | 47 ++++++++++++++--- .../generated/rusefi_alphax-2chan.ini | 47 ++++++++++++++--- .../generated/rusefi_alphax-4chan.ini | 47 ++++++++++++++--- .../generated/rusefi_alphax-4chan_f7.ini | 47 ++++++++++++++--- .../generated/rusefi_alphax-8chan.ini | 47 ++++++++++++++--- .../generated/rusefi_alphax-8chan_f7.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_atlas.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_core8.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_cypress.ini | 47 ++++++++++++++--- .../generated/rusefi_f407-discovery.ini | 47 ++++++++++++++--- .../generated/rusefi_f429-discovery.ini | 47 ++++++++++++++--- .../generated/rusefi_frankenso_na6.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_harley81.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen-gm-e67.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen-honda-k.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen-nb1.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen121nissan.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen121vag.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen128mercedes.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen154hyundai.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_hellen72.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_hellen81.ini | 47 ++++++++++++++--- .../generated/rusefi_hellen88bmw.ini | 47 ++++++++++++++--- .../generated/rusefi_hellenNA6.ini | 47 ++++++++++++++--- .../generated/rusefi_hellenNA8_96.ini | 47 ++++++++++++++--- firmware/tunerstudio/generated/rusefi_kin.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_m74_9.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_mre_f4.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_mre_f7.ini | 47 ++++++++++++++--- .../generated/rusefi_nucleo_f429.ini | 47 ++++++++++++++--- .../generated/rusefi_nucleo_f767.ini | 47 ++++++++++++++--- .../generated/rusefi_nucleo_h743.ini | 47 ++++++++++++++--- .../generated/rusefi_prometheus_405.ini | 47 ++++++++++++++--- .../generated/rusefi_prometheus_469.ini | 47 ++++++++++++++--- .../generated/rusefi_proteus_f4.ini | 47 ++++++++++++++--- .../generated/rusefi_proteus_f7.ini | 47 ++++++++++++++--- .../generated/rusefi_proteus_h7.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_s105.ini | 47 ++++++++++++++--- .../generated/rusefi_small-can.ini | 47 ++++++++++++++--- .../generated/rusefi_subaru_eg33_f7.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_t-b-g.ini | 47 ++++++++++++++--- .../tunerstudio/generated/rusefi_tdg-pdm8.ini | 47 ++++++++++++++--- .../com/rusefi/config/generated/Fields.java | 31 ++++++++--- 96 files changed, 2067 insertions(+), 444 deletions(-) diff --git a/firmware/config/boards/cypress/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/cypress/config/controllers/algo/engine_configuration_generated_structures.h index 508d4f9502..27c84c96a6 100644 --- a/firmware/config/boards/cypress/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/cypress/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sat Jun 17 03:00:03 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:12 UTC 2023 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1576,7 +1576,7 @@ struct engine_configuration_s { bool useTpicAdvancedMode : 1 {}; /** offset 724 bit 12 */ - bool unused760b12 : 1 {}; + bool lambdaProtectionEnable : 1 {}; /** offset 724 bit 13 */ bool verboseTLE8888 : 1 {}; @@ -4356,10 +4356,29 @@ struct engine_configuration_s { */ pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; /** - units + RPM * offset 3968 */ - uint8_t mainUnusedEnd[194]; + scaled_channel lambdaProtectionMinRpm; + /** + * offset 3969 + */ + scaled_channel lambdaProtectionMinLoad; + /** + * offset 3970 + */ + scaled_channel lambdaProtectionMinTps; + /** + * Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + s + * offset 3971 + */ + scaled_channel lambdaProtectionTimeout; + /** + units + * offset 3972 + */ + uint8_t mainUnusedEnd[190]; /** * need 4 byte alignment units @@ -5254,13 +5273,27 @@ struct persistent_config_s { */ uint8_t tcu_rangeLow[6]; /** - * need 4 byte alignment - units + lambda * offset 23434 */ - uint8_t alignmentFill_at_23434[2]; + scaled_channel lambdaMaxDeviationTable[4][4]; + /** + * offset 23450 + */ + uint16_t lambdaMaxDeviationLoadBins[4]; + /** + RPM + * offset 23458 + */ + uint16_t lambdaMaxDeviationRpmBins[4]; + /** + * need 4 byte alignment + units + * offset 23466 + */ + uint8_t alignmentFill_at_23466[2]; }; -static_assert(sizeof(persistent_config_s) == 23436); +static_assert(sizeof(persistent_config_s) == 23468); // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on hellen_cypress_gen_config.bat integration/rusefi_config.txt Sat Jun 17 03:00:03 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:12 UTC 2023 diff --git a/firmware/config/boards/cypress/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/cypress/config/controllers/algo/rusefi_generated.h index ab9f6c40d0..989e109444 100644 --- a/firmware/config/boards/cypress/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/cypress/config/controllers/algo/rusefi_generated.h @@ -990,7 +990,7 @@ #define PACK_PERCENT_BYTE_MULT 100.0 #define PEDAL_TO_TPS_SIZE 8 #define PERCENT_TRIM_BYTE_PACKING_DIV 0.02 -#define persistent_config_s_size 23436 +#define persistent_config_s_size 23468 #define pid_s_size 20 #define PidAutoTune_AutoTunerState_AUTOTUNER_OFF 0 #define PidAutoTune_AutoTunerState_CONVERGED 16 @@ -1080,7 +1080,7 @@ #define SentEtbType_NONE 0 #define show_Frankenso_presets true #define show_test_presets true -#define SIGNATURE_HASH 2969982063 +#define SIGNATURE_HASH 269900760 #define SIMULATOR_TUNE_BIN_FILE_NAME "generated/simulator_tune_image.bin" #define spi_device_e_auto_enum 0="SPI_NONE",1="SPI_DEVICE_1",2="SPI_DEVICE_2",3="SPI_DEVICE_3",4="SPI_DEVICE_4" #define spi_device_e_SPI_DEVICE_1 1 @@ -1126,7 +1126,7 @@ #define TOOTH_PACKET_SIZE 2 #define TOP_DEAD_CENTER_MESSAGE "r" #define TORQUE_CURVE_SIZE 6 -#define TOTAL_CONFIG_SIZE 23436 +#define TOTAL_CONFIG_SIZE 23468 #define TPS_2_BYTE_PACKING_MULT 100 #define TPS_TPS_ACCEL_CLT_CORR_TABLE 4 #define TPS_TPS_ACCEL_TABLE 8 @@ -1359,7 +1359,7 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI master.2023.06.24.cypress.2969982063" +#define TS_SIGNATURE "rusEFI master.2023.06.24.cypress.269900760" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' diff --git a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h index ff2723c8f0..a1f52d7f11 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sat Jun 17 03:00:02 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:11 UTC 2023 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1576,7 +1576,7 @@ struct engine_configuration_s { bool useTpicAdvancedMode : 1 {}; /** offset 724 bit 12 */ - bool unused760b12 : 1 {}; + bool lambdaProtectionEnable : 1 {}; /** offset 724 bit 13 */ bool verboseTLE8888 : 1 {}; @@ -4356,10 +4356,29 @@ struct engine_configuration_s { */ pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; /** - units + RPM * offset 3968 */ - uint8_t mainUnusedEnd[194]; + scaled_channel lambdaProtectionMinRpm; + /** + * offset 3969 + */ + scaled_channel lambdaProtectionMinLoad; + /** + * offset 3970 + */ + scaled_channel lambdaProtectionMinTps; + /** + * Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + s + * offset 3971 + */ + scaled_channel lambdaProtectionTimeout; + /** + units + * offset 3972 + */ + uint8_t mainUnusedEnd[190]; /** * need 4 byte alignment units @@ -5254,13 +5273,27 @@ struct persistent_config_s { */ uint8_t tcu_rangeLow[6]; /** - * need 4 byte alignment - units + lambda * offset 23434 */ - uint8_t alignmentFill_at_23434[2]; + scaled_channel lambdaMaxDeviationTable[4][4]; + /** + * offset 23450 + */ + uint16_t lambdaMaxDeviationLoadBins[4]; + /** + RPM + * offset 23458 + */ + uint16_t lambdaMaxDeviationRpmBins[4]; + /** + * need 4 byte alignment + units + * offset 23466 + */ + uint8_t alignmentFill_at_23466[2]; }; -static_assert(sizeof(persistent_config_s) == 23436); +static_assert(sizeof(persistent_config_s) == 23468); // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on kinetis_gen_config.bat integration/rusefi_config.txt Sat Jun 17 03:00:02 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:11 UTC 2023 diff --git a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h index c338065439..8c87677920 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -990,7 +990,7 @@ #define PACK_PERCENT_BYTE_MULT 100.0 #define PEDAL_TO_TPS_SIZE 8 #define PERCENT_TRIM_BYTE_PACKING_DIV 0.02 -#define persistent_config_s_size 23436 +#define persistent_config_s_size 23468 #define pid_s_size 20 #define PidAutoTune_AutoTunerState_AUTOTUNER_OFF 0 #define PidAutoTune_AutoTunerState_CONVERGED 16 @@ -1080,7 +1080,7 @@ #define SentEtbType_NONE 0 #define show_Frankenso_presets true #define show_test_presets true -#define SIGNATURE_HASH 3654416035 +#define SIGNATURE_HASH 2025978132 #define SIMULATOR_TUNE_BIN_FILE_NAME "generated/simulator_tune_image.bin" #define spi_device_e_auto_enum 0="SPI_NONE",1="SPI_DEVICE_1",2="SPI_DEVICE_2",3="SPI_DEVICE_3",4="SPI_DEVICE_4" #define spi_device_e_SPI_DEVICE_1 1 @@ -1126,7 +1126,7 @@ #define TOOTH_PACKET_SIZE 2 #define TOP_DEAD_CENTER_MESSAGE "r" #define TORQUE_CURVE_SIZE 6 -#define TOTAL_CONFIG_SIZE 23436 +#define TOTAL_CONFIG_SIZE 23468 #define TPS_2_BYTE_PACKING_MULT 100 #define TPS_TPS_ACCEL_CLT_CORR_TABLE 4 #define TPS_TPS_ACCEL_TABLE 8 @@ -1359,7 +1359,7 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI master.2023.06.24.kin.3654416035" +#define TS_SIGNATURE "rusEFI master.2023.06.24.kin.2025978132" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h index 34fec10e3a..d7b2e9a73c 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_subaru_config.sh integration/rusefi_config.txt Sat Jun 17 03:00:04 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:13 UTC 2023 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1576,7 +1576,7 @@ struct engine_configuration_s { bool useTpicAdvancedMode : 1 {}; /** offset 724 bit 12 */ - bool unused760b12 : 1 {}; + bool lambdaProtectionEnable : 1 {}; /** offset 724 bit 13 */ bool verboseTLE8888 : 1 {}; @@ -4356,10 +4356,29 @@ struct engine_configuration_s { */ pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; /** - units + RPM * offset 3968 */ - uint8_t mainUnusedEnd[194]; + scaled_channel lambdaProtectionMinRpm; + /** + * offset 3969 + */ + scaled_channel lambdaProtectionMinLoad; + /** + * offset 3970 + */ + scaled_channel lambdaProtectionMinTps; + /** + * Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + s + * offset 3971 + */ + scaled_channel lambdaProtectionTimeout; + /** + units + * offset 3972 + */ + uint8_t mainUnusedEnd[190]; /** * need 4 byte alignment units @@ -5254,13 +5273,27 @@ struct persistent_config_s { */ uint8_t tcu_rangeLow[6]; /** - * need 4 byte alignment - units + lambda * offset 23434 */ - uint8_t alignmentFill_at_23434[2]; + scaled_channel lambdaMaxDeviationTable[4][4]; + /** + * offset 23450 + */ + uint16_t lambdaMaxDeviationLoadBins[4]; + /** + RPM + * offset 23458 + */ + uint16_t lambdaMaxDeviationRpmBins[4]; + /** + * need 4 byte alignment + units + * offset 23466 + */ + uint8_t alignmentFill_at_23466[2]; }; -static_assert(sizeof(persistent_config_s) == 23436); +static_assert(sizeof(persistent_config_s) == 23468); // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on config/boards/subaru_eg33/config/gen_subaru_config.sh integration/rusefi_config.txt Sat Jun 17 03:00:04 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:13 UTC 2023 diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h index 414d87ed62..3ba57183d4 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h @@ -939,7 +939,7 @@ #define PACK_PERCENT_BYTE_MULT 100.0 #define PEDAL_TO_TPS_SIZE 8 #define PERCENT_TRIM_BYTE_PACKING_DIV 0.02 -#define persistent_config_s_size 23436 +#define persistent_config_s_size 23468 #define pid_s_size 20 #define PidAutoTune_AutoTunerState_AUTOTUNER_OFF 0 #define PidAutoTune_AutoTunerState_CONVERGED 16 @@ -1031,7 +1031,7 @@ #define show_Frankenso_presets false #define show_Proteus_presets false #define show_test_presets false -#define SIGNATURE_HASH 3062600568 +#define SIGNATURE_HASH 396074191 #define SIMULATOR_TUNE_BIN_FILE_NAME "generated/simulator_tune_image.bin" #define spi_device_e_auto_enum 0="SPI_NONE",1="SPI_DEVICE_1",2="SPI_DEVICE_2",3="SPI_DEVICE_3",4="SPI_DEVICE_4" #define spi_device_e_SPI_DEVICE_1 1 @@ -1078,7 +1078,7 @@ #define TOOTH_PACKET_SIZE 2 #define TOP_DEAD_CENTER_MESSAGE "r" #define TORQUE_CURVE_SIZE 6 -#define TOTAL_CONFIG_SIZE 23436 +#define TOTAL_CONFIG_SIZE 23468 #define TPS_2_BYTE_PACKING_MULT 100 #define TPS_TPS_ACCEL_CLT_CORR_TABLE 4 #define TPS_TPS_ACCEL_TABLE 8 @@ -1311,7 +1311,7 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI master.2023.06.24.subaru_eg33_f7.3062600568" +#define TS_SIGNATURE "rusEFI master.2023.06.24.subaru_eg33_f7.396074191" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' diff --git a/firmware/controllers/generated/engine_configuration_generated_structures.h b/firmware/controllers/generated/engine_configuration_generated_structures.h index 5aa9c7df74..08ce763605 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 gen_config.sh integration/rusefi_config.txt Sat Jun 17 03:00:53 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:08:00 UTC 2023 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -1576,7 +1576,7 @@ struct engine_configuration_s { bool useTpicAdvancedMode : 1 {}; /** offset 724 bit 12 */ - bool unused760b12 : 1 {}; + bool lambdaProtectionEnable : 1 {}; /** offset 724 bit 13 */ bool verboseTLE8888 : 1 {}; @@ -4356,10 +4356,29 @@ struct engine_configuration_s { */ pin_input_mode_e tcu_rangeInputMode[RANGE_INPUT_COUNT]; /** - units + RPM * offset 3968 */ - uint8_t mainUnusedEnd[194]; + scaled_channel lambdaProtectionMinRpm; + /** + * offset 3969 + */ + scaled_channel lambdaProtectionMinLoad; + /** + * offset 3970 + */ + scaled_channel lambdaProtectionMinTps; + /** + * Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + s + * offset 3971 + */ + scaled_channel lambdaProtectionTimeout; + /** + units + * offset 3972 + */ + uint8_t mainUnusedEnd[190]; /** * need 4 byte alignment units @@ -5254,13 +5273,27 @@ struct persistent_config_s { */ uint8_t tcu_rangeLow[6]; /** - * need 4 byte alignment - units + lambda * offset 23434 */ - uint8_t alignmentFill_at_23434[2]; + scaled_channel lambdaMaxDeviationTable[4][4]; + /** + * offset 23450 + */ + uint16_t lambdaMaxDeviationLoadBins[4]; + /** + RPM + * offset 23458 + */ + uint16_t lambdaMaxDeviationRpmBins[4]; + /** + * need 4 byte alignment + units + * offset 23466 + */ + uint8_t alignmentFill_at_23466[2]; }; -static_assert(sizeof(persistent_config_s) == 23436); +static_assert(sizeof(persistent_config_s) == 23468); // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on gen_config.sh integration/rusefi_config.txt Sat Jun 17 03:00:53 UTC 2023 +// this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:08:00 UTC 2023 diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 39fe641410..aa2227ab4a 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -990,7 +990,7 @@ #define PACK_PERCENT_BYTE_MULT 100.0 #define PEDAL_TO_TPS_SIZE 8 #define PERCENT_TRIM_BYTE_PACKING_DIV 0.02 -#define persistent_config_s_size 23436 +#define persistent_config_s_size 23468 #define pid_s_size 20 #define PidAutoTune_AutoTunerState_AUTOTUNER_OFF 0 #define PidAutoTune_AutoTunerState_CONVERGED 16 @@ -1080,7 +1080,7 @@ #define SentEtbType_NONE 0 #define show_Frankenso_presets true #define show_test_presets true -#define SIGNATURE_HASH 3978602650 +#define SIGNATURE_HASH 1278519085 #define SIMULATOR_TUNE_BIN_FILE_NAME "generated/simulator_tune_image.bin" #define spi_device_e_auto_enum 0="SPI_NONE",1="SPI_DEVICE_1",2="SPI_DEVICE_2",3="SPI_DEVICE_3",4="SPI_DEVICE_4" #define spi_device_e_SPI_DEVICE_1 1 @@ -1126,7 +1126,7 @@ #define TOOTH_PACKET_SIZE 2 #define TOP_DEAD_CENTER_MESSAGE "r" #define TORQUE_CURVE_SIZE 6 -#define TOTAL_CONFIG_SIZE 23436 +#define TOTAL_CONFIG_SIZE 23468 #define TPS_2_BYTE_PACKING_MULT 100 #define TPS_TPS_ACCEL_CLT_CORR_TABLE 4 #define TPS_TPS_ACCEL_TABLE 8 @@ -1359,7 +1359,7 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI master.2023.06.24.f407-discovery.3978602650" +#define TS_SIGNATURE "rusEFI master.2023.06.24.f407-discovery.1278519085" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' diff --git a/firmware/controllers/generated/signature_48way.h b/firmware/controllers/generated/signature_48way.h index e47f3d20a8..a64fe748e5 100644 --- a/firmware/controllers/generated/signature_48way.h +++ b/firmware/controllers/generated/signature_48way.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 4124892373 -#define TS_SIGNATURE "rusEFI master.2023.06.24.48way.4124892373" +#define SIGNATURE_HASH 1422709602 +#define TS_SIGNATURE "rusEFI master.2023.06.24.48way.1422709602" diff --git a/firmware/controllers/generated/signature_alphax-2chan.h b/firmware/controllers/generated/signature_alphax-2chan.h index afba1d0573..991bfaaf21 100644 --- a/firmware/controllers/generated/signature_alphax-2chan.h +++ b/firmware/controllers/generated/signature_alphax-2chan.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3382130794 -#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-2chan.3382130794" +#define SIGNATURE_HASH 1753692125 +#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-2chan.1753692125" diff --git a/firmware/controllers/generated/signature_alphax-4chan.h b/firmware/controllers/generated/signature_alphax-4chan.h index 3c85c2d2a8..b4118f74ec 100644 --- a/firmware/controllers/generated/signature_alphax-4chan.h +++ b/firmware/controllers/generated/signature_alphax-4chan.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2456261766 -#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-4chan.2456261766" +#define SIGNATURE_HASH 863476529 +#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-4chan.863476529" diff --git a/firmware/controllers/generated/signature_alphax-4chan_f7.h b/firmware/controllers/generated/signature_alphax-4chan_f7.h index cdb868e8c7..30ae09ddd0 100644 --- a/firmware/controllers/generated/signature_alphax-4chan_f7.h +++ b/firmware/controllers/generated/signature_alphax-4chan_f7.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2456261766 -#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-4chan_f7.2456261766" +#define SIGNATURE_HASH 863476529 +#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-4chan_f7.863476529" diff --git a/firmware/controllers/generated/signature_alphax-8chan.h b/firmware/controllers/generated/signature_alphax-8chan.h index 888da7ebdc..c4571c95ce 100644 --- a/firmware/controllers/generated/signature_alphax-8chan.h +++ b/firmware/controllers/generated/signature_alphax-8chan.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1459699461 -#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-8chan.1459699461" +#define SIGNATURE_HASH 4128321714 +#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-8chan.4128321714" diff --git a/firmware/controllers/generated/signature_alphax-8chan_f7.h b/firmware/controllers/generated/signature_alphax-8chan_f7.h index b5c0ed2bcc..c5d8ae2dda 100644 --- a/firmware/controllers/generated/signature_alphax-8chan_f7.h +++ b/firmware/controllers/generated/signature_alphax-8chan_f7.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1459699461 -#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-8chan_f7.1459699461" +#define SIGNATURE_HASH 4128321714 +#define TS_SIGNATURE "rusEFI master.2023.06.24.alphax-8chan_f7.4128321714" diff --git a/firmware/controllers/generated/signature_atlas.h b/firmware/controllers/generated/signature_atlas.h index 77bf0d08f0..d36825180d 100644 --- a/firmware/controllers/generated/signature_atlas.h +++ b/firmware/controllers/generated/signature_atlas.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2915869000 -#define TS_SIGNATURE "rusEFI master.2023.06.24.atlas.2915869000" +#define SIGNATURE_HASH 215789311 +#define TS_SIGNATURE "rusEFI master.2023.06.24.atlas.215789311" diff --git a/firmware/controllers/generated/signature_core8.h b/firmware/controllers/generated/signature_core8.h index dcaa37022b..f6966d7c38 100644 --- a/firmware/controllers/generated/signature_core8.h +++ b/firmware/controllers/generated/signature_core8.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2300664281 -#define TS_SIGNATURE "rusEFI master.2023.06.24.core8.2300664281" +#define SIGNATURE_HASH 674322030 +#define TS_SIGNATURE "rusEFI master.2023.06.24.core8.674322030" diff --git a/firmware/controllers/generated/signature_cypress.h b/firmware/controllers/generated/signature_cypress.h index 7d503894de..a435aabfcf 100644 --- a/firmware/controllers/generated/signature_cypress.h +++ b/firmware/controllers/generated/signature_cypress.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on hellen_cypress_gen_config.bat by SignatureConsumer // -#define SIGNATURE_HASH 2969982063 -#define TS_SIGNATURE "rusEFI master.2023.06.24.cypress.2969982063" +#define SIGNATURE_HASH 269900760 +#define TS_SIGNATURE "rusEFI master.2023.06.24.cypress.269900760" diff --git a/firmware/controllers/generated/signature_f407-discovery.h b/firmware/controllers/generated/signature_f407-discovery.h index c6bcd05c72..1b302243d4 100644 --- a/firmware/controllers/generated/signature_f407-discovery.h +++ b/firmware/controllers/generated/signature_f407-discovery.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3978602650 -#define TS_SIGNATURE "rusEFI master.2023.06.24.f407-discovery.3978602650" +#define SIGNATURE_HASH 1278519085 +#define TS_SIGNATURE "rusEFI master.2023.06.24.f407-discovery.1278519085" diff --git a/firmware/controllers/generated/signature_f429-discovery.h b/firmware/controllers/generated/signature_f429-discovery.h index 599c8f8e36..60b71c0fb6 100644 --- a/firmware/controllers/generated/signature_f429-discovery.h +++ b/firmware/controllers/generated/signature_f429-discovery.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2969982063 -#define TS_SIGNATURE "rusEFI master.2023.06.24.f429-discovery.2969982063" +#define SIGNATURE_HASH 269900760 +#define TS_SIGNATURE "rusEFI master.2023.06.24.f429-discovery.269900760" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index 54759a00cd..c8c5933a18 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2471802021 -#define TS_SIGNATURE "rusEFI master.2023.06.24.frankenso_na6.2471802021" +#define SIGNATURE_HASH 843365138 +#define TS_SIGNATURE "rusEFI master.2023.06.24.frankenso_na6.843365138" diff --git a/firmware/controllers/generated/signature_harley81.h b/firmware/controllers/generated/signature_harley81.h index c7e8e38d77..54b351791e 100644 --- a/firmware/controllers/generated/signature_harley81.h +++ b/firmware/controllers/generated/signature_harley81.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1711151398 -#define TS_SIGNATURE "rusEFI master.2023.06.24.harley81.1711151398" +#define SIGNATURE_HASH 3303937681 +#define TS_SIGNATURE "rusEFI master.2023.06.24.harley81.3303937681" diff --git a/firmware/controllers/generated/signature_hellen-gm-e67.h b/firmware/controllers/generated/signature_hellen-gm-e67.h index 44ea1c2bd8..64c5fd1d5b 100644 --- a/firmware/controllers/generated/signature_hellen-gm-e67.h +++ b/firmware/controllers/generated/signature_hellen-gm-e67.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 32826015 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen-gm-e67.32826015" +#define SIGNATURE_HASH 2699357480 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen-gm-e67.2699357480" diff --git a/firmware/controllers/generated/signature_hellen-honda-k.h b/firmware/controllers/generated/signature_hellen-honda-k.h index 201d8caa85..e514e340ff 100644 --- a/firmware/controllers/generated/signature_hellen-honda-k.h +++ b/firmware/controllers/generated/signature_hellen-honda-k.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3592853179 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen-honda-k.3592853179" +#define SIGNATURE_HASH 2000066828 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen-honda-k.2000066828" diff --git a/firmware/controllers/generated/signature_hellen-nb1.h b/firmware/controllers/generated/signature_hellen-nb1.h index a71d00f827..c9303b9df9 100644 --- a/firmware/controllers/generated/signature_hellen-nb1.h +++ b/firmware/controllers/generated/signature_hellen-nb1.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2357217801 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen-nb1.2357217801" +#define SIGNATURE_HASH 764429758 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen-nb1.764429758" diff --git a/firmware/controllers/generated/signature_hellen121nissan.h b/firmware/controllers/generated/signature_hellen121nissan.h index 52f83b06c2..601e4b260c 100644 --- a/firmware/controllers/generated/signature_hellen121nissan.h +++ b/firmware/controllers/generated/signature_hellen121nissan.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3681301293 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen121nissan.3681301293" +#define SIGNATURE_HASH 2054962330 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen121nissan.2054962330" diff --git a/firmware/controllers/generated/signature_hellen121vag.h b/firmware/controllers/generated/signature_hellen121vag.h index 3bb42813c8..bc3d453c96 100644 --- a/firmware/controllers/generated/signature_hellen121vag.h +++ b/firmware/controllers/generated/signature_hellen121vag.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 628640684 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen121vag.628640684" +#define SIGNATURE_HASH 2221425691 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen121vag.2221425691" diff --git a/firmware/controllers/generated/signature_hellen128.h b/firmware/controllers/generated/signature_hellen128.h index ddc560b3dc..581bfcff04 100644 --- a/firmware/controllers/generated/signature_hellen128.h +++ b/firmware/controllers/generated/signature_hellen128.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2423559161 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen128.2423559161" +#define SIGNATURE_HASH 828677198 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen128.828677198" diff --git a/firmware/controllers/generated/signature_hellen154hyundai.h b/firmware/controllers/generated/signature_hellen154hyundai.h index f071db9c9a..a1c06dba90 100644 --- a/firmware/controllers/generated/signature_hellen154hyundai.h +++ b/firmware/controllers/generated/signature_hellen154hyundai.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3385106048 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen154hyundai.3385106048" +#define SIGNATURE_HASH 1758761271 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen154hyundai.1758761271" diff --git a/firmware/controllers/generated/signature_hellen72.h b/firmware/controllers/generated/signature_hellen72.h index b3055827e5..46fb34fa78 100644 --- a/firmware/controllers/generated/signature_hellen72.h +++ b/firmware/controllers/generated/signature_hellen72.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3712111170 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen72.3712111170" +#define SIGNATURE_HASH 2085772789 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen72.2085772789" diff --git a/firmware/controllers/generated/signature_hellen81.h b/firmware/controllers/generated/signature_hellen81.h index 40f8bee5ba..63406459fa 100644 --- a/firmware/controllers/generated/signature_hellen81.h +++ b/firmware/controllers/generated/signature_hellen81.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1180094594 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen81.1180094594" +#define SIGNATURE_HASH 3880181557 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen81.3880181557" diff --git a/firmware/controllers/generated/signature_hellen88bmw.h b/firmware/controllers/generated/signature_hellen88bmw.h index d65b321a8f..eb7d654d1f 100644 --- a/firmware/controllers/generated/signature_hellen88bmw.h +++ b/firmware/controllers/generated/signature_hellen88bmw.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1738674782 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen88bmw.1738674782" +#define SIGNATURE_HASH 3333561833 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellen88bmw.3333561833" diff --git a/firmware/controllers/generated/signature_hellenNA6.h b/firmware/controllers/generated/signature_hellenNA6.h index 2145a0d04f..84ef241f42 100644 --- a/firmware/controllers/generated/signature_hellenNA6.h +++ b/firmware/controllers/generated/signature_hellenNA6.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1510721611 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellenNA6.1510721611" +#define SIGNATURE_HASH 4212901884 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellenNA6.4212901884" diff --git a/firmware/controllers/generated/signature_hellenNA8_96.h b/firmware/controllers/generated/signature_hellenNA8_96.h index df638a9110..d680395a39 100644 --- a/firmware/controllers/generated/signature_hellenNA8_96.h +++ b/firmware/controllers/generated/signature_hellenNA8_96.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3973077830 -#define TS_SIGNATURE "rusEFI master.2023.06.24.hellenNA8_96.3973077830" +#define SIGNATURE_HASH 1304450289 +#define TS_SIGNATURE "rusEFI master.2023.06.24.hellenNA8_96.1304450289" diff --git a/firmware/controllers/generated/signature_kin.h b/firmware/controllers/generated/signature_kin.h index 4523167875..378418dc0c 100644 --- a/firmware/controllers/generated/signature_kin.h +++ b/firmware/controllers/generated/signature_kin.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on kinetis_gen_config.bat by SignatureConsumer // -#define SIGNATURE_HASH 3654416035 -#define TS_SIGNATURE "rusEFI master.2023.06.24.kin.3654416035" +#define SIGNATURE_HASH 2025978132 +#define TS_SIGNATURE "rusEFI master.2023.06.24.kin.2025978132" diff --git a/firmware/controllers/generated/signature_m74_9.h b/firmware/controllers/generated/signature_m74_9.h index 7d0d3d9df0..9a3fe1936b 100644 --- a/firmware/controllers/generated/signature_m74_9.h +++ b/firmware/controllers/generated/signature_m74_9.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2872920161 -#define TS_SIGNATURE "rusEFI master.2023.06.24.m74_9.2872920161" +#define SIGNATURE_HASH 170739670 +#define TS_SIGNATURE "rusEFI master.2023.06.24.m74_9.170739670" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 1a2baedff3..93a586e620 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2415015656 -#define TS_SIGNATURE "rusEFI master.2023.06.24.mre_f4.2415015656" +#define SIGNATURE_HASH 786577759 +#define TS_SIGNATURE "rusEFI master.2023.06.24.mre_f4.786577759" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 151c156af9..2fb34de656 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2415015656 -#define TS_SIGNATURE "rusEFI master.2023.06.24.mre_f7.2415015656" +#define SIGNATURE_HASH 786577759 +#define TS_SIGNATURE "rusEFI master.2023.06.24.mre_f7.786577759" diff --git a/firmware/controllers/generated/signature_nucleo_f429.h b/firmware/controllers/generated/signature_nucleo_f429.h index a73dd48326..ce568b0736 100644 --- a/firmware/controllers/generated/signature_nucleo_f429.h +++ b/firmware/controllers/generated/signature_nucleo_f429.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2969982063 -#define TS_SIGNATURE "rusEFI master.2023.06.24.nucleo_f429.2969982063" +#define SIGNATURE_HASH 269900760 +#define TS_SIGNATURE "rusEFI master.2023.06.24.nucleo_f429.269900760" diff --git a/firmware/controllers/generated/signature_nucleo_f767.h b/firmware/controllers/generated/signature_nucleo_f767.h index 8997f8887d..0fac196a25 100644 --- a/firmware/controllers/generated/signature_nucleo_f767.h +++ b/firmware/controllers/generated/signature_nucleo_f767.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2969982063 -#define TS_SIGNATURE "rusEFI master.2023.06.24.nucleo_f767.2969982063" +#define SIGNATURE_HASH 269900760 +#define TS_SIGNATURE "rusEFI master.2023.06.24.nucleo_f767.269900760" diff --git a/firmware/controllers/generated/signature_nucleo_h743.h b/firmware/controllers/generated/signature_nucleo_h743.h index 59e47b0943..73c6d9b800 100644 --- a/firmware/controllers/generated/signature_nucleo_h743.h +++ b/firmware/controllers/generated/signature_nucleo_h743.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2969982063 -#define TS_SIGNATURE "rusEFI master.2023.06.24.nucleo_h743.2969982063" +#define SIGNATURE_HASH 269900760 +#define TS_SIGNATURE "rusEFI master.2023.06.24.nucleo_h743.269900760" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index e46bb7d416..b11eabaafd 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2173868543 -#define TS_SIGNATURE "rusEFI master.2023.06.24.prometheus_405.2173868543" +#define SIGNATURE_HASH 545429064 +#define TS_SIGNATURE "rusEFI master.2023.06.24.prometheus_405.545429064" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index b62af08519..774a3e5594 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2173868543 -#define TS_SIGNATURE "rusEFI master.2023.06.24.prometheus_469.2173868543" +#define SIGNATURE_HASH 545429064 +#define TS_SIGNATURE "rusEFI master.2023.06.24.prometheus_469.545429064" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index d28828cf19..fc25b11807 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 4177996769 -#define TS_SIGNATURE "rusEFI master.2023.06.24.proteus_f4.4177996769" +#define SIGNATURE_HASH 1477911638 +#define TS_SIGNATURE "rusEFI master.2023.06.24.proteus_f4.1477911638" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index ccdf0583e6..311ceb2eca 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 4177996769 -#define TS_SIGNATURE "rusEFI master.2023.06.24.proteus_f7.4177996769" +#define SIGNATURE_HASH 1477911638 +#define TS_SIGNATURE "rusEFI master.2023.06.24.proteus_f7.1477911638" diff --git a/firmware/controllers/generated/signature_proteus_h7.h b/firmware/controllers/generated/signature_proteus_h7.h index 3c19d382c0..e2461e1757 100644 --- a/firmware/controllers/generated/signature_proteus_h7.h +++ b/firmware/controllers/generated/signature_proteus_h7.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 4177996769 -#define TS_SIGNATURE "rusEFI master.2023.06.24.proteus_h7.4177996769" +#define SIGNATURE_HASH 1477911638 +#define TS_SIGNATURE "rusEFI master.2023.06.24.proteus_h7.1477911638" diff --git a/firmware/controllers/generated/signature_s105.h b/firmware/controllers/generated/signature_s105.h index 43a338507a..adaf5f2b5b 100644 --- a/firmware/controllers/generated/signature_s105.h +++ b/firmware/controllers/generated/signature_s105.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3579687219 -#define TS_SIGNATURE "rusEFI master.2023.06.24.s105.3579687219" +#define SIGNATURE_HASH 1951252100 +#define TS_SIGNATURE "rusEFI master.2023.06.24.s105.1951252100" diff --git a/firmware/controllers/generated/signature_small-can.h b/firmware/controllers/generated/signature_small-can.h index 1b30fb8ed1..0af5418f81 100644 --- a/firmware/controllers/generated/signature_small-can.h +++ b/firmware/controllers/generated/signature_small-can.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1536637003 -#define TS_SIGNATURE "rusEFI master.2023.06.24.small-can.1536637003" +#define SIGNATURE_HASH 4203165692 +#define TS_SIGNATURE "rusEFI master.2023.06.24.small-can.4203165692" diff --git a/firmware/controllers/generated/signature_subaru_eg33_f7.h b/firmware/controllers/generated/signature_subaru_eg33_f7.h index aa4c17ac55..5d9ba981af 100644 --- a/firmware/controllers/generated/signature_subaru_eg33_f7.h +++ b/firmware/controllers/generated/signature_subaru_eg33_f7.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on config/boards/subaru_eg33/config/gen_subaru_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 3062600568 -#define TS_SIGNATURE "rusEFI master.2023.06.24.subaru_eg33_f7.3062600568" +#define SIGNATURE_HASH 396074191 +#define TS_SIGNATURE "rusEFI master.2023.06.24.subaru_eg33_f7.396074191" diff --git a/firmware/controllers/generated/signature_t-b-g.h b/firmware/controllers/generated/signature_t-b-g.h index 920cfb0d44..dffd3c4210 100644 --- a/firmware/controllers/generated/signature_t-b-g.h +++ b/firmware/controllers/generated/signature_t-b-g.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 2969982063 -#define TS_SIGNATURE "rusEFI master.2023.06.24.t-b-g.2969982063" +#define SIGNATURE_HASH 269900760 +#define TS_SIGNATURE "rusEFI master.2023.06.24.t-b-g.269900760" diff --git a/firmware/controllers/generated/signature_tdg-pdm8.h b/firmware/controllers/generated/signature_tdg-pdm8.h index ef589a5b4f..8b3c325258 100644 --- a/firmware/controllers/generated/signature_tdg-pdm8.h +++ b/firmware/controllers/generated/signature_tdg-pdm8.h @@ -2,5 +2,5 @@ // was generated automatically by rusEFI tool config_definition.jar based on gen_config.sh by SignatureConsumer // -#define SIGNATURE_HASH 1000896589 -#define TS_SIGNATURE "rusEFI master.2023.06.24.tdg-pdm8.1000896589" +#define SIGNATURE_HASH 2595780602 +#define TS_SIGNATURE "rusEFI master.2023.06.24.tdg-pdm8.2595780602" diff --git a/firmware/controllers/lua/generated/value_lookup_generated.cpp b/firmware/controllers/lua/generated/value_lookup_generated.cpp index 327b6a9408..38c1e9273c 100644 --- a/firmware/controllers/lua/generated/value_lookup_generated.cpp +++ b/firmware/controllers/lua/generated/value_lookup_generated.cpp @@ -409,6 +409,9 @@ float getConfigValueByName(const char *name) { // useTpicAdvancedMode case -1037977635: return engineConfiguration->useTpicAdvancedMode; +// lambdaProtectionEnable + case 1451020756: + return engineConfiguration->lambdaProtectionEnable; // verboseTLE8888 case -1251676000: return engineConfiguration->verboseTLE8888; @@ -1594,6 +1597,18 @@ float getConfigValueByName(const char *name) { // iacByTpsDecayTime case 1742748825: return engineConfiguration->iacByTpsDecayTime; +// lambdaProtectionMinRpm + case 1758659040: + return engineConfiguration->lambdaProtectionMinRpm; +// lambdaProtectionMinLoad + case -2094010831: + return engineConfiguration->lambdaProtectionMinLoad; +// lambdaProtectionMinTps + case 1758661224: + return engineConfiguration->lambdaProtectionMinTps; +// lambdaProtectionTimeout + case -1645106444: + return engineConfiguration->lambdaProtectionTimeout; } return EFI_ERROR_CODE; } @@ -2274,6 +2289,11 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->useTpicAdvancedMode = (int)value; return; + } + case 1451020756: + { + engineConfiguration->lambdaProtectionEnable = (int)value; + return; } case -1251676000: { @@ -4249,6 +4269,26 @@ void setConfigValueByName(const char *name, float value) { { engineConfiguration->iacByTpsDecayTime = (int)value; return; + } + case 1758659040: + { + engineConfiguration->lambdaProtectionMinRpm = (int)value; + return; + } + case -2094010831: + { + engineConfiguration->lambdaProtectionMinLoad = (int)value; + return; + } + case 1758661224: + { + engineConfiguration->lambdaProtectionMinTps = (int)value; + return; + } + case -1645106444: + { + engineConfiguration->lambdaProtectionTimeout = (int)value; + return; } } } diff --git a/firmware/controllers/lua/generated/value_lookup_generated.md b/firmware/controllers/lua/generated/value_lookup_generated.md index 8ff2c301bc..a2a076eaf9 100644 --- a/firmware/controllers/lua/generated/value_lookup_generated.md +++ b/firmware/controllers/lua/generated/value_lookup_generated.md @@ -403,6 +403,9 @@ This setting should only be used if you have a stepper motor idle valve and a st ### useTpicAdvancedMode +### lambdaProtectionEnable + + ### verboseTLE8888 @@ -1588,3 +1591,15 @@ How long initial IAC adder is held before starting to decay. ### iacByTpsDecayTime How long it takes to remove initial IAC adder to return to normal idle. +### lambdaProtectionMinRpm + + +### lambdaProtectionMinLoad + + +### lambdaProtectionMinTps + + +### lambdaProtectionTimeout +Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed + diff --git a/firmware/tunerstudio/generated/rusefi.ini b/firmware/tunerstudio/generated/rusefi.ini index ef1df32de2..c4966ddc80 100644 --- a/firmware/tunerstudio/generated/rusefi.ini +++ b/firmware/tunerstudio/generated/rusefi.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.f407-discovery.3978602650" + signature = "rusEFI master.2023.06.24.f407-discovery.1278519085" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.f407-discovery.3978602650" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.f407-discovery.1278519085" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:38 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:08:00 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5445,6 +5459,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7434,6 +7453,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_48way.ini b/firmware/tunerstudio/generated/rusefi_48way.ini index ea64ca5633..3a45976af4 100644 --- a/firmware/tunerstudio/generated/rusefi_48way.ini +++ b/firmware/tunerstudio/generated/rusefi_48way.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.48way.4124892373" + signature = "rusEFI master.2023.06.24.48way.1422709602" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.48way.4124892373" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.48way.1422709602" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:03 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:14 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5445,6 +5459,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7434,6 +7453,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_alphax-2chan.ini b/firmware/tunerstudio/generated/rusefi_alphax-2chan.ini index 74b6ef030b..8f6cec0a56 100644 --- a/firmware/tunerstudio/generated/rusefi_alphax-2chan.ini +++ b/firmware/tunerstudio/generated/rusefi_alphax-2chan.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.alphax-2chan.3382130794" + signature = "rusEFI master.2023.06.24.alphax-2chan.1753692125" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.alphax-2chan.3382130794" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.alphax-2chan.1753692125" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:17 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:16 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5441,6 +5455,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7406,6 +7425,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_alphax-4chan.ini b/firmware/tunerstudio/generated/rusefi_alphax-4chan.ini index a3db103ff9..cd32e96c15 100644 --- a/firmware/tunerstudio/generated/rusefi_alphax-4chan.ini +++ b/firmware/tunerstudio/generated/rusefi_alphax-4chan.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.alphax-4chan.2456261766" + signature = "rusEFI master.2023.06.24.alphax-4chan.863476529" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.alphax-4chan.2456261766" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.alphax-4chan.863476529" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:19 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:19 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7408,6 +7427,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_alphax-4chan_f7.ini b/firmware/tunerstudio/generated/rusefi_alphax-4chan_f7.ini index d486c05ffc..f5f11ef79e 100644 --- a/firmware/tunerstudio/generated/rusefi_alphax-4chan_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_alphax-4chan_f7.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.alphax-4chan_f7.2456261766" + signature = "rusEFI master.2023.06.24.alphax-4chan_f7.863476529" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.alphax-4chan_f7.2456261766" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.alphax-4chan_f7.863476529" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:21 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:21 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7408,6 +7427,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_alphax-8chan.ini b/firmware/tunerstudio/generated/rusefi_alphax-8chan.ini index f0934053c7..31fd9ce6c1 100644 --- a/firmware/tunerstudio/generated/rusefi_alphax-8chan.ini +++ b/firmware/tunerstudio/generated/rusefi_alphax-8chan.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.alphax-8chan.1459699461" + signature = "rusEFI master.2023.06.24.alphax-8chan.4128321714" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.alphax-8chan.1459699461" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.alphax-8chan.4128321714" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:23 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:24 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7408,6 +7427,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_alphax-8chan_f7.ini b/firmware/tunerstudio/generated/rusefi_alphax-8chan_f7.ini index 1c438bcd4f..248235c3a3 100644 --- a/firmware/tunerstudio/generated/rusefi_alphax-8chan_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_alphax-8chan_f7.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.alphax-8chan_f7.1459699461" + signature = "rusEFI master.2023.06.24.alphax-8chan_f7.4128321714" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.alphax-8chan_f7.1459699461" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.alphax-8chan_f7.4128321714" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:26 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:27 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7408,6 +7427,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_atlas.ini b/firmware/tunerstudio/generated/rusefi_atlas.ini index dfbec3d720..424d87cc63 100644 --- a/firmware/tunerstudio/generated/rusefi_atlas.ini +++ b/firmware/tunerstudio/generated/rusefi_atlas.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.atlas.2915869000" + signature = "rusEFI master.2023.06.24.atlas.215789311" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.atlas.2915869000" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.atlas.215789311" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:31 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:50 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7424,6 +7443,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_core8.ini b/firmware/tunerstudio/generated/rusefi_core8.ini index 23ae019a4a..ed2fbb8eac 100644 --- a/firmware/tunerstudio/generated/rusefi_core8.ini +++ b/firmware/tunerstudio/generated/rusefi_core8.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.core8.2300664281" + signature = "rusEFI master.2023.06.24.core8.674322030" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.core8.2300664281" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.core8.674322030" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:01 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:12 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5445,6 +5459,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7434,6 +7453,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_cypress.ini b/firmware/tunerstudio/generated/rusefi_cypress.ini index 87f98e09f6..1da537544a 100644 --- a/firmware/tunerstudio/generated/rusefi_cypress.ini +++ b/firmware/tunerstudio/generated/rusefi_cypress.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.cypress.2969982063" + signature = "rusEFI master.2023.06.24.cypress.269900760" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.cypress.2969982063" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.cypress.269900760" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:14 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:12 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_f407-discovery.ini b/firmware/tunerstudio/generated/rusefi_f407-discovery.ini index 5522fa3824..14d86ad72d 100644 --- a/firmware/tunerstudio/generated/rusefi_f407-discovery.ini +++ b/firmware/tunerstudio/generated/rusefi_f407-discovery.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.f407-discovery.3978602650" + signature = "rusEFI master.2023.06.24.f407-discovery.1278519085" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.f407-discovery.3978602650" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.f407-discovery.1278519085" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:34 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:55 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5445,6 +5459,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7434,6 +7453,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_f429-discovery.ini b/firmware/tunerstudio/generated/rusefi_f429-discovery.ini index 210a78d720..1304f9dcec 100644 --- a/firmware/tunerstudio/generated/rusefi_f429-discovery.ini +++ b/firmware/tunerstudio/generated/rusefi_f429-discovery.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.f429-discovery.2969982063" + signature = "rusEFI master.2023.06.24.f429-discovery.269900760" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.f429-discovery.2969982063" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.f429-discovery.269900760" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:23 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:40 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini index 8e35b31843..1cb73cf5a1 100644 --- a/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini +++ b/firmware/tunerstudio/generated/rusefi_frankenso_na6.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.frankenso_na6.2471802021" + signature = "rusEFI master.2023.06.24.frankenso_na6.843365138" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.frankenso_na6.2471802021" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.frankenso_na6.843365138" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:11 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:25 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_harley81.ini b/firmware/tunerstudio/generated/rusefi_harley81.ini index 7f97eea891..2e39936323 100644 --- a/firmware/tunerstudio/generated/rusefi_harley81.ini +++ b/firmware/tunerstudio/generated/rusefi_harley81.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.harley81.1711151398" + signature = "rusEFI master.2023.06.24.harley81.3303937681" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.harley81.1711151398" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.harley81.3303937681" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:28 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:30 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7420,6 +7439,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen-gm-e67.ini b/firmware/tunerstudio/generated/rusefi_hellen-gm-e67.ini index f6e3347ae2..904d8730a3 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen-gm-e67.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen-gm-e67.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen-gm-e67.32826015" + signature = "rusEFI master.2023.06.24.hellen-gm-e67.2699357480" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen-gm-e67.32826015" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen-gm-e67.2699357480" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:49 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:56 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen-honda-k.ini b/firmware/tunerstudio/generated/rusefi_hellen-honda-k.ini index 97331358d2..0bdb3f7129 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen-honda-k.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen-honda-k.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen-honda-k.3592853179" + signature = "rusEFI master.2023.06.24.hellen-honda-k.2000066828" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen-honda-k.3592853179" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen-honda-k.2000066828" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:36 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:40 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7405,6 +7424,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini b/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini index 895c1a2def..e2e7bc2f1e 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen-nb1.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen-nb1.2357217801" + signature = "rusEFI master.2023.06.24.hellen-nb1.764429758" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen-nb1.2357217801" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen-nb1.764429758" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:46 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:53 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini b/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini index 259b13feb2..e85e117603 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen121nissan.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen121nissan.3681301293" + signature = "rusEFI master.2023.06.24.hellen121nissan.2054962330" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen121nissan.3681301293" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen121nissan.2054962330" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:34 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:38 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7405,6 +7424,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen121vag.ini b/firmware/tunerstudio/generated/rusefi_hellen121vag.ini index c5711e199f..94d898bcb5 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen121vag.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen121vag.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen121vag.628640684" + signature = "rusEFI master.2023.06.24.hellen121vag.2221425691" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen121vag.628640684" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen121vag.2221425691" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:32 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:35 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini b/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini index 3b764f14fa..995824c6e2 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen128mercedes.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen128.2423559161" + signature = "rusEFI master.2023.06.24.hellen128.828677198" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen128.2423559161" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen128.828677198" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:30 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:32 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7420,6 +7439,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini b/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini index 5e41a40f07..037903462e 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen154hyundai.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen154hyundai.3385106048" + signature = "rusEFI master.2023.06.24.hellen154hyundai.1758761271" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen154hyundai.3385106048" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen154hyundai.1758761271" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:38 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:43 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7405,6 +7424,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen72.ini b/firmware/tunerstudio/generated/rusefi_hellen72.ini index 8fd1fef5d4..c29ec25173 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen72.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen72.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen72.3712111170" + signature = "rusEFI master.2023.06.24.hellen72.2085772789" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen72.3712111170" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen72.2085772789" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:42 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:48 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen81.ini b/firmware/tunerstudio/generated/rusefi_hellen81.ini index 75f5cf9efe..67d1b0f2b8 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen81.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen81.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen81.1180094594" + signature = "rusEFI master.2023.06.24.hellen81.3880181557" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen81.1180094594" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen81.3880181557" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:44 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:51 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5442,6 +5456,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7421,6 +7440,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellen88bmw.ini b/firmware/tunerstudio/generated/rusefi_hellen88bmw.ini index a4927ea871..aa1c73e36d 100644 --- a/firmware/tunerstudio/generated/rusefi_hellen88bmw.ini +++ b/firmware/tunerstudio/generated/rusefi_hellen88bmw.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellen88bmw.1738674782" + signature = "rusEFI master.2023.06.24.hellen88bmw.3333561833" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellen88bmw.1738674782" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellen88bmw.3333561833" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:40 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:46 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7420,6 +7439,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellenNA6.ini b/firmware/tunerstudio/generated/rusefi_hellenNA6.ini index d63d20cf55..d17085ead1 100644 --- a/firmware/tunerstudio/generated/rusefi_hellenNA6.ini +++ b/firmware/tunerstudio/generated/rusefi_hellenNA6.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellenNA6.1510721611" + signature = "rusEFI master.2023.06.24.hellenNA6.4212901884" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellenNA6.1510721611" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellenNA6.4212901884" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:51 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:59 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_hellenNA8_96.ini b/firmware/tunerstudio/generated/rusefi_hellenNA8_96.ini index 7149122132..202b013d36 100644 --- a/firmware/tunerstudio/generated/rusefi_hellenNA8_96.ini +++ b/firmware/tunerstudio/generated/rusefi_hellenNA8_96.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.hellenNA8_96.3973077830" + signature = "rusEFI master.2023.06.24.hellenNA8_96.1304450289" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.hellenNA8_96.3973077830" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.hellenNA8_96.1304450289" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:53 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:02 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_kin.ini b/firmware/tunerstudio/generated/rusefi_kin.ini index c278860623..2081d83b7a 100644 --- a/firmware/tunerstudio/generated/rusefi_kin.ini +++ b/firmware/tunerstudio/generated/rusefi_kin.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.kin.3654416035" + signature = "rusEFI master.2023.06.24.kin.2025978132" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.kin.3654416035" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.kin.2025978132" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:13 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:11 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7433,6 +7452,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_m74_9.ini b/firmware/tunerstudio/generated/rusefi_m74_9.ini index cba0d2f448..efc19f1068 100644 --- a/firmware/tunerstudio/generated/rusefi_m74_9.ini +++ b/firmware/tunerstudio/generated/rusefi_m74_9.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.m74_9.2872920161" + signature = "rusEFI master.2023.06.24.m74_9.170739670" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.m74_9.2872920161" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.m74_9.170739670" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:05 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:17 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_mre_f4.ini b/firmware/tunerstudio/generated/rusefi_mre_f4.ini index 9721ac4282..74c45207bd 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f4.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.mre_f4.2415015656" + signature = "rusEFI master.2023.06.24.mre_f4.786577759" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.mre_f4.2415015656" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.mre_f4.786577759" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:59 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:09 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5446,6 +5460,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_mre_f7.ini b/firmware/tunerstudio/generated/rusefi_mre_f7.ini index eb263ff750..0804edd9c3 100644 --- a/firmware/tunerstudio/generated/rusefi_mre_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_mre_f7.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.mre_f7.2415015656" + signature = "rusEFI master.2023.06.24.mre_f7.786577759" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.mre_f7.2415015656" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.mre_f7.786577759" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:57 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:07 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5446,6 +5460,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_nucleo_f429.ini b/firmware/tunerstudio/generated/rusefi_nucleo_f429.ini index 00a3c416d5..7021331a82 100644 --- a/firmware/tunerstudio/generated/rusefi_nucleo_f429.ini +++ b/firmware/tunerstudio/generated/rusefi_nucleo_f429.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.nucleo_f429.2969982063" + signature = "rusEFI master.2023.06.24.nucleo_f429.269900760" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.nucleo_f429.2969982063" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.nucleo_f429.269900760" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:25 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:43 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_nucleo_f767.ini b/firmware/tunerstudio/generated/rusefi_nucleo_f767.ini index 6dbb9a4efa..0d010f85d4 100644 --- a/firmware/tunerstudio/generated/rusefi_nucleo_f767.ini +++ b/firmware/tunerstudio/generated/rusefi_nucleo_f767.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.nucleo_f767.2969982063" + signature = "rusEFI master.2023.06.24.nucleo_f767.269900760" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.nucleo_f767.2969982063" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.nucleo_f767.269900760" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:27 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:45 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_nucleo_h743.ini b/firmware/tunerstudio/generated/rusefi_nucleo_h743.ini index a0b47e04ab..c1d08e26ed 100644 --- a/firmware/tunerstudio/generated/rusefi_nucleo_h743.ini +++ b/firmware/tunerstudio/generated/rusefi_nucleo_h743.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.nucleo_h743.2969982063" + signature = "rusEFI master.2023.06.24.nucleo_h743.269900760" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.nucleo_h743.2969982063" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.nucleo_h743.269900760" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:29 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:48 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini index c981f80b00..9ffdf8b3e0 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_405.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_405.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.prometheus_405.2173868543" + signature = "rusEFI master.2023.06.24.prometheus_405.545429064" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.prometheus_405.2173868543" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.prometheus_405.545429064" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:14 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:30 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5438,6 +5452,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7427,6 +7446,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini index 441cf0d8f8..5ab9eb0634 100644 --- a/firmware/tunerstudio/generated/rusefi_prometheus_469.ini +++ b/firmware/tunerstudio/generated/rusefi_prometheus_469.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.prometheus_469.2173868543" + signature = "rusEFI master.2023.06.24.prometheus_469.545429064" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.prometheus_469.2173868543" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.prometheus_469.545429064" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:13 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:27 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5438,6 +5452,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7427,6 +7446,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini index ce674279d3..7f809e67f5 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f4.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f4.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.proteus_f4.4177996769" + signature = "rusEFI master.2023.06.24.proteus_f4.1477911638" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.proteus_f4.4177996769" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.proteus_f4.1477911638" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:18 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:35 UTC 2023 -pageSize = 27436 +pageSize = 27468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 27410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 27416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 27422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 27428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 27436 +lambdaMaxDeviationTable = array, U08, 27434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 27450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 27458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 27468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 27428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5440,6 +5454,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7427,6 +7446,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini index 04207ca573..5f9aa03cd9 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_f7.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.proteus_f7.4177996769" + signature = "rusEFI master.2023.06.24.proteus_f7.1477911638" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.proteus_f7.4177996769" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.proteus_f7.1477911638" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:16 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:32 UTC 2023 -pageSize = 27436 +pageSize = 27468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 27410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 27416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 27422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 27428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 27436 +lambdaMaxDeviationTable = array, U08, 27434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 27450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 27458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 27468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 27428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5440,6 +5454,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7427,6 +7446,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_proteus_h7.ini b/firmware/tunerstudio/generated/rusefi_proteus_h7.ini index c9d59c8df0..79492337a7 100644 --- a/firmware/tunerstudio/generated/rusefi_proteus_h7.ini +++ b/firmware/tunerstudio/generated/rusefi_proteus_h7.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.proteus_h7.4177996769" + signature = "rusEFI master.2023.06.24.proteus_h7.1477911638" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.proteus_h7.4177996769" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.proteus_h7.1477911638" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:20 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:38 UTC 2023 -pageSize = 27436 +pageSize = 27468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 27410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 27416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 27422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 27428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 27436 +lambdaMaxDeviationTable = array, U08, 27434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 27450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 27458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 27468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 27428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5440,6 +5454,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7427,6 +7446,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_s105.ini b/firmware/tunerstudio/generated/rusefi_s105.ini index 307d89878a..3b311b8793 100644 --- a/firmware/tunerstudio/generated/rusefi_s105.ini +++ b/firmware/tunerstudio/generated/rusefi_s105.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.s105.3579687219" + signature = "rusEFI master.2023.06.24.s105.1951252100" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.s105.3579687219" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.s105.1951252100" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:07 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:20 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5444,6 +5458,11 @@ menuDialog = main subMenu = softwareKnock, "Software knock" subMenu = maxKnockRetardTbl, "Max knock retard" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_small-can.ini b/firmware/tunerstudio/generated/rusefi_small-can.ini index 6821c77d63..fc87194a4a 100644 --- a/firmware/tunerstudio/generated/rusefi_small-can.ini +++ b/firmware/tunerstudio/generated/rusefi_small-can.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.small-can.1536637003" + signature = "rusEFI master.2023.06.24.small-can.4203165692" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.small-can.1536637003" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.small-can.4203165692" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:47:54 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:04 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5442,6 +5456,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7423,6 +7442,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini index 810f4d8376..c847363c9a 100644 --- a/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini +++ b/firmware/tunerstudio/generated/rusefi_subaru_eg33_f7.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.subaru_eg33_f7.3062600568" + signature = "rusEFI master.2023.06.24.subaru_eg33_f7.396074191" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.subaru_eg33_f7.3062600568" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.subaru_eg33_f7.396074191" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:27:15 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:06:13 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = std_separator subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_t-b-g.ini b/firmware/tunerstudio/generated/rusefi_t-b-g.ini index a3a394d0de..eae34a8388 100644 --- a/firmware/tunerstudio/generated/rusefi_t-b-g.ini +++ b/firmware/tunerstudio/generated/rusefi_t-b-g.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.t-b-g.2969982063" + signature = "rusEFI master.2023.06.24.t-b-g.269900760" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.t-b-g.2969982063" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.t-b-g.269900760" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:09 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:22 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/firmware/tunerstudio/generated/rusefi_tdg-pdm8.ini b/firmware/tunerstudio/generated/rusefi_tdg-pdm8.ini index 521ce99e8b..be17e7516f 100644 --- a/firmware/tunerstudio/generated/rusefi_tdg-pdm8.ini +++ b/firmware/tunerstudio/generated/rusefi_tdg-pdm8.ini @@ -34,12 +34,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI master.2023.06.24.tdg-pdm8.1000896589" + signature = "rusEFI master.2023.06.24.tdg-pdm8.2595780602" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI master.2023.06.24.tdg-pdm8.1000896589" ; signature is expected to be 7 or more characters. + signature= "rusEFI master.2023.06.24.tdg-pdm8.2595780602" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false @@ -87,9 +87,9 @@ enable2ndByteCanID = false ; name = scalar, type, offset, units, scale, translate, lo, hi, digits ; CONFIG_DEFINITION_START -; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:32 UTC 2023 +; this section was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:07:53 UTC 2023 -pageSize = 23436 +pageSize = 23468 page = 1 engineType = bits, S32, 0, [0:6], 0="DEFAULT_FRANKENSO",97="ALPHAX_8CHAN_SBC",24="BMW_M73_M",50="BMW_M73_MRE",51="BMW_M73_MRE_SLAVE",35="CAMARO_4",65="CITROEN_TU3JP",38="DISCOVERY_PDM",2="DODGE_NEON_1995",46="DODGE_NEON_2003_CRANK",64="DODGE_RAM",61="EEPROM_BENCH_ENGINE",58="ETB_BENCH_ENGINE",3="FORD_ASPIRE_1996",11="FORD_COYOTE",14="FORD_ESCORT_GT",7="FORD_INLINE_6_1995",40="FRANKENSO_BMW_M73_F",47="FRANKENSO_MAZDA_MIATA_2003",56="FRANKENSO_MAZDA_MIATA_NA8",41="FRANKENSO_MIATA_NA6_MAP",49="FRANKENSO_QA_ENGINE",8="GY6_139QMB",84="HELLEN_121_NISSAN_4_CYL",72="HELLEN_121_NISSAN_6_CYL",85="HELLEN_121_NISSAN_8_CYL",87="HELLEN_121_NISSAN_ALMERA_N16",71="HELLEN_121_VAG_4_CYL",77="HELLEN_121_VAG_5_CYL",81="HELLEN_121_VAG_8_CYL",78="HELLEN_121_VAG_V6_CYL",79="HELLEN_121_VAG_VR6_CYL",36="HELLEN_128_MERCEDES_4_CYL",88="HELLEN_128_MERCEDES_6_CYL",89="HELLEN_128_MERCEDES_8_CYL",82="HELLEN_154_HYUNDAI_COUPE_BK1",95="HELLEN_154_HYUNDAI_COUPE_BK2",76="HELLEN_154_VAG",34="HELLEN_NA6",10="HELLEN_NA8_96",80="HELLEN_NA94",83="HELLEN_NB1",94="HELLEN_NB1_36",69="HELLEN_NB2",86="HELLEN_NB2_36",43="HONDA_600",60="L9779_BENCH_ENGINE",55="MAZDA_MIATA_2003_BOARD_TEST",54="MAZDA_MIATA_2003_NA_RAIL",21="MIATA_1996",1="MIATA_PROTEUS_TCU",99="MINIMAL_PINS",12="MITSUBISHI_3A92",16="MITSUBISHI_4G93",31="MRE_BOARD_NEW_TEST",23="MRE_BODY_CONTROL",68="MRE_M111",20="MRE_MIATA_94_MAP",66="MRE_MIATA_NA6_MAP",4="MRE_SECONDARY_CAN",37="MRE_SUBARU_EJ18",62="MRE_VW_B6",5="NISSAN_PRIMERA",30="PROTEUS_ANALOG_PWM_TEST",63="PROTEUS_BMW_M73",9="PROTEUS_E65_6H_MAN_IN_THE_MIDDLE",27="PROTEUS_GM_LS_4",6="PROTEUS_HARLEY",90="PROTEUS_HONDA_K",91="PROTEUS_HONDA_OBD2A",104="PROTEUS_HYUNDAI_PB",25="PROTEUS_LUA_DEMO",17="PROTEUS_M111",67="PROTEUS_MIATA_NB2",93="PROTEUS_N73",103="PROTEUS_NISSAN_VQ35",42="PROTEUS_QC_TEST_BOARD",98="PROTEUS_SBC",39="PROTEUS_VW_B6",29="SACHS",70="SUBARUEG33_DEFAULTS",22="SUBARU_2003_WRX",100="TEST_100",101="TEST_101",102="TEST_102",18="TEST_33816",28="TEST_CRANK_ENGINE",48="TEST_DC_WASTEGATE_DISCOVERY",26="TEST_ENGINE",45="TEST_ENGINE_VVT",52="TEST_ISSUE_366_BOTH",53="TEST_ISSUE_366_RISE",19="TEST_ROTARY",59="TLE8888_BENCH_ENGINE",13="TOYOTA_1NZ_FE",44="TOYOTA_2JZ_GTE_VVTi",15="UNUSED_15",33="UNUSED_33",57="UNUSED_57",73="UNUSED_73",74="UNUSED_74",75="UNUSED_75",92="UNUSED_92",32="VW_ABA",96="WASTEGATE_PROTEUS_TEST" sensorSnifferRpmThreshold = scalar, U16, 4, "RPM", 1, 0, 0, 10000, 0 @@ -342,7 +342,7 @@ verboseQuad = bits, U32, 724, [8:8], "false", "true" useStepperIdle = bits, U32, 724, [9:9], "false", "true" enabledStep1Limiter = bits, U32, 724, [10:10], "false", "true" useTpicAdvancedMode = bits, U32, 724, [11:11], "false", "true" -unused760b12 = bits, U32, 724, [12:12], "false", "true" +lambdaProtectionEnable = bits, U32, 724, [12:12], "false", "true" verboseTLE8888 = bits, U32, 724, [13:13], "false", "true" enableVerboseCanTx = bits, U32, 724, [14:14], "false", "true" etb1configured = bits, U32, 724, [15:15], "false", "true" @@ -1224,7 +1224,11 @@ tcu_rangeInputMode3 = bits, U08, 3964, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode4 = bits, U08, 3965, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode5 = bits, U08, 3966, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" tcu_rangeInputMode6 = bits, U08, 3967, [0:1], "DEFAULT", "PULLUP", "PULLDOWN" -mainUnusedEnd = array, U08, 3968, [194], "units", 1, 0, 0, 1, 0 +lambdaProtectionMinRpm = scalar, U08, 3968, "RPM", 100.0, 0, 0, 25000, 0 +lambdaProtectionMinLoad = scalar, U08, 3969, "", 10.0, 0, 0, 1000, 0 +lambdaProtectionMinTps = scalar, U08, 3970, "", 1, 0, 0, 100, 0 +lambdaProtectionTimeout = scalar, U08, 3971, "s", 0.1, 0, 0, 10, 1 +mainUnusedEnd = array, U08, 3972, [190], "units", 1, 0, 0, 1, 0 etbBiasBins = array, F32, 4164, [8], "target TPS position", 1, 0, 0, 100, 0 etbBiasValues = array, F32, 4196, [8], "ETB duty cycle bias", 1, 0, -100, 100, 2 iacPidMultTable = array, U08, 4228, [8x8], "%", 0.05, 0, 0, 10, 2 @@ -1482,7 +1486,10 @@ tcu_rangeM1 = array, U08, 23410, [6], "level", 1, 0, 0, 3, 0 tcu_rangePlus = array, U08, 23416, [6], "level", 1, 0, 0, 3, 0 tcu_rangeMinus = array, U08, 23422, [6], "level", 1, 0, 0, 3, 0 tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 -; total TS size = 23436 +lambdaMaxDeviationTable = array, U08, 23434, [4x4], "lambda", 0.01, 0, 0, 1, 2 +lambdaMaxDeviationLoadBins = array, U16, 23450, [4], "", 1, 0, 0, 1000, 0 +lambdaMaxDeviationRpmBins = array, U16, 23458, [4], "RPM", 1, 0, 0, 18000, 0 +; total TS size = 23468 [SettingContextHelp] engineType = "http://rusefi.com/wiki/index.php?title=Manual:Engine_Type\nset engine_type X" sensorSnifferRpmThreshold = "Disable sensor sniffer above this rpm" @@ -2147,6 +2154,7 @@ tcu_rangeLow = array, U08, 23428, [6], "level", 1, 0, 0, 3, 0 tcu_rangeInputMode4 = "tcu_rangeInputMode 4" tcu_rangeInputMode5 = "tcu_rangeInputMode 5" tcu_rangeInputMode6 = "tcu_rangeInputMode 6" + lambdaProtectionTimeout = "Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed" etbBiasBins = "target TPS value, 0 to 100%\nTODO: use int8 data date once we template interpolation method" etbBiasValues = "PWM bias, 0 to 100%" sparkDwellRpmBins = "On Single Coil or Wasted Spark setups you have to lower dwell at high RPM" @@ -4076,6 +4084,12 @@ curve = rangeMatrix, "Range Switch Input Matrix" gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. upDownLabel = "(RICHER)", "(LEANER)" + table = lambdaMaxDeviationTableTbl, lambdaMaxDeviationTableMap, "Maximum Lambda Deviation Table", 1 + xyLabels = "RPM", "" + xBins = lambdaMaxDeviationRpmBins, RPMValue + yBins = lambdaMaxDeviationLoadBins, afrTableYAxis + zBins = lambdaMaxDeviationTable + table = iacPidMultTbl, iacPidMultMap, "IAC PID Multiplier Table", 1 ; constant, variable xBins = iacPidMultRpmBins, RPMValue @@ -5443,6 +5457,11 @@ menuDialog = main subMenu = fancyHardwareDialog, "Fancy Hardware" subMenu = std_separator + + ; TODO: move lambdaProtection to the fuel menu once ready + ; https://github.com/FOME-Tech/fome-fw/issues/75 + subMenu = lambdaProtection, "Lambda Protection", 0, { isInjectionEnabled } + subMenu = std_separator subMenu = std_separator @@ -7432,6 +7451,20 @@ dialog = sent_stateDialog, "sent_state" panel = stftPartitionSettingsPower, {fuelClosedLoopCorrectionEnabled == 1} panel = stftPartitionSettingsOverrun, {fuelClosedLoopCorrectionEnabled == 1} + dialog = lambdaProtectionLeft, "" + field = "Enable lambda protection", lambdaProtectionEnable + field = "Check above load", lambdaProtectionMinLoad, { lambdaProtectionEnable } + field = "Check above TPS", lambdaProtectionMinTps, { lambdaProtectionEnable } + field = "Check above RPM", lambdaProtectionMinRpm, { lambdaProtectionEnable } + field = "Check after delay", lambdaProtectionTimeout { lambdaProtectionEnable } + + dialog = lambdaProtectionRight, "Lambda Difference Limit Table" + panel = lambdaMaxDeviationTableTbl + + dialog = lambdaProtection, "Lambda Protection", border + panel = lambdaProtectionLeft, West + panel = lambdaProtectionRight, East + dialog = vvtPidDialog0, "Configuration" field = "Activation Delay", vvtActivationDelayMs field = "Do not control below RPM", vvtControlMinRpm diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java index ee45ef69e6..e351e41829 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config.generated; -// this file was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Fri Jun 23 23:28:38 UTC 2023 +// this file was generated automatically by rusEFI tool config_definition.jar based on (unknown script) integration/rusefi_config.txt Sat Jun 24 01:08:00 UTC 2023 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -945,7 +945,7 @@ public class Fields { public static final int PACK_MULT_VOLTAGE = 1000; public static final int PACK_MULT_VSS = 100; public static final int PEDAL_TO_TPS_SIZE = 8; - public static final int persistent_config_s_size = 23436; + public static final int persistent_config_s_size = 23468; public static final int pid_s_size = 20; public static final int PidAutoTune_AutoTunerState_AUTOTUNER_OFF = 0; public static final int PidAutoTune_AutoTunerState_CONVERGED = 16; @@ -1022,6 +1022,7 @@ public class Fields { public static final int SentEtbType_FORD_TYPE_1 = 2; public static final int SentEtbType_GM_TYPE_1 = 1; public static final int SentEtbType_NONE = 0; + public static final int SIGNATURE_HASH = 1278519085; public static final String SIMULATOR_TUNE_BIN_FILE_NAME = "generated/simulator_tune_image.bin"; public static final int spi_device_e_SPI_DEVICE_1 = 1; public static final int spi_device_e_SPI_DEVICE_2 = 2; @@ -1059,7 +1060,7 @@ public class Fields { public static final int TOOTH_PACKET_SIZE = 2; public static final String TOP_DEAD_CENTER_MESSAGE = "r"; public static final int TORQUE_CURVE_SIZE = 6; - public static final int TOTAL_CONFIG_SIZE = 23436; + public static final int TOTAL_CONFIG_SIZE = 23468; public static final int TPS_2_BYTE_PACKING_MULT = 100; public static final int TPS_TPS_ACCEL_CLT_CORR_TABLE = 4; public static final int TPS_TPS_ACCEL_TABLE = 8; @@ -1234,7 +1235,7 @@ public class Fields { public static final int TS_RESPONSE_UNDERRUN = 0x80; public static final int TS_RESPONSE_UNRECOGNIZED_COMMAND = 0x83; public static final char TS_SET_LOGGER_SWITCH = 'l'; - public static final String TS_SIGNATURE = "rusEFI master.2023.06.24.f407-discovery.3978602650"; + public static final String TS_SIGNATURE = "rusEFI master.2023.06.24.f407-discovery.1278519085"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final char TS_TEST_COMMAND = 't'; public static final int TS_TOTAL_OUTPUT_SIZE = 1388; @@ -1584,6 +1585,7 @@ public class Fields { public static final Field USESTEPPERIDLE = Field.create("USESTEPPERIDLE", 724, FieldType.BIT, 9).setBaseOffset(0); public static final Field ENABLEDSTEP1LIMITER = Field.create("ENABLEDSTEP1LIMITER", 724, FieldType.BIT, 10).setBaseOffset(0); public static final Field USETPICADVANCEDMODE = Field.create("USETPICADVANCEDMODE", 724, FieldType.BIT, 11).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONENABLE = Field.create("LAMBDAPROTECTIONENABLE", 724, FieldType.BIT, 12).setBaseOffset(0); public static final Field VERBOSETLE8888 = Field.create("VERBOSETLE8888", 724, FieldType.BIT, 13).setBaseOffset(0); public static final Field ENABLEVERBOSECANTX = Field.create("ENABLEVERBOSECANTX", 724, FieldType.BIT, 14).setBaseOffset(0); public static final Field ETB1CONFIGURED = Field.create("ETB1CONFIGURED", 724, FieldType.BIT, 15).setBaseOffset(0); @@ -2540,7 +2542,11 @@ public class Fields { public static final Field TCU_RANGEINPUTMODE4 = Field.create("TCU_RANGEINPUTMODE4", 3965, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0); public static final Field TCU_RANGEINPUTMODE5 = Field.create("TCU_RANGEINPUTMODE5", 3966, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0); public static final Field TCU_RANGEINPUTMODE6 = Field.create("TCU_RANGEINPUTMODE6", 3967, FieldType.INT8, pin_input_mode_e).setScale(1.0).setBaseOffset(0); - public static final Field MAINUNUSEDEND = Field.create("MAINUNUSEDEND", 3968, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONMINRPM = Field.create("LAMBDAPROTECTIONMINRPM", 3968, FieldType.INT8).setScale(100.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONMINLOAD = Field.create("LAMBDAPROTECTIONMINLOAD", 3969, FieldType.INT8).setScale(10.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONMINTPS = Field.create("LAMBDAPROTECTIONMINTPS", 3970, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAPROTECTIONTIMEOUT = Field.create("LAMBDAPROTECTIONTIMEOUT", 3971, FieldType.INT8).setScale(0.1).setBaseOffset(0); + public static final Field MAINUNUSEDEND = Field.create("MAINUNUSEDEND", 3972, FieldType.INT8).setScale(1.0).setBaseOffset(0); public static final Field ALIGNMENTFILL_AT_4162 = Field.create("ALIGNMENTFILL_AT_4162", 4162, FieldType.INT8).setScale(1.0).setBaseOffset(0); public static final Field ETBBIASBINS = Field.create("ETBBIASBINS", 4164, FieldType.FLOAT).setBaseOffset(0); public static final Field ETBBIASVALUES = Field.create("ETBBIASVALUES", 4196, FieldType.FLOAT).setBaseOffset(0); @@ -2819,7 +2825,10 @@ public class Fields { public static final Field TCU_RANGEPLUS = Field.create("TCU_RANGEPLUS", 23416, FieldType.INT8).setScale(1.0).setBaseOffset(0); public static final Field TCU_RANGEMINUS = Field.create("TCU_RANGEMINUS", 23422, FieldType.INT8).setScale(1.0).setBaseOffset(0); public static final Field TCU_RANGELOW = Field.create("TCU_RANGELOW", 23428, FieldType.INT8).setScale(1.0).setBaseOffset(0); - public static final Field ALIGNMENTFILL_AT_23434 = Field.create("ALIGNMENTFILL_AT_23434", 23434, FieldType.INT8).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAMAXDEVIATIONTABLE = Field.create("LAMBDAMAXDEVIATIONTABLE", 23434, FieldType.INT8).setScale(0.01).setBaseOffset(0); + public static final Field LAMBDAMAXDEVIATIONLOADBINS = Field.create("LAMBDAMAXDEVIATIONLOADBINS", 23450, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field LAMBDAMAXDEVIATIONRPMBINS = Field.create("LAMBDAMAXDEVIATIONRPMBINS", 23458, FieldType.INT16).setScale(1.0).setBaseOffset(0); + public static final Field ALIGNMENTFILL_AT_23466 = Field.create("ALIGNMENTFILL_AT_23466", 23466, FieldType.INT8).setScale(1.0).setBaseOffset(0); public static final Field[] VALUES = { ENGINETYPE, SENSORSNIFFERRPMTHRESHOLD, @@ -3096,6 +3105,7 @@ public class Fields { USESTEPPERIDLE, ENABLEDSTEP1LIMITER, USETPICADVANCEDMODE, + LAMBDAPROTECTIONENABLE, VERBOSETLE8888, ENABLEVERBOSECANTX, ETB1CONFIGURED, @@ -4034,6 +4044,10 @@ public class Fields { TCU_RANGEINPUTMODE4, TCU_RANGEINPUTMODE5, TCU_RANGEINPUTMODE6, + LAMBDAPROTECTIONMINRPM, + LAMBDAPROTECTIONMINLOAD, + LAMBDAPROTECTIONMINTPS, + LAMBDAPROTECTIONTIMEOUT, MAINUNUSEDEND, ALIGNMENTFILL_AT_4162, ETBBIASBINS, @@ -4313,6 +4327,9 @@ public class Fields { TCU_RANGEPLUS, TCU_RANGEMINUS, TCU_RANGELOW, - ALIGNMENTFILL_AT_23434, + LAMBDAMAXDEVIATIONTABLE, + LAMBDAMAXDEVIATIONLOADBINS, + LAMBDAMAXDEVIATIONRPMBINS, + ALIGNMENTFILL_AT_23466, }; }