diff --git a/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/Models/Declaration/DeclarationData.cs index bce649997019dbf707284bf5ce185ae68a427c0b..1cd444dae52314aaec9b07656dc060bf5688b755 100644 --- a/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/Models/Declaration/DeclarationData.cs @@ -137,7 +137,7 @@ namespace TUGraz.VectoCore.Models.Declaration public static class OverSpeedEcoRoll { - public static readonly IList<DriverData.DriverMode> AllowedModes = new List<DriverData.DriverMode>() { + public static readonly IList<DriverData.DriverMode> AllowedModes = new List<DriverData.DriverMode> { DriverData.DriverMode.EcoRoll, DriverData.DriverMode.Overspeed }; @@ -187,9 +187,6 @@ namespace TUGraz.VectoCore.Models.Declaration public const double MinTimeBetweenGearshifts = 2; - - - internal static ShiftPolygon ComputeShiftPolygon(EngineFullLoadCurve fullLoadCurve, PerSecond engineIdleSpeed) { var maxTorque = fullLoadCurve.MaxLoadTorque; @@ -197,27 +194,27 @@ namespace TUGraz.VectoCore.Models.Declaration var entriesDown = new List<ShiftPolygon.ShiftPolygonEntry>(); var entriesUp = new List<ShiftPolygon.ShiftPolygonEntry>(); - entriesDown.Add(new ShiftPolygon.ShiftPolygonEntry() { + entriesDown.Add(new ShiftPolygon.ShiftPolygonEntry { AngularSpeed = engineIdleSpeed, Torque = 0.SI<NewtonMeter>() }); var tq1 = maxTorque * engineIdleSpeed / (fullLoadCurve.PreferredSpeed + fullLoadCurve.LoSpeed - engineIdleSpeed); - entriesDown.Add(new ShiftPolygon.ShiftPolygonEntry() { AngularSpeed = engineIdleSpeed, Torque = tq1 }); + entriesDown.Add(new ShiftPolygon.ShiftPolygonEntry { AngularSpeed = engineIdleSpeed, Torque = tq1 }); var speed1 = (fullLoadCurve.PreferredSpeed + fullLoadCurve.LoSpeed) / 2; - entriesDown.Add(new ShiftPolygon.ShiftPolygonEntry() { AngularSpeed = speed1, Torque = maxTorque }); + entriesDown.Add(new ShiftPolygon.ShiftPolygonEntry { AngularSpeed = speed1, Torque = maxTorque }); - entriesUp.Add(new ShiftPolygon.ShiftPolygonEntry() { + entriesUp.Add(new ShiftPolygon.ShiftPolygonEntry { AngularSpeed = fullLoadCurve.PreferredSpeed, Torque = 0.SI<NewtonMeter>() }); tq1 = maxTorque * (fullLoadCurve.PreferredSpeed - engineIdleSpeed) / (fullLoadCurve.N95hSpeed - engineIdleSpeed); - entriesUp.Add(new ShiftPolygon.ShiftPolygonEntry() { AngularSpeed = fullLoadCurve.PreferredSpeed, Torque = tq1 }); + entriesUp.Add(new ShiftPolygon.ShiftPolygonEntry { AngularSpeed = fullLoadCurve.PreferredSpeed, Torque = tq1 }); - entriesUp.Add(new ShiftPolygon.ShiftPolygonEntry() { AngularSpeed = fullLoadCurve.N95hSpeed, Torque = maxTorque }); + entriesUp.Add(new ShiftPolygon.ShiftPolygonEntry { AngularSpeed = fullLoadCurve.N95hSpeed, Torque = maxTorque }); return new ShiftPolygon(entriesDown, entriesUp); } diff --git a/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs b/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs index d9b8a81a59cd1dd079ca58cc561b77ad8b1deaaa..0588b50de3bee0d00692b0eaff162ad7b0c74a2d 100644 --- a/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/GearboxTest.cs @@ -4,7 +4,6 @@ using TUGraz.VectoCore.Exceptions; using TUGraz.VectoCore.FileIO.Reader.Impl; using TUGraz.VectoCore.Models.Connector.Ports.Impl; using TUGraz.VectoCore.Models.Simulation.Impl; -using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; @@ -69,25 +68,21 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var port = new MockTnOutPort(); gearbox.InPort().Connect(port); - var ratios = new[] { 0.0, 6.38, 4.63, 3.44, 2.59, 1.86, 1.35, 1, 0.76 }; - // the first element 0.0 is just a placeholder for axlegear, not used in this test + var ratio = 6.38; //todo: serach for a overload point in gearbox fullloadcurve //todo: serach for a overload point in engine fullloadcurve var expected = new[] { - new { gear = 1, t = 2400, n = 1200, loss = 10.108 }, - new { gear = 1, t = 2400, n = 1200, loss = 10.108 }, + new { t = 2250, n = 1200, loss = 55.0 }, //todo: calc exact loss + new { t = 2129, n = 1600, loss = 55.0 }, //todo: calc exact loss }; foreach (var exp in expected) { - var torque = (exp.t.SI<NewtonMeter>() - exp.loss.SI<NewtonMeter>()) * ratios[exp.gear]; - var angularVelocity = exp.n.RPMtoRad() / ratios[exp.gear]; + var torque = (exp.t.SI<NewtonMeter>() - exp.loss.SI<NewtonMeter>()) * ratio; + var angularVelocity = exp.n.RPMtoRad() / ratio; - gearbox.Gear = (uint)exp.gear; var response = gearbox.OutPort().Request(0.SI<Second>(), 1.SI<Second>(), torque, angularVelocity); Assert.IsInstanceOfType(response, typeof(ResponseFailOverload)); - - //var overload = response as ResponseFailOverload; } Assert.Inconclusive("Test if the intersection of two fullloadcurves is correct"); diff --git a/VectoCoreTest/VectoCoreTest.csproj b/VectoCoreTest/VectoCoreTest.csproj index ce9c7eeb04fe1d7ecadf16b0c64bf687cae4ba6c..88c58ab7a313a36a316dafe76b6e913631f0fc19 100644 --- a/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCoreTest/VectoCoreTest.csproj @@ -145,6 +145,9 @@ <None Include="TestData\Components\12t Delivery Truck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\Components\24t Coach Engine.vfld"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\Components\24t Coach LessThanTwoGears.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None>