From 62898c68ea10f422bf2fbda1fd6b1ebbf8b99a3b Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Fri, 4 Sep 2020 13:27:35 +0200 Subject: [PATCH] fix case where gearshift happens and braking results in negative braking power - perform roll action --- VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs | 1 + .../SimulationComponent/Impl/DefaultDriverStrategy.cs | 4 ++++ .../Models/SimulationComponent/Impl/HybridController.cs | 3 ++- .../Models/SimulationComponent/Strategies/HybridStrategy.cs | 6 ++++-- .../GenericVehicle_Group5_P2/Transmission/AMT_12.vgbx | 2 +- .../Hyb_P2_Group2/Class2_RigidTruck_ParHyb_ENG.vecto | 3 +-- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs b/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs index 28fb219983..c11db7a245 100644 --- a/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs +++ b/VectoCommon/VectoCommon/Models/HybridStrategyResponse.cs @@ -12,6 +12,7 @@ namespace TUGraz.VectoCommon.Models { public class HybridStrategyLimitedResponse : IHybridStrategyResponse { public Watt Delta { get; set; } + public PerSecond DeltaEngineSpeed { get; set; } } public class HybridStrategyResponse : IHybridStrategyResponse diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index a4c2a59a1f..e713396f64 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -1383,6 +1383,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl response = Driver.DrivingActionBrake( absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient, r); + if (response is ResponseOverload) { + response = Driver.DrivingActionRoll(absTime, ds, + DriverStrategy.BrakeTrigger.NextTargetSpeed, gradient); + } }).Case<ResponseOverload>( () => { DataBus.Brakes.BrakePower = 0.SI<Watt>(); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs index fde1a9a869..686d398bf4 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/HybridController.cs @@ -102,7 +102,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (dryRun) { return new ResponseDryRun(this) { DeltaDragLoad = ovl.Delta, - DeltaFullLoad = ovl.Delta + DeltaFullLoad = ovl.Delta, + DeltaEngineSpeed = ovl.DeltaEngineSpeed }; } return new ResponseOverload(this) { diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index d59b238004..da75dd5c10 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -239,7 +239,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies RequestDryRun(absTime, dt, outTorque, outAngularVelocity, currentGear, maxEmDriveSetting); if (maxEmDriveResponse.DeltaFullLoad.IsSmallerOrEqual(0)) { return new HybridStrategyLimitedResponse() { - Delta = outTorque * outAngularVelocity - StrategyParameters.MaxDrivetrainPower + Delta = outTorque * outAngularVelocity - StrategyParameters.MaxDrivetrainPower, + DeltaEngineSpeed = maxEmDriveResponse.DeltaEngineSpeed }; } @@ -260,7 +261,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies delta = (outTorque - maxTorque) * outAngularVelocity; } return new HybridStrategyLimitedResponse() { - Delta = delta + Delta = delta, + DeltaEngineSpeed = maxEmDriveResponse.DeltaEngineSpeed }; } diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/Transmission/AMT_12.vgbx b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/Transmission/AMT_12.vgbx index 4e9148c1ad..ae0a1a7eba 100644 --- a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/Transmission/AMT_12.vgbx +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2/Transmission/AMT_12.vgbx @@ -110,7 +110,7 @@ "Enabled": false }, "DownshiftAfterUpshiftDelay": 6.0, - "UpshiftAfterDownshiftDelay": 10.0, + "UpshiftAfterDownshiftDelay": 6.0, "UpshiftMinAcceleration": 0.1, "PowershiftShiftTime": 0.8 } diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/Class2_RigidTruck_ParHyb_ENG.vecto b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/Class2_RigidTruck_ParHyb_ENG.vecto index 9a8b19e333..fa9c12a68c 100644 --- a/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/Class2_RigidTruck_ParHyb_ENG.vecto +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/Hyb_P2_Group2/Class2_RigidTruck_ParHyb_ENG.vecto @@ -58,8 +58,7 @@ "Interurban", "MunicipalUtility", "Suburban", - "Urban", - + "Urban" ] } } \ No newline at end of file -- GitLab