From 6e36399740f4727594a64538e7d61913225b5908 Mon Sep 17 00:00:00 2001 From: Michael Krisper <michael.krisper@tugraz.at> Date: Tue, 11 Aug 2015 15:32:46 +0200 Subject: [PATCH] very simple first implementation of gearbox --- .../SimulationComponent/Data/GearboxData.cs | 50 ------------------- .../SimulationComponent/Impl/Gearbox.cs | 29 +++++++++-- VectoCore/VectoCore.csproj | 1 + VectoCoreTest/Models/Simulation/AuxTests.cs | 9 ++-- 4 files changed, 29 insertions(+), 60 deletions(-) diff --git a/VectoCore/Models/SimulationComponent/Data/GearboxData.cs b/VectoCore/Models/SimulationComponent/Data/GearboxData.cs index 99d6a9cdeb..3cf4eaa505 100644 --- a/VectoCore/Models/SimulationComponent/Data/GearboxData.cs +++ b/VectoCore/Models/SimulationComponent/Data/GearboxData.cs @@ -28,56 +28,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data internal readonly Dictionary<uint, GearData> _gearData = new Dictionary<uint, GearData>(); - // @@@quam: according to Raphael no longer required - //public void CalculateAverageEfficiency(CombustionEngineData engineData) - //{ - // var angularVelocityStep = (2.0 / 3.0) * (engineData.GetFullLoadCurve(0).RatedSpeed() - engineData.IdleSpeed) / 10.0; - - // var axleGearEfficiencySum = 0.0; - // var axleGearSumCount = 0; - - // foreach (var gearEntry in _gearData) { - // var gearEfficiencySum = 0.0; - // var gearSumCount = 0; - // for (var angularVelocity = engineData.IdleSpeed + angularVelocityStep; - // angularVelocity < engineData.GetFullLoadCurve(0).RatedSpeed(); - // angularVelocity += angularVelocityStep) { - // var fullLoadStationaryTorque = engineData.GetFullLoadCurve(gearEntry.Key).FullLoadStationaryTorque(angularVelocity); - // var torqueStep = (2.0 / 3.0) * fullLoadStationaryTorque / 10.0; - // for (var engineOutTorque = (1.0 / 3.0) * fullLoadStationaryTorque; - // engineOutTorque < fullLoadStationaryTorque; - // engineOutTorque += torqueStep) { - // var engineOutPower = Formulas.TorqueToPower(engineOutTorque, angularVelocity); - // var gearboxOutPower = - // Formulas.TorqueToPower( - // gearEntry.Value.LossMap.GearboxOutTorque(angularVelocity, engineOutTorque), angularVelocity); - // if (gearboxOutPower > engineOutPower) { - // gearboxOutPower = engineOutPower; - // } - - // gearEfficiencySum += ((engineOutPower - gearboxOutPower) / engineOutPower).Double(); - // gearSumCount += 1; - - - // // axle gear - // var angularVelocityAxleGear = angularVelocity / gearEntry.Value.Ratio; - // var axlegearOutPower = - // Formulas.TorqueToPower( - // AxleGearData.LossMap.GearboxOutTorque(angularVelocityAxleGear, - // Formulas.PowerToTorque(engineOutPower, angularVelocityAxleGear)), - // angularVelocityAxleGear); - // if (axlegearOutPower > engineOutPower) { - // axlegearOutPower = engineOutPower; - // } - // axleGearEfficiencySum += (axlegearOutPower / engineOutPower).Double(); - // axleGearSumCount += 1; - // } - // } - // gearEntry.Value.AverageEfficiency = gearEfficiencySum / gearSumCount; - // } - // AxleGearData.AverageEfficiency = axleGearEfficiencySum / axleGearSumCount; - //} - public int GearsCount() { return _gearData.Count; diff --git a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index c93ad34387..f312c048df 100644 --- a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -1,9 +1,11 @@ using System; +using System.Runtime.InteropServices; using TUGraz.VectoCore.Models.Connector.Ports; using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.DataBus; using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Models.SimulationComponent.Impl @@ -11,12 +13,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public class Gearbox : VectoSimulationComponent, IGearbox, ITnOutPort, ITnInPort { protected ITnOutPort Next; + private uint _gear; internal GearboxData Data; public Gearbox(IVehicleContainer container, GearboxData gearboxData) : base(container) { Data = gearboxData; + _gear = 0; } #region ITnInProvider @@ -41,21 +45,36 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl uint IGearboxInfo.Gear() { - throw new NotImplementedException(); + return _gear; } #endregion #region ITnOutPort + private GearData CurrentGear + { + get { return Data[_gear]; } + } + + IResponse ITnOutPort.Request(Second absTime, Second dt, NewtonMeter torque, PerSecond engineSpeed, bool dryRun) { - throw new NotImplementedException(); + // todo check fulloadcurve for overload + + + // todo check shiftpolygon for shifting + + + engineSpeed *= CurrentGear.Ratio; + torque = CurrentGear.LossMap.GearboxInTorque(engineSpeed, torque); + + return Next.Request(absTime, dt, torque, engineSpeed); } public IResponse Initialize(NewtonMeter torque, PerSecond engineSpeed) { - // todo: add gearbox losses + _gear = 0; return Next.Initialize(torque, engineSpeed); } @@ -74,12 +93,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected override void DoWriteModalResults(IModalDataWriter writer) { - throw new NotImplementedException(); + //todo implement } protected override void DoCommitSimulationStep() { - throw new NotImplementedException(); + //todo implement } #endregion diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj index 7dc29ca4aa..8ed691bf8b 100644 --- a/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore.csproj @@ -276,6 +276,7 @@ <EmbeddedResource Include="Resources\Declaration\DefaultTC.vtcc" /> <EmbeddedResource Include="Resources\Declaration\VCDV\parameters.csv" /> <EmbeddedResource Include="Resources\Declaration\WHTC-Weighting-Factors.csv" /> + <EmbeddedResource Include="Resources\Declaration\VAUX\ALT-Tech.csv" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. diff --git a/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCoreTest/Models/Simulation/AuxTests.cs index f96d05f25a..cb09ce6051 100644 --- a/VectoCoreTest/Models/Simulation/AuxTests.cs +++ b/VectoCoreTest/Models/Simulation/AuxTests.cs @@ -18,15 +18,14 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation [TestMethod] public void AuxWriteModFileSumFile() { - var dataWriter = new ModalDataWriter(@"40t_Long_Haul_Truck_Long_Haul_Empty Loading.vmod", - SimulatorFactory.FactoryMode.EngineeringMode); + var dataWriter = new ModalDataWriter(@"40t_Long_Haul_Truck_Long_Haul_Empty Loading AUX.vmod"); dataWriter.AddAuxiliary("FAN"); dataWriter.AddAuxiliary("PS"); dataWriter.AddAuxiliary("STP"); dataWriter.AddAuxiliary("ES"); dataWriter.AddAuxiliary("AC"); - var sumWriter = new SummaryFileWriter(@"40t_Long_Haul_Truck.vsum"); + var sumWriter = new SummaryFileWriter(@"40t_Long_Haul_Truck AUX.vsum"); var deco = new SumWriterDecoratorFullPowertrain(sumWriter, "", "", ""); var container = new VehicleContainer(dataWriter, deco); @@ -67,9 +66,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var testColumns = new[] { "Paux_FAN", "Paux_STP", "Paux_AC", "Paux_ES", "Paux_PS", "Paux" }; ResultFileHelper.TestModFile(@"TestData\Results\EngineOnlyCycles\40t_Long_Haul_Truck_Long_Haul_Empty Loading.vmod", - @"40t_Long_Haul_Truck_Long_Haul_Empty Loading.vmod", testColumns); + @"40t_Long_Haul_Truck_Long_Haul_Empty Loading AUX.vmod", testColumns); ResultFileHelper.TestSumFile(@"40t_Long_Haul_Truck.vsum", - @"TestData\Results\EngineOnlyCycles\40t_Long_Haul_Truck.vsum"); + @"TestData\Results\EngineOnlyCycles\40t_Long_Haul_Truck AUX.vsum"); } [TestMethod] -- GitLab