stub config for lambda protection

(cherry picked from commit 07f0360dd9d0aa6cb288657d11acf46775513c6c)
This commit is contained in:
Matthew Kennedy 2023-06-23 05:14:13 -04:00 committed by rusefi
parent 47f4eb19dc
commit 84efe441af
4 changed files with 45 additions and 5 deletions

View File

@ -27,8 +27,8 @@ struct Status {
uint8_t fuelPump : 1;
uint8_t checkEngine : 1;
uint8_t o2Heater : 1;
uint8_t lambdaProtectActive : 1;
uint8_t pad6 : 1;
uint8_t pad7 : 1;
uint8_t pad8 : 1;
@ -47,6 +47,9 @@ static void populateFrame(Status& msg) {
msg.checkEngine = enginePins.checkEnginePin.getLogicValue();
msg.o2Heater = enginePins.o2heater.getLogicValue();
// TODO: https://github.com/FOME-Tech/fome-fw/issues/75
msg.lambdaProtectActive = false;
msg.gear = Sensor::getOrZero(SensorType::DetectedGear);
}

View File

@ -54,6 +54,7 @@ BO_ 512 BASE0: 8 Vector__XXX
SG_ FuelPumpAct : 34|1@1+ (1,0) [0|0] "" Vector__XXX
SG_ CELAct : 35|1@1+ (1,0) [0|0] "" Vector__XXX
SG_ EGOHeatAct : 36|1@1+ (1,0) [0|0] "" Vector__XXX
SG_ LambdaProtectAct : 37|1@1+ (1,0) [0|0] "" Vector__XXX
SG_ CurrentGear : 40|8@1+ (1,0) [0|0] "" Vector__XXX
BO_ 513 BASE1: 8 Vector__XXX
@ -123,6 +124,7 @@ CM_ SG_ 512 MainRelayAct "Main Relay Active";
CM_ SG_ 512 FuelPumpAct "Fuel Pump Output Active";
CM_ SG_ 512 CELAct "Check Engine Light Active";
CM_ SG_ 512 EGOHeatAct "EGO Heater Commanded On";
CM_ SG_ 512 LambdaProtectAct "Lambda protection active (fault detected)";
CM_ SG_ 512 CurrentGear "Current detected gear. 0 means neutral, 1 means first, etc.";
CM_ SG_ 513 RPM "Current RPM";
CM_ SG_ 513 IgnitionTiming "Current Ignition Timing. Positive is advance.";

View File

@ -720,7 +720,7 @@ bit is_enabled_spi_2
bit enabledStep1Limiter
bit useTpicAdvancedMode
bit unused760b12
bit lambdaProtectionEnable
bit verboseTLE8888
bit enableVerboseCanTx;CAN broadcast using custom rusEFI protocol\nenable can_broadcast/disable can_broadcast
bit etb1configured
@ -1087,10 +1087,10 @@ int16_t tps2Max;Full throttle#2. tpsMax value as 10 bit ADC value. Not Voltage!\
uint16_t autoscale multisparkDwell;This sets the dwell time for subsequent sparks. The main spark's dwell is set by the dwell table.;"ms", 0.001, 0, 0, 3, 2
pid_s idleRpmPid;See cltIdleRpmBins
float wwaeBeta;0 = No fuel settling on port walls 1 = All the fuel settling on port walls setting this to 0 disables the wall wetting enrichment. ;"Fraction", 1, 0, 0, 1, 2
Gpio binarySerialTxPin;See also EFI_CONSOLE_RX_BRAIN_PIN
Gpio binarySerialRxPin;
Gpio[AUX_DIGITAL_VALVE_COUNT iterate] auxValves
switch_input_pin_e tcuUpshiftButtonPin
switch_input_pin_e tcuDownshiftButtonPin
@ -1525,10 +1525,16 @@ pin_input_mode_e[LUA_DIGITAL_INPUT_COUNT iterate] luaDigitalInputPinModes;
switch_input_pin_e[RANGE_INPUT_COUNT iterate] tcu_rangeInput;
pin_input_mode_e[RANGE_INPUT_COUNT iterate] tcu_rangeInputMode;
uint8_t autoscale lambdaProtectionMinRpm;;"RPM", 100, 0, 0, 25000, 0
uint8_t autoscale lambdaProtectionMinLoad;;"", 10, 0, 0, 1000, 0
uint8_t autoscale lambdaProtectionMinTps;;"", 1, 0, 0, 100, 0
uint8_t autoscale lambdaProtectionTimeout;Only respond once lambda is out of range for this period of time. Use to avoid transients triggering lambda protection when not needed;"s", 0.1, 0, 0, 10, 1
!
! Just a shortcut to facilitate compatible configuration changes, i.e. a change which does not touch FLASH_DATA_VERSION and thus does not require manual tune migration
!
uint8_t[194] mainUnusedEnd;;"units", 1, 0, 0, 1, 0
uint8_t[190] mainUnusedEnd;;"units", 1, 0, 0, 1, 0
! end of engine_configuration_s
end_struct
@ -1785,6 +1791,10 @@ uint8_t[6] tcu_rangePlus;;"level", 1, 0, 0, 3, 0
uint8_t[6] tcu_rangeMinus;;"level", 1, 0, 0, 3, 0
uint8_t[6] tcu_rangeLow;;"level", 1, 0, 0, 3, 0
uint8_t[4 x 4] autoscale lambdaMaxDeviationTable;;"lambda", 0.01, 0, 0, 1, 2
uint16_t[4] lambdaMaxDeviationLoadBins;;"", 1, 0, 0, 1000, 0
uint16_t[4] lambdaMaxDeviationRpmBins;;"RPM", 1, 0, 0, 18000, 0
end_struct
! Pedal Position Sensor

View File

@ -1233,6 +1233,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
@ -1987,6 +1993,11 @@ menuDialog = main
subMenu = hipFunction, "HIP9011 settings (knock sensor) (alpha version)" @@if_ts_show_hip9011
subMenu = softwareKnock, "Software knock" @@if_ts_show_software_knock
subMenu = maxKnockRetardTbl, "Max knock retard" @@if_ts_show_software_knock
; 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
@ -3572,6 +3583,20 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@@@ts_command_e_TS_
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