diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index a7c0d0416121e795078b830e4cf17e9a7e98bda8..fc29667638a997a256ba58a29d2cbd03f1df8a99 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -269,7 +269,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl Constants.Auxiliaries.PowerPrefix + Constants.Auxiliaries.IDs.PTOTransmission); aux.Add(Constants.Auxiliaries.IDs.PTOConsumer, - n => container.CycleData.LeftSample.PTOActive ? null : data.PTO.LossMap.GetTorqueLoss(n) * n); + n => container.PTOActive ? null : data.PTO.LossMap.GetTorqueLoss(n) * n); container.ModalData.AddAuxiliary(Constants.Auxiliaries.IDs.PTOConsumer, Constants.Auxiliaries.PowerPrefix + Constants.Auxiliaries.IDs.PTOConsumer); } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs index 4487d0eb16d617a334d87891f0507bad393396f7..cb1f4ecb750baf3d012f251ac7522b871bdc7706 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/VehicleContainer.cs @@ -406,6 +406,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl get { return DrivingCycle.CycleData; } } + public bool PTOActive + { + get { return DrivingCycle.PTOActive; } + } + public DrivingCycleData.DrivingCycleEntry CycleLookAhead(Meter distance) { return DrivingCycle.CycleLookAhead(distance); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs b/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs index 5c5d33f124be1016bd3658cd861853252614d74f..3eea43638fb2f0f88e4a9383db556e1510b32311 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/IDrivingCycleInfo.cs @@ -46,6 +46,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent /// </summary> CycleData CycleData { get; } + bool PTOActive { get; } + /// <summary> /// get a single driving-cycle entry at a certain distance ahead /// altitude is interpolated between sampling points, slope is averaged diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs index 81254a2372c34326cc3db2bc52872dde09cfc51b..44fef3bf3e1619b44afcf0f633ae32c402a5d5c8 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs @@ -208,8 +208,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl case 3: CurrentState.WaitPhase++; IdleController.ActivateIdle(); + PTOActive = false; return Left.StoppingTime / 2; case 2: + PTOActive = true; IdleController.ActivatePTO(); return IdleController.GetNextCycleTime(); } @@ -223,6 +225,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl case 5: CurrentState.WaitPhase++; IdleController.ActivateIdle(); + PTOActive = false; return Constants.SimulationSettings.TargetTimeInterval; case 3: case 7: @@ -233,6 +236,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl CurrentState.WaitPhase++; return Left.StoppingTime / 2 - 2 * Constants.SimulationSettings.TargetTimeInterval; case 4: + PTOActive = true; IdleController.ActivatePTO(); return IdleController.GetNextCycleTime(); } @@ -455,6 +459,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } } + public bool PTOActive { get; private set; } + public DrivingCycleData.DrivingCycleEntry CycleLookAhead(Meter distance) { var absDistance = CurrentState.Distance + distance; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/IdleControllerSwitcher.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/IdleControllerSwitcher.cs index a6a415cba37c18f50adc4a0fa706a14e62d60909..6682c6287a8cfa4f09ad3e45485abab7cff8df99 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/IdleControllerSwitcher.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/IdleControllerSwitcher.cs @@ -32,6 +32,7 @@ using System; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.Models.Connector.Ports; using TUGraz.VectoCore.OutputData; @@ -65,8 +66,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public ITnOutPort RequestPort { - set - { + set { _idleController.RequestPort = value; _ptoController.RequestPort = value; } @@ -103,8 +103,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public Second Duration { - get - { + get { if (_ptoController != null) { return _ptoController.Duration; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs index 5789c105b023e03e9e8e59c47ae0b118c02bddeb..948ab95cd8ec8ae326092065f59e54ceeaa9235a 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/MeasuredSpeedDrivingCycle.cs @@ -307,6 +307,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } } + public bool PTOActive + { + get { return false; } + } + public DrivingCycleData.DrivingCycleEntry CycleLookAhead(Meter distance) { return new DrivingCycleData.DrivingCycleEntry(CycleIterator.RightSample); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs index bfb53ef49928d6c77d4b6f264b99c0c17ba7723d..4832ec5296cf0bcc37b5aa98131841b10a4e4ab0 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/PowertrainDrivingCycle.cs @@ -183,6 +183,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } } + public bool PTOActive + { + get { return true; } + } + public DrivingCycleData.DrivingCycleEntry CycleLookAhead(Meter distance) { return new DrivingCycleData.DrivingCycleEntry() { diff --git a/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs b/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs index b74dd43c8624c43af046873cbdf7d2c1f12a0c17..194c38bb1d6439ad625666ab0475a5095ef6a5f7 100644 --- a/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs +++ b/VectoCore/VectoCoreTest/Utils/MockAuxiliaryDemand.cs @@ -63,8 +63,7 @@ namespace TUGraz.VectoCore.Tests.Utils public CycleData CycleData { - get - { + get { return new CycleData { AbsTime = 0.SI<Second>(), AbsDistance = 0.SI<Meter>(), @@ -74,6 +73,8 @@ namespace TUGraz.VectoCore.Tests.Utils } } + public bool PTOActive { get; set; } + public DrivingCycleData.DrivingCycleEntry CycleLookAhead(Meter distance) { return new DrivingCycleData.DrivingCycleEntry() { diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs index 054e95e08251d3c726bf1c58a93af0e9671c86f0..5b94e64f13ac437b60446f17072d623aff79d5eb 100644 --- a/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs +++ b/VectoCore/VectoCoreTest/Utils/MockVehicleContainer.cs @@ -190,6 +190,8 @@ namespace TUGraz.VectoCore.Tests.Utils public VectoRun.Status RunStatus { get; set; } + public bool PTOActive { get; private set; } + public void AddComponent(VectoSimulationComponent component) { Components.Add(component);