Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 660d8d19 authored by Michael KRISPER's avatar Michael KRISPER Committed by Markus Quaritsch
Browse files

Pull request #896: Feature/VECTO-1628 gear disabling

Merge in VECTO/vecto-sim from feature/VECTO-1628-gear-disabling to develop

* commit 'b1fbc513':
  DataAdapter: Corrected errors when the limits are not defined (null)
  Testfiles added to project
  TorqueLimitTest: Added testcases for disabled gears (some valid and some invalid configurations)
  EngineeringDataAdapter: Implemented disabling gears VECTO-1628
  Added Files for TestCases VECTO-1628
  DeclarationDataAdapter: implemented filter logic for disabling the upper gears with TorqueLimits
  DeclarationInputData: Added comment for TorqueLimits with Parameternumber
parents d77f50a4 b1fbc513
Branches
Tags
No related merge requests found
Showing
with 906 additions and 24 deletions
...@@ -128,6 +128,10 @@ namespace TUGraz.VectoCommon.InputData ...@@ -128,6 +128,10 @@ namespace TUGraz.VectoCommon.InputData
///// </summary> ///// </summary>
//string Rim { get; } // deprecated //string Rim { get; } // deprecated
/// <summary>
/// P196, P197 TorqueLimits: Gear [-], MaxTorque [Nm]
/// cf. VECTO Input Parameters.xlsx
/// </summary>
IList<ITorqueLimitInputData> TorqueLimits { get; } IList<ITorqueLimitInputData> TorqueLimits { get; }
/// <summary> /// <summary>
......
...@@ -236,29 +236,55 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -236,29 +236,55 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement, gearbox.Type); retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement, gearbox.Type);
retVal.EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime; retVal.EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime;
var limits = vehicle.TorqueLimits.ToDictionary(e => e.Gear); var limits = vehicle.TorqueLimits.ToDictionary(e => e.Gear);
var numGears = gearbox.Gears.Count; var gears = FilterDisabledGears(gearbox.Gears, limits);
var numGears = gears.Count;
var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1); var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1);
fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true); fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true);
fullLoadCurves[0].EngineData = retVal; fullLoadCurves[0].EngineData = retVal;
foreach (var gear in gearbox.Gears) { foreach (var gear in gears) {
var maxTorque = VectoMath.Min( var maxTorque = VectoMath.Min(
GbxMaxTorque(gear, numGears, fullLoadCurves[0].MaxTorque), GbxMaxTorque(gear, numGears, fullLoadCurves[0].MaxTorque),
VehMaxTorque(gear, numGears, limits, fullLoadCurves[0].MaxTorque)); VehMaxTorque(gear, numGears, vehicle.TorqueLimits.FirstOrDefault(e => e.Gear == gear.Gear)?.MaxTorque,
fullLoadCurves[0].MaxTorque));
fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque); fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque);
} }
retVal.FullLoadCurves = fullLoadCurves; retVal.FullLoadCurves = fullLoadCurves;
return retVal; return retVal;
} }
private static NewtonMeter VehMaxTorque(ITransmissionInputData gear, int numGears, /// <summary>
Dictionary<int, ITorqueLimitInputData> limits, /// Filters the gears based on disabling rule: If the last (or the second last) torque limit on vehicle level is 0, then the gear should be disabled.
/// </summary>
/// <remarks>VECTO-1628</remarks>
internal static IList<ITransmissionInputData> FilterDisabledGears(IList<ITransmissionInputData> gears, Dictionary<int, ITorqueLimitInputData> limits) {
if (gears != null && gears.Count > 0) {
var lastGear = gears.Last().Gear;
if (limits.ContainsKey(lastGear) && limits[lastGear].MaxTorque.IsEqual(0)) {
gears.Remove(gears.Last());
limits.Remove(lastGear);
lastGear = gears.Last().Gear;
if (limits.ContainsKey(lastGear) && limits[lastGear].MaxTorque.IsEqual(0)) {
gears.Remove(gears.Last());
limits.Remove(lastGear);
}
}
foreach (var l in limits) {
if (l.Value.MaxTorque.IsEqual(0))
throw new VectoException($"Vehicle TorqueLimits: MaxTorque for Gear {l.Key} must not be 0.");
}
}
return gears;
}
private static NewtonMeter VehMaxTorque(ITransmissionInputData gear, int numGears, NewtonMeter maxGearTorque,
NewtonMeter maxEngineTorque) NewtonMeter maxEngineTorque)
{ {
if (gear.Gear - 1 >= numGears / 2) { if (gear.Gear - 1 >= numGears / 2) {
// only upper half of gears can limit if max-torque <= 0.95 of engine max torque // only upper half of gears can limit if max-torque <= 0.95 of engine max torque
if (limits.ContainsKey(gear.Gear) && if (maxGearTorque != null && maxGearTorque <= DeclarationData.Engine.TorqueLimitVehicleFactor * maxEngineTorque) {
limits[gear.Gear].MaxTorque <= DeclarationData.Engine.TorqueLimitVehicleFactor * maxEngineTorque) { return maxGearTorque;
return limits[gear.Gear].MaxTorque;
} }
} }
return null; return null;
...@@ -308,7 +334,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -308,7 +334,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
if (!SupportedGearboxTypes.Contains(gearbox.Type)) { if (!SupportedGearboxTypes.Contains(gearbox.Type)) {
throw new VectoSimulationException("Unsupported gearbox type: {0}!", retVal.Type); throw new VectoSimulationException("Unsupported gearbox type: {0}!", retVal.Type);
} }
var gearsInput = gearbox.Gears;
var limits = inputData.TorqueLimits?.ToDictionary(e => e.Gear) ?? new Dictionary<int, ITorqueLimitInputData>();
var gearsInput = FilterDisabledGears(gearbox.Gears, limits);
if (gearsInput.Count < 1) { if (gearsInput.Count < 1) {
throw new VectoSimulationException( throw new VectoSimulationException(
"At least one Gear-Entry must be defined in Gearbox!"); "At least one Gear-Entry must be defined in Gearbox!");
...@@ -316,8 +344,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -316,8 +344,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
SetDeclarationData(retVal); SetDeclarationData(retVal);
var gearDifferenceRatio = gearbox.Type.AutomaticTransmission() && gearbox.Gears.Count > 2 var gearDifferenceRatio = gearbox.Type.AutomaticTransmission() && gearsInput.Count > 2
? gearbox.Gears[0].Ratio / gearbox.Gears[1].Ratio ? gearsInput[0].Ratio / gearsInput[1].Ratio
: 1.0; : 1.0;
var gears = new Dictionary<uint, GearData>(); var gears = new Dictionary<uint, GearData>();
...@@ -332,7 +360,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -332,7 +360,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
var shiftPolygon = shiftPolygonCalc != null var shiftPolygon = shiftPolygonCalc != null
? shiftPolygonCalc.ComputeDeclarationShiftPolygon( ? shiftPolygonCalc.ComputeDeclarationShiftPolygon(
gearbox.Type, (int)i, engine.FullLoadCurves[i + 1], gearbox.Gears, engine, axlegearRatio, dynamicTyreRadius) gearbox.Type, (int)i, engine.FullLoadCurves[i + 1], gearsInput, engine, axlegearRatio, dynamicTyreRadius)
: DeclarationData.Gearbox.ComputeShiftPolygon( : DeclarationData.Gearbox.ComputeShiftPolygon(
gearbox.Type, (int)i, engine.FullLoadCurves[i + 1], gearbox.Type, (int)i, engine.FullLoadCurves[i + 1],
gearsInput, engine, gearsInput, engine,
......
...@@ -160,7 +160,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -160,7 +160,6 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
{ {
var engine = vehicle.Components.EngineInputData; var engine = vehicle.Components.EngineInputData;
var gbx = vehicle.Components.GearboxInputData; var gbx = vehicle.Components.GearboxInputData;
var torqueLimits = vehicle.TorqueLimits;
var torqueConverter = vehicle.Components.TorqueConverterInputData; var torqueConverter = vehicle.Components.TorqueConverterInputData;
var tankSystem = vehicle.TankSystem; var tankSystem = vehicle.TankSystem;
...@@ -182,13 +181,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -182,13 +181,17 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
retVal.Inertia = engine.Inertia + retVal.Inertia = engine.Inertia +
(gbx != null && gbx.Type.AutomaticTransmission() ? torqueConverter.Inertia : 0.SI<KilogramSquareMeter>()); (gbx != null && gbx.Type.AutomaticTransmission() ? torqueConverter.Inertia : 0.SI<KilogramSquareMeter>());
retVal.EngineStartTime = engine.EngineStartTime ?? DeclarationData.Engine.DefaultEngineStartTime; retVal.EngineStartTime = engine.EngineStartTime ?? DeclarationData.Engine.DefaultEngineStartTime;
var limits = torqueLimits.ToDictionary(e => e.Gear); var limits = vehicle.TorqueLimits?.ToDictionary(e => e.Gear) ?? new Dictionary<int, ITorqueLimitInputData>();
var numGears = gbx == null ? 0 : gbx.Gears.Count; IList<ITransmissionInputData> gears = null;
if (gbx != null){
gears = DeclarationDataAdapter.FilterDisabledGears(gbx.Gears, limits);
}
var numGears = gbx == null ? 0 : gears.Count;
var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1); var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1);
fullLoadCurves[0] = FullLoadCurveReader.Create(engine.EngineModes.First().FullLoadCurve); fullLoadCurves[0] = FullLoadCurveReader.Create(engine.EngineModes.First().FullLoadCurve);
fullLoadCurves[0].EngineData = retVal; fullLoadCurves[0].EngineData = retVal;
if (gbx != null) { if (gbx != null) {
foreach (var gear in gbx.Gears) { foreach (var gear in gears) {
var maxTorque = VectoMath.Min(gear.MaxTorque, limits.ContainsKey(gear.Gear) ? limits[gear.Gear].MaxTorque : null); var maxTorque = VectoMath.Min(gear.MaxTorque, limits.ContainsKey(gear.Gear) ? limits[gear.Gear].MaxTorque : null);
fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque); fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque);
} }
...@@ -278,15 +281,20 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -278,15 +281,20 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
} }
retVal.ATEcoRollReleaseLockupClutch = adas != null && adas.EcoRoll != EcoRollType.None && retVal.Type.AutomaticTransmission() ? adas.ATEcoRollReleaseLockupClutch.Value : false; retVal.ATEcoRollReleaseLockupClutch = adas != null && adas.EcoRoll != EcoRollType.None && retVal.Type.AutomaticTransmission() ? adas.ATEcoRollReleaseLockupClutch.Value : false;
//var gears = gearbox.Gears; var limits = inputData.JobInputData.Vehicle.TorqueLimits.ToDictionary(e => e.Gear);
if (gearbox.Gears.Count < 2) { var gearsInput = DeclarationDataAdapter.FilterDisabledGears(gearbox.Gears, limits);
if (gearsInput.Count < 2) {
throw new VectoSimulationException("At least two Gear-Entries must be defined in Gearbox!");
}
if (gearsInput.Count < 2) {
throw new VectoSimulationException("At least two Gear-Entries must be defined in Gearbox!"); throw new VectoSimulationException("At least two Gear-Entries must be defined in Gearbox!");
} }
SetEngineeringData(gearbox, gearshiftData, retVal); SetEngineeringData(gearbox, gearshiftData, retVal);
var gearDifferenceRatio = gearbox.Type.AutomaticTransmission() && gearbox.Gears.Count > 2 var gearDifferenceRatio = gearbox.Type.AutomaticTransmission() && gearsInput.Count > 2
? gearbox.Gears[0].Ratio / gearbox.Gears[1].Ratio ? gearsInput[0].Ratio / gearsInput[1].Ratio
: 1.0; : 1.0;
var gears = new Dictionary<uint, GearData>(); var gears = new Dictionary<uint, GearData>();
...@@ -296,19 +304,19 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter ...@@ -296,19 +304,19 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
? ShiftPolygonReader.Create(torqueConverter.ShiftPolygon) ? ShiftPolygonReader.Create(torqueConverter.ShiftPolygon)
: DeclarationData.TorqueConverter.ComputeShiftPolygon(engineData.FullLoadCurves[0]); : DeclarationData.TorqueConverter.ComputeShiftPolygon(engineData.FullLoadCurves[0]);
} }
for (uint i = 0; i < gearbox.Gears.Count; i++) { for (uint i = 0; i < gearsInput.Count; i++) {
var gear = gearbox.Gears[(int)i]; var gear = gearsInput[(int)i];
var lossMap = CreateGearLossMap(gear, i, true, VehicleCategory.Unknown, gearbox.Type); var lossMap = CreateGearLossMap(gear, i, true, VehicleCategory.Unknown, gearbox.Type);
var shiftPolygon = gear.ShiftPolygon != null && gear.ShiftPolygon.SourceType != DataSourceType.Missing var shiftPolygon = gear.ShiftPolygon != null && gear.ShiftPolygon.SourceType != DataSourceType.Missing
? ShiftPolygonReader.Create(gear.ShiftPolygon) ? ShiftPolygonReader.Create(gear.ShiftPolygon)
: shiftPolygonCalc != null : shiftPolygonCalc != null
? shiftPolygonCalc.ComputeDeclarationShiftPolygon( ? shiftPolygonCalc.ComputeDeclarationShiftPolygon(
gearbox.Type, (int)i, engineData?.FullLoadCurves[i + 1], gearbox.Gears, gearbox.Type, (int)i, engineData?.FullLoadCurves[i + 1], gearsInput,
engineData, engineData,
axlegearRatio, dynamicTyreRadius) axlegearRatio, dynamicTyreRadius)
: DeclarationData.Gearbox.ComputeShiftPolygon( : DeclarationData.Gearbox.ComputeShiftPolygon(
gearbox.Type, (int)i, engineData?.FullLoadCurves[i + 1], gearbox.Gears, gearbox.Type, (int)i, engineData?.FullLoadCurves[i + 1], gearsInput,
engineData, engineData,
axlegearRatio, dynamicTyreRadius); axlegearRatio, dynamicTyreRadius);
var gearData = new GearData { var gearData = new GearData {
......
...@@ -35,6 +35,7 @@ using System.IO; ...@@ -35,6 +35,7 @@ using System.IO;
using System.Linq; using System.Linq;
using Ninject; using Ninject;
using NUnit.Framework; using NUnit.Framework;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils; using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.JSON;
...@@ -43,6 +44,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; ...@@ -43,6 +44,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.Tests.Utils;
using Assert = NUnit.Framework.Assert; using Assert = NUnit.Framework.Assert;
namespace TUGraz.VectoCore.Tests.Integration namespace TUGraz.VectoCore.Tests.Integration
...@@ -76,6 +78,13 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -76,6 +78,13 @@ namespace TUGraz.VectoCore.Tests.Integration
private const string DeclarationVehicle9GearsFord = private const string DeclarationVehicle9GearsFord =
@"TestData\Integration\DeclarationMode\EngineSpeedTooHigh\vecto_vehicle-sample_9gears.xml"; @"TestData\Integration\DeclarationMode\EngineSpeedTooHigh\vecto_vehicle-sample_9gears.xml";
const string VehicleLimitJobDecl_disableGear6 = @"Testdata\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear6.vecto";
const string VehicleLimitJobDecl_disableGear6and5 = @"Testdata\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear6and5.vecto";
const string VehicleLimitJobDecl_disableGear5invalid = @"Testdata\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear5invalid.vecto";
const string VehicleLimitJobDecl_disableGear4invalid = @"Testdata\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear4invalid.vecto";
const string VehicleLimitJobDecl_disableGear6and4invalid = @"Testdata\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear6and4invalid.vecto";
const string VehicleLimitJobDecl_disableGear1invalid = @"Testdata\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear1invalid.vecto";
protected IXMLInputDataReader xmlInputReader; protected IXMLInputDataReader xmlInputReader;
private IKernel _kernel; private IKernel _kernel;
...@@ -220,6 +229,45 @@ namespace TUGraz.VectoCore.Tests.Integration ...@@ -220,6 +229,45 @@ namespace TUGraz.VectoCore.Tests.Integration
Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException))); Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException)));
} }
[Category("LongRunning"),
TestCase(VehicleLimitJobDecl_disableGear6),
TestCase(VehicleLimitJobDecl_disableGear6and5)]
public void TestRunDisableGearsWithTorqueLimitSimulations(string file)
{
var fileWriter = new FileOutputWriter(file);
var sumData = new SummaryDataContainer(fileWriter);
var inputDataProvider = JSONInputDataFactory.ReadJsonJob(file);
var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter) {
WriteModalResults = true
};
var jobContainer = new JobContainer(sumData);
jobContainer.AddRuns(factory);
jobContainer.Execute();
jobContainer.WaitFinished();
Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat(jobContainer.Runs.Select(r => r.ExecException)));
}
[TestCase(VehicleLimitJobDecl_disableGear5invalid),
TestCase(VehicleLimitJobDecl_disableGear4invalid),
TestCase(VehicleLimitJobDecl_disableGear6and4invalid),
TestCase(VehicleLimitJobDecl_disableGear1invalid)]
public void TestRunDisableGearsInvalid(string file)
{
var fileWriter = new FileOutputWriter(file);
var sumData = new SummaryDataContainer(fileWriter);
var inputDataProvider = JSONInputDataFactory.ReadJsonJob(file);
var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter);
var jobContainer = new JobContainer(sumData);
AssertHelper.Exception<VectoException>(() => jobContainer.AddRuns(factory), messageContains:"Vehicle TorqueLimits: MaxTorque for Gear ");
}
[Category("LongRunning"), TestCase(GearboxSpeedLimitJobDecl)] [Category("LongRunning"), TestCase(GearboxSpeedLimitJobDecl)]
public void TestRunGbxSpeedLimitedSimulations(string file) public void TestRunGbxSpeedLimitedSimulations(string file)
{ {
......
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T10:06:43.0936564Z",
"AppVersion": "3",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": true,
"VehCat": "RigidTruck",
"CurbWeight": 4670.0,
"CurbWeightExtra": 0.0,
"Loading": 0.0,
"MassMax": 11.99,
"CdA": 4.83,
"rdyn": 0.0,
"CdCorrMode": "CdofVdecl",
"CdCorrFile": "",
"Retarder": {
"Type": "None",
"Ratio": 0.0,
"File": ""
},
"Angledrive": {
"Type": "None",
"Ratio": 0.0,
"LossMap": ""
},
"PTO": {
"Type": "None",
"LossMap": "",
"Cycle": ""
},
"TorqueLimits": {
"1": 0
},
"AxleConfig": {
"Type": "4x2",
"Axles": [
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0065,
"FzISO": 20850.0
},
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0075,
"FzISO": 20850.0
}
]
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T10:06:43.0936564Z",
"AppVersion": "3",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": true,
"VehCat": "RigidTruck",
"CurbWeight": 4670.0,
"CurbWeightExtra": 0.0,
"Loading": 0.0,
"MassMax": 11.99,
"CdA": 4.83,
"rdyn": 0.0,
"CdCorrMode": "CdofVdecl",
"CdCorrFile": "",
"Retarder": {
"Type": "None",
"Ratio": 0.0,
"File": ""
},
"Angledrive": {
"Type": "None",
"Ratio": 0.0,
"LossMap": ""
},
"PTO": {
"Type": "None",
"LossMap": "",
"Cycle": ""
},
"TorqueLimits": {
"4": 0
},
"AxleConfig": {
"Type": "4x2",
"Axles": [
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0065,
"FzISO": 20850.0
},
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0075,
"FzISO": 20850.0
}
]
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T10:06:43.0936564Z",
"AppVersion": "3",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": true,
"VehCat": "RigidTruck",
"CurbWeight": 4670.0,
"CurbWeightExtra": 0.0,
"Loading": 0.0,
"MassMax": 11.99,
"CdA": 4.83,
"rdyn": 0.0,
"CdCorrMode": "CdofVdecl",
"CdCorrFile": "",
"Retarder": {
"Type": "None",
"Ratio": 0.0,
"File": ""
},
"Angledrive": {
"Type": "None",
"Ratio": 0.0,
"LossMap": ""
},
"PTO": {
"Type": "None",
"LossMap": "",
"Cycle": ""
},
"TorqueLimits": {
"5": 0
},
"AxleConfig": {
"Type": "4x2",
"Axles": [
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0065,
"FzISO": 20850.0
},
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0075,
"FzISO": 20850.0
}
]
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T10:06:43.0936564Z",
"AppVersion": "3",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": true,
"VehCat": "RigidTruck",
"CurbWeight": 4670.0,
"CurbWeightExtra": 0.0,
"Loading": 0.0,
"MassMax": 11.99,
"CdA": 4.83,
"rdyn": 0.0,
"CdCorrMode": "CdofVdecl",
"CdCorrFile": "",
"Retarder": {
"Type": "None",
"Ratio": 0.0,
"File": ""
},
"Angledrive": {
"Type": "None",
"Ratio": 0.0,
"LossMap": ""
},
"PTO": {
"Type": "None",
"LossMap": "",
"Cycle": ""
},
"TorqueLimits": {
"6": 0
},
"AxleConfig": {
"Type": "4x2",
"Axles": [
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0065,
"FzISO": 20850.0
},
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0075,
"FzISO": 20850.0
}
]
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T10:06:43.0936564Z",
"AppVersion": "3",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": true,
"VehCat": "RigidTruck",
"CurbWeight": 4670.0,
"CurbWeightExtra": 0.0,
"Loading": 0.0,
"MassMax": 11.99,
"CdA": 4.83,
"rdyn": 0.0,
"CdCorrMode": "CdofVdecl",
"CdCorrFile": "",
"Retarder": {
"Type": "None",
"Ratio": 0.0,
"File": ""
},
"Angledrive": {
"Type": "None",
"Ratio": 0.0,
"LossMap": ""
},
"PTO": {
"Type": "None",
"LossMap": "",
"Cycle": ""
},
"TorqueLimits": {
"4": 0,
"6": 0
},
"AxleConfig": {
"Type": "4x2",
"Axles": [
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0065,
"FzISO": 20850.0
},
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0075,
"FzISO": 20850.0
}
]
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T10:06:43.0936564Z",
"AppVersion": "3",
"FileVersion": 7
},
"Body": {
"SavedInDeclMode": true,
"VehCat": "RigidTruck",
"CurbWeight": 4670.0,
"CurbWeightExtra": 0.0,
"Loading": 0.0,
"MassMax": 11.99,
"CdA": 4.83,
"rdyn": 0.0,
"CdCorrMode": "CdofVdecl",
"CdCorrFile": "",
"Retarder": {
"Type": "None",
"Ratio": 0.0,
"File": ""
},
"Angledrive": {
"Type": "None",
"Ratio": 0.0,
"LossMap": ""
},
"PTO": {
"Type": "None",
"LossMap": "",
"Cycle": ""
},
"TorqueLimits": {
"5": 0,
"6": 0
},
"AxleConfig": {
"Type": "4x2",
"Axles": [
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.0065,
"FzISO": 20850.0
},
{
"Inertia": 6.5,
"Wheels": "265/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.0075,
"FzISO": 20850.0
}
]
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T15:21:02.8206564Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": true,
"EngineOnlyMode": false,
"VehicleFile": "Class2_RigidTruck_tqLimit-disableGear1invalid.vveh",
"EngineFile": "Engine_175kW_6.8l.veng",
"GearboxFile": "MT_6.vgbx",
"AuxiliaryAssembly": "Classic",
"AuxiliaryVersion": "CLASSIC",
"AdvancedAuxiliaryFilePath": "",
"Aux": [
{
"ID": "FAN",
"Type": "Fan",
"Technology": [
"Belt driven or driven via transm. - Electronically controlled visco clutch"
]
},
{
"ID": "STP",
"Type": "Steering pump",
"Technology": [
"Fixed displacement with elec. control"
]
},
{
"ID": "AC",
"Type": "HVAC",
"Technology": [
"Default"
]
},
{
"ID": "ES",
"Type": "Electric System",
"Technology": [
"Standard technology"
]
},
{
"ID": "PS",
"Type": "Pneumatic System",
"Technology": [
"Medium Supply 1-stage + ESS + AMS"
]
}
],
"StartStop": {
"Enabled": false,
"MaxSpeed": 5.0,
"MinTime": 5.0,
"Delay": 5.0
},
"OverSpeedEcoRoll": {
"Mode": "Overspeed",
"MinSpeed": 50.0,
"OverSpeed": 5.0,
"UnderSpeed": 5.0
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T15:21:02.8206564Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": true,
"EngineOnlyMode": false,
"VehicleFile": "Class2_RigidTruck_tqLimit-disableGear4invalid.vveh",
"EngineFile": "Engine_175kW_6.8l.veng",
"GearboxFile": "MT_6.vgbx",
"AuxiliaryAssembly": "Classic",
"AuxiliaryVersion": "CLASSIC",
"AdvancedAuxiliaryFilePath": "",
"Aux": [
{
"ID": "FAN",
"Type": "Fan",
"Technology": [
"Belt driven or driven via transm. - Electronically controlled visco clutch"
]
},
{
"ID": "STP",
"Type": "Steering pump",
"Technology": [
"Fixed displacement with elec. control"
]
},
{
"ID": "AC",
"Type": "HVAC",
"Technology": [
"Default"
]
},
{
"ID": "ES",
"Type": "Electric System",
"Technology": [
"Standard technology"
]
},
{
"ID": "PS",
"Type": "Pneumatic System",
"Technology": [
"Medium Supply 1-stage + ESS + AMS"
]
}
],
"StartStop": {
"Enabled": false,
"MaxSpeed": 5.0,
"MinTime": 5.0,
"Delay": 5.0
},
"OverSpeedEcoRoll": {
"Mode": "Overspeed",
"MinSpeed": 50.0,
"OverSpeed": 5.0,
"UnderSpeed": 5.0
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T15:21:02.8206564Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": true,
"EngineOnlyMode": false,
"VehicleFile": "Class2_RigidTruck_tqLimit-disableGear5invalid.vveh",
"EngineFile": "Engine_175kW_6.8l.veng",
"GearboxFile": "MT_6.vgbx",
"AuxiliaryAssembly": "Classic",
"AuxiliaryVersion": "CLASSIC",
"AdvancedAuxiliaryFilePath": "",
"Aux": [
{
"ID": "FAN",
"Type": "Fan",
"Technology": [
"Belt driven or driven via transm. - Electronically controlled visco clutch"
]
},
{
"ID": "STP",
"Type": "Steering pump",
"Technology": [
"Fixed displacement with elec. control"
]
},
{
"ID": "AC",
"Type": "HVAC",
"Technology": [
"Default"
]
},
{
"ID": "ES",
"Type": "Electric System",
"Technology": [
"Standard technology"
]
},
{
"ID": "PS",
"Type": "Pneumatic System",
"Technology": [
"Medium Supply 1-stage + ESS + AMS"
]
}
],
"StartStop": {
"Enabled": false,
"MaxSpeed": 5.0,
"MinTime": 5.0,
"Delay": 5.0
},
"OverSpeedEcoRoll": {
"Mode": "Overspeed",
"MinSpeed": 50.0,
"OverSpeed": 5.0,
"UnderSpeed": 5.0
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T15:21:02.8206564Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": true,
"EngineOnlyMode": false,
"VehicleFile": "Class2_RigidTruck_tqLimit-disableGear6.vveh",
"EngineFile": "Engine_175kW_6.8l.veng",
"GearboxFile": "MT_6.vgbx",
"AuxiliaryAssembly": "Classic",
"AuxiliaryVersion": "CLASSIC",
"AdvancedAuxiliaryFilePath": "",
"Aux": [
{
"ID": "FAN",
"Type": "Fan",
"Technology": [
"Belt driven or driven via transm. - Electronically controlled visco clutch"
]
},
{
"ID": "STP",
"Type": "Steering pump",
"Technology": [
"Fixed displacement with elec. control"
]
},
{
"ID": "AC",
"Type": "HVAC",
"Technology": [
"Default"
]
},
{
"ID": "ES",
"Type": "Electric System",
"Technology": [
"Standard technology"
]
},
{
"ID": "PS",
"Type": "Pneumatic System",
"Technology": [
"Medium Supply 1-stage + ESS + AMS"
]
}
],
"StartStop": {
"Enabled": false,
"MaxSpeed": 5.0,
"MinTime": 5.0,
"Delay": 5.0
},
"OverSpeedEcoRoll": {
"Mode": "Overspeed",
"MinSpeed": 50.0,
"OverSpeed": 5.0,
"UnderSpeed": 5.0
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T15:21:02.8206564Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": true,
"EngineOnlyMode": false,
"VehicleFile": "Class2_RigidTruck_tqLimit-disableGear6and4invalid.vveh",
"EngineFile": "Engine_175kW_6.8l.veng",
"GearboxFile": "MT_6.vgbx",
"AuxiliaryAssembly": "Classic",
"AuxiliaryVersion": "CLASSIC",
"AdvancedAuxiliaryFilePath": "",
"Aux": [
{
"ID": "FAN",
"Type": "Fan",
"Technology": [
"Belt driven or driven via transm. - Electronically controlled visco clutch"
]
},
{
"ID": "STP",
"Type": "Steering pump",
"Technology": [
"Fixed displacement with elec. control"
]
},
{
"ID": "AC",
"Type": "HVAC",
"Technology": [
"Default"
]
},
{
"ID": "ES",
"Type": "Electric System",
"Technology": [
"Standard technology"
]
},
{
"ID": "PS",
"Type": "Pneumatic System",
"Technology": [
"Medium Supply 1-stage + ESS + AMS"
]
}
],
"StartStop": {
"Enabled": false,
"MaxSpeed": 5.0,
"MinTime": 5.0,
"Delay": 5.0
},
"OverSpeedEcoRoll": {
"Mode": "Overspeed",
"MinSpeed": 50.0,
"OverSpeed": 5.0,
"UnderSpeed": 5.0
}
}
}
\ No newline at end of file
{
"Header": {
"CreatedBy": " ()",
"Date": "2016-10-13T15:21:02.8206564Z",
"AppVersion": "3",
"FileVersion": 3
},
"Body": {
"SavedInDeclMode": true,
"EngineOnlyMode": false,
"VehicleFile": "Class2_RigidTruck_tqLimit-disableGear6and5.vveh",
"EngineFile": "Engine_175kW_6.8l.veng",
"GearboxFile": "MT_6.vgbx",
"AuxiliaryAssembly": "Classic",
"AuxiliaryVersion": "CLASSIC",
"AdvancedAuxiliaryFilePath": "",
"Aux": [
{
"ID": "FAN",
"Type": "Fan",
"Technology": [
"Belt driven or driven via transm. - Electronically controlled visco clutch"
]
},
{
"ID": "STP",
"Type": "Steering pump",
"Technology": [
"Fixed displacement with elec. control"
]
},
{
"ID": "AC",
"Type": "HVAC",
"Technology": [
"Default"
]
},
{
"ID": "ES",
"Type": "Electric System",
"Technology": [
"Standard technology"
]
},
{
"ID": "PS",
"Type": "Pneumatic System",
"Technology": [
"Medium Supply 1-stage + ESS + AMS"
]
}
],
"StartStop": {
"Enabled": false,
"MaxSpeed": 5.0,
"MinTime": 5.0,
"Delay": 5.0
},
"OverSpeedEcoRoll": {
"Mode": "Overspeed",
"MinSpeed": 50.0,
"OverSpeed": 5.0,
"UnderSpeed": 5.0
}
}
}
\ No newline at end of file
...@@ -1399,12 +1399,48 @@ ...@@ -1399,12 +1399,48 @@
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-910.vveh"> <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-910.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-disableGear1invalid.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-disableGear4invalid.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-disableGear5invalid.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-disableGear6.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-disableGear6and4invalid.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_tqLimit-disableGear6and5.vveh">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-850_DECL.vecto"> <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-850_DECL.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-910_DECL.vecto"> <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-910_DECL.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear1invalid.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear4invalid.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear5invalid.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear6.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear6and4invalid.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Class2_RigidTruck_vehTqLimit-disableGear6and5.vecto">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Engine_175kW_6.8l.veng"> <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_VehTorqueLimits\Engine_175kW_6.8l.veng">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment