From a147b65bbcea1897a1d85a2225850ed9ae5b696c Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 20 Apr 2022 09:29:58 +0200 Subject: [PATCH] correcting powertrain builder: building simple parallel powertrain, connect idle controller after powertrain is connected togehter --- .../Simulation/Impl/PowertrainBuilder.cs | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 0a179ae85a..96e80a328e 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -470,6 +470,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl .AddAuxiliaries(container, data); if (data.ElectricMachinesData.Any(x => x.Item1 == PowertrainPosition.HybridP1)) { + // this has to be done _after_ the powertrain is connected together so that the cluch already has its nextComponent set (necessary in the idle controlelr) if (gearbox is ATGearbox atGbx) { atGbx.IdleController = idleController; } else { @@ -964,14 +965,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var ctl = new SimpleHybridController(container, es) { Gearbox = gbx, Engine = engine }; var idleController = GetIdleController(data.PTO, engine, container); var clutch = data.GearboxData.Type.ManualTransmission() ? new SwitchableClutch(container, data.EngineData) : null; - if (data.ElectricMachinesData.Any(x => x.Item1 == PowertrainPosition.HybridP1)) { - if (gearbox is ATGearbox atGbx) { - atGbx.IdleController = idleController; - new ATClutchInfo(container); - } else { - clutch.IdleController = idleController; - } - } + var vehicle = new Vehicle(container, data.VehicleData, data.AirdragData); @@ -1005,6 +999,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl .AddComponent(engine, idleController) .AddAuxiliaries(container, data); + if (data.ElectricMachinesData.Any(x => x.Item1 == PowertrainPosition.HybridP1)) { + // this has to be done _after_ the powertrain is connected together so that the cluch already has its nextComponent set (necessary in the idle controlelr) + if (gearbox is ATGearbox atGbx) { + atGbx.IdleController = idleController; + new ATClutchInfo(container); + } else { + clutch.IdleController = idleController; + } + } + if (data.BusAuxiliaries != null) { if (!(container.BusAux is BusAuxiliariesAdapter busAux)) { throw new VectoException("BusAux data set but no BusAux component found!"); -- GitLab