disable closed loop boost below MAP threshold (#3206)
* boost minimum map * changelog
This commit is contained in:
parent
22158cbc4a
commit
6407e74ae2
|
@ -31,6 +31,7 @@ All notable user-facing or behavior-altering changes will be documented in this
|
||||||
- RUSEFI MSD now contains bundle-specific URL #2848
|
- RUSEFI MSD now contains bundle-specific URL #2848
|
||||||
- Nissan 4 cylinder QR trigger wheel #3118
|
- Nissan 4 cylinder QR trigger wheel #3118
|
||||||
- 1-6-2-4-3-5 firing order for all our 911 fans!
|
- 1-6-2-4-3-5 firing order for all our 911 fans!
|
||||||
|
- Add minimum MAP threshold for closed-loop boost control
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Composite Logger uses same engineSnifferRpmThreshold setting as engine sniffer #3161
|
- Composite Logger uses same engineSnifferRpmThreshold setting as engine sniffer #3161
|
||||||
|
|
|
@ -106,6 +106,12 @@ expected<percent_t> BoostController::getClosedLoop(float target, float manifoldP
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (manifoldPressure < CONFIG(minimumBoostClosedLoopMap)) {
|
||||||
|
// We're below the CL threshold, inhibit CL for now
|
||||||
|
m_pid.reset();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
float closedLoop = m_pid.getOutput(target, manifoldPressure, SLOW_CALLBACK_PERIOD_MS / 1000.0f);
|
float closedLoop = m_pid.getOutput(target, manifoldPressure, SLOW_CALLBACK_PERIOD_MS / 1000.0f);
|
||||||
|
|
||||||
#if EFI_TUNER_STUDIO
|
#if EFI_TUNER_STUDIO
|
||||||
|
|
|
@ -901,7 +901,7 @@ pin_output_mode_e hip9011IntHoldPinMode;
|
||||||
uint32_t verboseCanBaseAddress;;"", 1, 0, 0, 536870911, 0
|
uint32_t verboseCanBaseAddress;;"", 1, 0, 0, 536870911, 0
|
||||||
|
|
||||||
uint8_t mc33_hvolt;;"v", 1, 0, 40, 70, 0
|
uint8_t mc33_hvolt;;"v", 1, 0, 40, 70, 0
|
||||||
uint8_t unused761;;"", 1, 0, 0, 255, 0
|
uint8_t minimumBoostClosedLoopMap;+Minimum MAP before closed loop boost is enabled. Use to prevent misbehavior upon entering boost.;"kPa", 1, 0, 0, 255, 0
|
||||||
|
|
||||||
output_pin_e acFanPin;+Optional Radiator Fan used with A/C
|
output_pin_e acFanPin;+Optional Radiator Fan used with A/C
|
||||||
pin_output_mode_e acFanPinMode;
|
pin_output_mode_e acFanPinMode;
|
||||||
|
|
|
@ -3381,6 +3381,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
;Boost Closed Loop
|
;Boost Closed Loop
|
||||||
|
|
||||||
dialog = boostPidleft, ""
|
dialog = boostPidleft, ""
|
||||||
|
field = "Enable closed loop above", minimumBoostClosedLoopMap, { isBoostControlEnabled && boostType == 1 }
|
||||||
field = "P Gain", boostPid_pFactor, { isBoostControlEnabled && boostType == 1 }
|
field = "P Gain", boostPid_pFactor, { isBoostControlEnabled && boostType == 1 }
|
||||||
field = "I Gain", boostPid_iFactor, { isBoostControlEnabled && boostType == 1 }
|
field = "I Gain", boostPid_iFactor, { isBoostControlEnabled && boostType == 1 }
|
||||||
field = "D Gain", boostPid_dFactor, { isBoostControlEnabled && boostType == 1 }
|
field = "D Gain", boostPid_dFactor, { isBoostControlEnabled && boostType == 1 }
|
||||||
|
|
|
@ -87,11 +87,17 @@ TEST(BoostControl, ClosedLoop) {
|
||||||
|
|
||||||
// Enable closed loop
|
// Enable closed loop
|
||||||
CONFIG(boostType) = CLOSED_LOOP;
|
CONFIG(boostType) = CLOSED_LOOP;
|
||||||
|
// Minimum 75kpa
|
||||||
|
CONFIG(minimumBoostClosedLoopMap) = 75;
|
||||||
|
|
||||||
// At 0 RPM, closed loop is disabled
|
// At 0 RPM, closed loop is disabled
|
||||||
ENGINE(rpmCalculator.mockRpm) = 0;
|
ENGINE(rpmCalculator.mockRpm) = 0;
|
||||||
EXPECT_EQ(0, bc.getClosedLoop(150, 100).value_or(-1000));
|
EXPECT_EQ(0, bc.getClosedLoop(150, 100).value_or(-1000));
|
||||||
|
|
||||||
|
// too low MAP, disable closed loop
|
||||||
|
ENGINE(rpmCalculator.mockRpm) = 0;
|
||||||
|
EXPECT_EQ(0, bc.getClosedLoop(150, 50).value_or(-1000));
|
||||||
|
|
||||||
// With RPM, we should get an output
|
// With RPM, we should get an output
|
||||||
ENGINE(rpmCalculator.mockRpm) = 1000;
|
ENGINE(rpmCalculator.mockRpm) = 1000;
|
||||||
// Actual is below target -> positive output
|
// Actual is below target -> positive output
|
||||||
|
|
Loading…
Reference in New Issue