From 6e3494831994eed46b8bbe8e9226689f73847af1 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Mon, 20 Dec 2021 12:06:52 +0100 Subject: [PATCH] HybridStrategy: corrected AllowICEoff bug (added special case for P1+PCC+ESS) --- .../SimulationComponent/Strategies/HybridStrategy.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index 29e6547b26..dd7fc2e800 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -994,8 +994,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies protected virtual bool AllowICEOff(Second absTime) { - return PreviousState.ICEStartTStmp == null - || (PreviousState.ICEStartTStmp + StrategyParameters.MinICEOnTime).IsSmaller(absTime); + //VECTO-1493 special case for P1: only allow turning ICE off if ESS is activated and PCC is currently active + var isPCC = DataBus.DriverInfo.PCCState.IsOneOf(PCCStates.UseCase1, PCCStates.UseCase2); + var isP1 = DataBus.PowertrainInfo.ElectricMotorPositions.Contains(PowertrainPosition.HybridP1); + if (isP1 && (!ModelData.VehicleData.ADAS.EngineStopStart || !isPCC)) + return false; + + //normal case: only turn of ICE if ESS is activated and the minimal ICE on time is exceeded. + var MinICEonTimeExceeded = PreviousState.ICEStartTStmp is null + || absTime.IsGreaterOrEqual(PreviousState.ICEStartTStmp + StrategyParameters.MinICEOnTime); + return ModelData.VehicleData.ADAS.EngineStopStart && MinICEonTimeExceeded; } protected virtual void HandleBrakeAction(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, List<HybridResultEntry> eval) -- GitLab