From e4b59e2af3c7ff11fd5fdf52de44ed0b43cecae7 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 1 Jun 2022 10:07:47 +0200 Subject: [PATCH] PTO for S2 hbrids works --- .../Simulation/Impl/PowertrainBuilder.cs | 31 +++++++++++++++++-- .../VectoCore/Utils/ProviderExtensions.cs | 13 ++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 81ffafc6af..1c27f14908 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -608,6 +608,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl .AddComponent(GetRetarder(RetarderType.TransmissionOutputRetarder, data.Retarder, container)) .AddComponent(gearbox) .AddComponent(GetRetarder(RetarderType.TransmissionInputRetarder, data.Retarder, container)) + .AddComponent(GetPEVPTO(container, data)) .AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE2, data.ElectricMachinesData, container, es, ctl)); new ATClutchInfo(container); @@ -637,7 +638,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ctl.GenSet.AddComponent(GetElectricMachine(PowertrainPosition.GEN, data.ElectricMachinesData, container, es, ctl)) .AddComponent(engine, idleController) - .AddAuxiliaries(container, data); + .AddAuxiliariesSerialHybrid(container, data); return container; } @@ -725,7 +726,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl .AddComponent(GetRetarder(RetarderType.TransmissionOutputRetarder, data.Retarder, container)) .AddComponent(gearbox) .AddComponent(GetRetarder(RetarderType.TransmissionInputRetarder, data.Retarder, container)) - .AddComponent(data.PTO != null ? GetPEVPTO(container, data): null) + .AddComponent(GetPEVPTO(container, data)) .AddComponent(em); new ATClutchInfo(container); @@ -1141,6 +1142,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl .AddComponent(GetRetarder(RetarderType.TransmissionOutputRetarder, data.Retarder, container)) .AddComponent(gearbox) .AddComponent(GetRetarder(RetarderType.TransmissionInputRetarder, data.Retarder, container)) + .AddComponent(GetPEVPTO(container, data)) .AddComponent(GetElectricMachine(PowertrainPosition.BatteryElectricE2, data.ElectricMachinesData, container, es, ctl)); break; @@ -1479,6 +1481,31 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return aux; } + internal static EngineAuxiliary CreateAuxiliariesSerialHybrid(VectoRunData data, + IVehicleContainer container) + { + var aux = new EngineAuxiliary(container); + foreach (var auxData in data.Aux) { + // id's in upper case + var id = auxData.ID.ToUpper(); + + switch (auxData.DemandType) { + case AuxiliaryDemandType.Constant: + aux.AddConstant(id, auxData.PowerDemand); + break; + case AuxiliaryDemandType.Direct: + aux.AddCycle(id); + break; + default: + throw new ArgumentOutOfRangeException("AuxiliaryDemandType", auxData.DemandType.ToString()); + } + + container.ModalData?.AddAuxiliary(id); + } + + return aux; + } + private EngineAuxiliary CreateSpeedDependentAuxiliaries(VectoRunData data, IVehicleContainer container) { var aux = new EngineAuxiliary(container); diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs index a18d4ebe90..f41c29ba56 100644 --- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs +++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs @@ -53,6 +53,19 @@ namespace TUGraz.VectoCore.Utils } } + public static void AddAuxiliariesSerialHybrid(this CombustionEngine engine, IVehicleContainer container, + VectoRunData data) + { + // aux --> engine + if (data.BusAuxiliaries != null) { + engine.Connect(PowertrainBuilder.CreateAdvancedAuxiliaries(data, container).Port()); + } else { + if (data.Aux != null) { + engine.Connect(PowertrainBuilder.CreateAuxiliariesSerialHybrid(data, container).Port()); + } + } + } + public static IDriver AddComponent(this IDrivingCycleInProvider prev, IDriver next) { prev.InPort().Connect(next.OutPort()); -- GitLab