Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 20e5d2a5 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

new input parameter: look-ahead time for AT effshift

parent 3d828e54
No related branches found
No related tags found
No related merge requests found
Showing
with 50 additions and 6 deletions
......@@ -613,6 +613,12 @@ Public Class Gearbox
End Get
End Property
Public ReadOnly Property ATLookAheadTime As Second Implements IGearshiftEngineeringInputData.ATLookAheadTime
get
return Nothing
End Get
End Property
Public Overridable ReadOnly Property LoadStageShiftLines As TableData Implements IGearshiftEngineeringInputData.LoadStageShiftLines
Get
Return Nothing
......
......@@ -286,6 +286,8 @@ namespace TUGraz.VectoCommon.InputData
IList<double> LoadStageThresoldsUp { get; }
IList<double> LoadStageThresoldsDown { get; }
PerSecond MinEngineSpeedPostUpshift { get; }
Second ATLookAheadTime { get; }
}
public interface ITorqueConverterEngineeringShiftParameterInputData
......
......@@ -406,6 +406,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
public int? AllowedGearRangeFC { get { return null; } }
public PerSecond MinEngineSpeedPostUpshift { get { return null; } }
public Second ATLookAheadTime { get { return null; } }
public double? VeloictyDropFactor
{
......
......@@ -301,6 +301,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
}
}
public Second ATLookAheadTime
{
get {
if (Body["ATLookAheadTime"] == null) {
return null;
}
return Body.GetEx<double>("ATLookAheadTime").SI<Second>();
}
}
public TableData LoadStageShiftLines
{
get {
......
......@@ -119,6 +119,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
public double? VeloictyDropFactor { get { return null; } }
public PerSecond MinEngineSpeedPostUpshift { get { return null; } }
public Second ATLookAheadTime { get { return null; } }
public double? AccelerationFactor
{
......
......@@ -602,6 +602,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
VelocityDropFactor = DeclarationData.GearboxTCU.VelocityDropFactor,
AccelerationFactor = DeclarationData.GearboxTCU.AccelerationFactor,
MinEngineSpeedPostUpshift = 0.RPMtoRad(),
ATLookAheadTime = DeclarationData.Gearbox.PowershiftShiftTime
};
return retVal;
......
......@@ -461,6 +461,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
VelocityDropFactor = gsInputData.VeloictyDropFactor ?? DeclarationData.GearboxTCU.VelocityDropFactor,
AccelerationFactor = gsInputData.AccelerationFactor ?? DeclarationData.GearboxTCU.AccelerationFactor,
MinEngineSpeedPostUpshift = gsInputData.MinEngineSpeedPostUpshift ?? 0.RPMtoRad(),
ATLookAheadTime = gsInputData.ATLookAheadTime ?? DeclarationData.Gearbox.PowershiftShiftTime,
// voith gs parameters
......
......@@ -66,5 +66,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Data {
public IEnumerable<Tuple<double, double>> LoadstageThresholds { get; set; }
public PerSecond MinEngineSpeedPostUpshift { get; set; }
public Second ATLookAheadTime { get; set; }
}
}
\ No newline at end of file
......@@ -48,7 +48,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
/// <summary>
/// The shift strategy.
/// </summary>
private readonly IShiftStrategy _strategy;
internal readonly IShiftStrategy _strategy;
/// <summary>
/// Time when a gearbox shift engages a new gear (shift is finished). Is set when shifting is needed.
......@@ -368,7 +368,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return new ResponseGearShift {
Source = this,
SimulationInterval = ModelData.TractionInterruption,
GearboxPowerRequest = outTorque * (PreviousState.OutAngularVelocity + outAngularVelocity) / 2.0
GearboxPowerRequest = outTorque * (PreviousState.OutAngularVelocity + outAngularVelocity) / 2.0,
EngineSpeed = response.EngineSpeed,
EngineTorqueDemand = response.EngineTorqueDemand,
EngineTorqueDemandTotal = response.EngineTorqueDemandTotal,
EnginePowerRequest = response.EnginePowerRequest
};
}
}
......
......@@ -137,8 +137,8 @@ namespace TUGraz.VectoCore.Tests.Integration.ShiftStrategy
preprocessor.RunPreprocessing();
}
var decision = new List<Tuple<double, bool>>();
for (var v = 10.0; v < 20; v += 0.1) {
var decision = new List<Tuple<double, IResponse, ResponseDryRun>>();
for (var v = 15.0; v < 20; v += 0.1) {
vehicle.Initialize(v.KMPHtoMeterPerSecond(), 0.SI<Radian>());
container.AbsTime = 0.SI<Second>();
(container.Gearbox as Gearbox).Gear = 2;
......@@ -147,11 +147,27 @@ namespace TUGraz.VectoCore.Tests.Integration.ShiftStrategy
(container.Driver as Driver).DriverBehavior = DrivingBehavior.Accelerating;
var response = vehicle.Request(
0.SI<Second>(), 0.5.SI<Second>(), 0.5.SI<MeterPerSquareSecond>(), 0.SI<Radian>(), false);
decision.Add(Tuple.Create(v, response is ResponseGearShift /* || (container.Gearbox as ATGearbox)._strategy.NextGear.Gear > 2) */));
decision.Add(Tuple.Create(v, response, ((container.Gearbox as Gearbox)._strategy as AMTShiftStrategyOptimized).minFCResponse));
}
foreach (var tuple in decision) {
Console.WriteLine("{0}: {1}", tuple.Item1, tuple.Item2 ? "1" : "0");
var r = tuple.Item2;
var s = tuple.Item3;
var fc = r.EngineSpeed != null
? container.RunData.EngineData.ConsumptionMap.GetFuelConsumption(r.EngineTorqueDemandTotal, r.EngineSpeed).Value
.ConvertToGrammPerHour().Value
: 0;
var fc2 = s?.EngineSpeed != null
? container.RunData.EngineData.ConsumptionMap.GetFuelConsumption(s.EngineTorqueDemandTotal, s.EngineSpeed).Value
.ConvertToGrammPerHour().Value
: 0;
Console.WriteLine(
"{0}; {1}; {2}; {3}; {4}; {5}; {6}; {7}", tuple.Item1, tuple.Item2 is ResponseGearShift ? "1" : "0",
r.EngineSpeed?.AsRPM ?? 0,
r.EngineTorqueDemand?.Value() ?? 0, fc,
s?.EngineSpeed?.AsRPM ?? 0,
s?.EngineTorqueDemand?.Value() ?? 0, fc2
);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment