diff --git a/firmware/controllers/bench_test.cpp b/firmware/controllers/bench_test.cpp index 53db6ff0bf..8d683d66f3 100644 --- a/firmware/controllers/bench_test.cpp +++ b/firmware/controllers/bench_test.cpp @@ -290,11 +290,13 @@ static void handleCommandX14(uint16_t index) { void executeTSCommand(uint16_t subsystem, uint16_t index) { scheduleMsg(logger, "IO test subsystem=%d index=%d", subsystem, index); + bool running = !ENGINE(rpmCalculator).isStopped(); + if (subsystem == 0x11) { clearWarnings(); - } else if (subsystem == 0x12) { + } else if (subsystem == 0x12 && !running) { doRunSpark(index, "300", "4", "400", "3"); - } else if (subsystem == 0x13) { + } else if (subsystem == 0x13 && !running) { doRunFuel(index, "300", "4", "400", "3"); } else if (subsystem == 0x14) { handleCommandX14(index); diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index d28ce3ad52..e773e984f8 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -526,8 +526,8 @@ enable2ndByteCanID = false curve = dwellCorrection, "Dwell time RPM based" columnLabel = "RPM", "Dwell" - xAxis = 0, 8000, 10 - yAxis = 0, 30, 10 + xAxis = 0, 8000, 9 + yAxis = 0, 8, 9 xBins = sparkDwellRpmBins, RPMValue yBins = sparkDwellValues gauge = RPMGauge @@ -548,13 +548,12 @@ enable2ndByteCanID = false yBins = map_samplingWindow gauge = MAPGauge - curve = injectorsDeadTime, "Injector Dead Time by VBatt" + curve = injectorsDeadTime, "Injector dead time" columnLabel = "Voltage", "Dead Time" - xAxis = 8, 21, 10 - yAxis = -3, 3, 10 + xAxis = 8, 16, 9 + yAxis = 0, 2, 5 xBins = injector_battLagCorrBins, VBatt yBins = injector_battLagCorr - gauge = VBattGauge curve = mafDecodingCurve, "MAF sensor" columnLabel = "Voltage", "kg/hour" @@ -566,7 +565,7 @@ enable2ndByteCanID = false curve = iatFuelCorrCurve, "Intake air temperature fuel Multiplier" columnLabel = "Coolant", "Multiplier" - xAxis = -40, 120, 10 + xAxis = -40, 120, 9 yAxis = 0, 2, 11 xBins = iatFuelCorrBins, intake yBins = iatFuelCorr @@ -574,15 +573,15 @@ enable2ndByteCanID = false curve = cltTimingCorrCurve, "Warmup timing correction" columnLabel = "Coolant", "Extra" - xAxis = -40, 120, 10 - yAxis = 0, 50, 10 + xAxis = -40, 120, 9 + yAxis = 0, 20, 9 xBins = cltTimingBins, coolant yBins = cltTimingExtra gauge = CLTGauge curve = cltFuelCorrCurve, "Warmup fuel manual Multiplier" columnLabel = "Coolant", "Multiplier" - xAxis = -40, 100, 10 + xAxis = -40, 120, 9 yAxis = 0, 3, 10 xBins = cltFuelCorrBins, coolant yBins = cltFuelCorr @@ -590,7 +589,7 @@ enable2ndByteCanID = false curve = crankingCltCurve, "Cranking Coolant Temperature Multiplier" columnLabel = "Coolant", "Multiplier" - xAxis = -40, 100, 10 + xAxis = -40, 120, 9 yAxis = 0, 3, 10 xBins = crankingFuelBins, coolant yBins = crankingFuelCoef @@ -606,7 +605,7 @@ enable2ndByteCanID = false curve = crankingTpsCurve, "Cranking TPS Multiplier" columnLabel = "TPS", "Multiplier" - xAxis = 0, 100, 10 + xAxis = 0, 100, 11 yAxis = 0, 3, 10 xBins = crankingTpsBins, TPSValue yBins = crankingTpsCoef @@ -614,8 +613,8 @@ enable2ndByteCanID = false curve = crankingDurationCurve, "Cranking Duration Multiplier" columnLabel = "Engine Cycle", "Multiplier" - xAxis = 0, 1000, 10 - yAxis = 0, 3, 10 + xAxis = 0, 50, 11 + yAxis = 0, 5, 6 xBins = crankingCycleBins yBins = crankingCycleCoef @@ -630,7 +629,7 @@ enable2ndByteCanID = false curve = iacCoastingCurve, "Coasting IAC Position for Auto-Idle" columnLabel = "Coolant", "Multiplier" - xAxis = -40, 120, 10 + xAxis = -40, 120, 9 yAxis = 0, 100, 10 xBins = iacCoastingBins, coolant yBins = iacCoasting @@ -638,7 +637,7 @@ enable2ndByteCanID = false curve = cltCrankingCurve, "Cranking Idle Air multiplier" columnLabel = "Coolant", "Multiplier" - xAxis = -40, 120, 10 + xAxis = -40, 120, 9 yAxis = 0, 3, 10 xBins = cltCrankingCorrBins, coolant yBins = cltCrankingCorr @@ -646,7 +645,7 @@ enable2ndByteCanID = false curve = cltIdleRPMCurve, "Idle Target RPM" columnLabel = "Coolant", "RPM" - xAxis = -40, 120, 10 + xAxis = -40, 120, 9 yAxis = 0, 8000, 10 xBins = cltIdleRpmBins, coolant yBins = cltIdleRpm, RPMValue @@ -1195,30 +1194,30 @@ menuDialog = main menu = "Fuel" # basic - subMenu = injectionSettings, "Injection settings" - subMenu = injectionDeadTime, "Injector dead time", 0, {isInjectionEnabled == 1} + subMenu = injectorConfig, "Injection configuration", 0, {isInjectionEnabled == 1} + subMenu = injectionSettings, "Injection hardware" subMenu = std_separator - # Targets & closed loop + # Air mass model + subMenu = veTableDialog, "VE", 0, {isInjectionEnabled == 1} + subMenu = tChargeSettings, "Charge temperature estimation", 0, {isInjectionEnabled == 1} + subMenu = baroCorrTbl, "Barometric pressure correction", 0, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} + subMenu = std_separator + + # Fuel model subMenu = afrTableTbl, "Target AFR", 0, {isInjectionEnabled == 1} + subMenu = cltFuelCorrCurve, "CLT multiplier", 0, {isInjectionEnabled == 1} + subMenu = iatFuelCorrCurve, "IAT multiplier", 0, {isInjectionEnabled == 1} subMenu = fuelClosedLoopDialog, "Closed loop fuel correction", 0, {isInjectionEnabled == 1} subMenu = coastingFuelCutControl, "Deceleration fuel cutoff (DFCO)", 0, {isInjectionEnabled == 1} subMenu = std_separator - # Fuel table/VE - subMenu = veTableDialog, "VE", 0, {isInjectionEnabled == 1} + # Injector model subMenu = injPhaseTableTbl, "Injection phase", 0, {isInjectionEnabled == 1} subMenu = std_separator - # Corrections - subMenu = cltFuelCorrCurve, "CLT multiplier", 0, {isInjectionEnabled == 1} - subMenu = iatFuelCorrCurve, "IAT multiplier", 0, {isInjectionEnabled == 1} - subMenu = baroCorrTbl, "Baro multiplier", 0, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} - subMenu = tChargeSettings, "tCharge settings", 0, {isInjectionEnabled == 1} - subMenu = std_separator - # Accel enrichment - subMenu = AccelEnrich, "Accel/decel enrichment/enleanment", 0, {isInjectionEnabled == 1} + subMenu = AccelEnrich, "Acceleration enrichment", 0, {isInjectionEnabled == 1} subMenu = tpsTpsAccelTbl, "TPS/TPS acceleration extra fuel", 0, {isInjectionEnabled == 1} subMenu = mapAccelTaper, "Engine load AE taper", 0, {isInjectionEnabled == 1} @@ -1425,10 +1424,6 @@ cmd_test_inj9 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x09" cmd_test_inj10 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0a" cmd_test_inj11 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0b" cmd_test_inj12 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0c" -cmd_test_inj13 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0d" -cmd_test_inj14 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0e" -cmd_test_inj15 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x0f" -cmd_test_inj16 = "@@TS_IO_TEST_COMMAND_char@@\x00\x13\x00\x10" cmd_test_fuel_pump = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x01" cmd_calibrate_tps_1_closed = "@@TS_IO_TEST_COMMAND_char@@\x00\x14\x00\x02" @@ -1523,8 +1518,6 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "#Batch injection with individual wiring" field = "Two wire batch emulation", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2} field = "Use TPS instead of Load for VE table", useTPSBasedVeTable, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} - field = "#Enabled for TPS-Based 'VE Autotune Mode' in Project Settings" - field = "Use TPS instead of Load for VE table", useTPSBasedVeTable, {0} dialog = ignitionOutputs, "Ignition Outputs" field = "Ignition Pin Mode", ignitionPinMode, {isIgnitionEnabled == 1} @@ -1612,10 +1605,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "Injector Flow", injector_flow, {isInjectionEnabled == 1} dialog = injectorOutputSettings, "Injector Outputs", yAxis - field = "!ECU reboot needed to apply these settings" - field = "injection Pin Mode", injectionPinMode, {isInjectionEnabled == 1} - field = "With batched injection without 'Two wire batch emulation'" - field = " fill only first count / 2 values" + field = "Use only first half of pins for batch mode" field = "Injection Pin 1", injectionPins1, {isInjectionEnabled == 1} field = "Injection Pin 2", injectionPins2, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 1} field = "Injection Pin 3", injectionPins3, {isInjectionEnabled == 1 && injectionMode != 3 && cylindersCount > 2} @@ -1627,19 +1617,41 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "Injection Pin 9 ", injectionPins9, {isInjectionEnabled == 1 && cylindersCount > 8} field = "Injection Pin 10 ", injectionPins10, {isInjectionEnabled == 1 && cylindersCount > 9} field = "Injection Pin 11 ", injectionPins11, {isInjectionEnabled == 1 && cylindersCount > 10} - field = "Injection Pin 12 ", injectionPins12, {isInjectionEnabled == 1 && cylindersCount > 11} - - dialog = injectionBasic, "" + field = "Injection Pin 12 ", injectionPins12, {isInjectionEnabled == 1 && cylindersCount > 11} + field = "" + field = "injection Pin Mode", injectionPinMode, {isInjectionEnabled == 1} + + dialog = testInjectors, "Injector Test" + commandButton = "Injector #1", cmd_test_inj1 + commandButton = "Injector #2", cmd_test_inj2 + commandButton = "Injector #3", cmd_test_inj3 + commandButton = "Injector #4", cmd_test_inj4 + commandButton = "Injector #5", cmd_test_inj5 + commandButton = "Injector #6", cmd_test_inj6 + commandButton = "Injector #7", cmd_test_inj7 + commandButton = "Injector #8", cmd_test_inj8 + commandButton = "Injector #9", cmd_test_inj9 + commandButton = "Injector #10", cmd_test_inj10 + commandButton = "Injector #11", cmd_test_inj11 + commandButton = "Injector #12", cmd_test_inj12 + + dialog = injectionSettingsEast, "", yAxis + panel = testInjectors + field = "" + + dialog = injectionSettingsWest, "", yAxis + panel = injectorOutputSettings + field = "" + + dialog = injectionSettings, "", xAxis + panel = injectionSettingsWest + panel = injectionSettingsEast + + dialog = injectorConfig, "", yAxis topicHelp = "fuelHelp" panel = baseInjection panel = injChars - - dialog = injectionSettings, "", xAxis - panel = injectionBasic - panel = injectorOutputSettings - - dialog = injectionDeadTime, "", yAxis - panel = injectorsDeadTime, East + panel = injectorsDeadTime dialog = ignitionCylExtra, "Ignition Cylinder Extra Timing" field = "Extra cyl #1", timing_offset_cylinder1 @@ -2881,17 +2893,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" commandButton = "Spark #6", cmd_test_spk6 commandButton = "Spark #7", cmd_test_spk7 commandButton = "Spark #8", cmd_test_spk8 - - dialog = testInjectors, "Fuel" - commandButton = "Injector #1", cmd_test_inj1 - commandButton = "Injector #2", cmd_test_inj2 - commandButton = "Injector #3", cmd_test_inj3 - commandButton = "Injector #4", cmd_test_inj4 - commandButton = "Injector #5", cmd_test_inj5 - commandButton = "Injector #6", cmd_test_inj6 - commandButton = "Injector #7", cmd_test_inj7 - commandButton = "Injector #8", cmd_test_inj8 - + dialog = testMisc, "Misc" ; commandButton = "Come To Pit", cmd_call_from_pit commandButton = "Fuel Pump", cmd_test_fuel_pump