diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb index 5de38f5bc36b47d1f2bbf4f39cc11b9d8d1691e8..dce33f47382f31ab676918b028ae12c505d7eb13 100644 --- a/VECTO/GUI/VehicleForm.vb +++ b/VECTO/GUI/VehicleForm.vb @@ -17,6 +17,7 @@ Imports TUGraz.VectoCommon.InputData Imports TUGraz.VectoCommon.Models Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore.InputData.FileIO.JSON +Imports TUGraz.VectoCore.InputData.Impl Imports TUGraz.VectoCore.Models.Declaration ''' <summary> @@ -33,6 +34,11 @@ Public Class VehicleForm Inertia = 6 End Enum + Private Enum TorqueLimitsTbl + Gear = 0 + MaxTorque = 1 + End Enum + Private _axlDlog As VehicleAxleDialog Private _hdVclass As String Private _vehFile As String @@ -63,31 +69,31 @@ Public Class VehicleForm CbCdMode.ValueMember = "Value" CbCdMode.DisplayMember = "Label" CbCdMode.DataSource = [Enum].GetValues(GetType(CrossWindCorrectionMode)) _ - .Cast (Of CrossWindCorrectionMode) _ + .Cast(Of CrossWindCorrectionMode) _ .Select(Function(mode) New With {Key .Value = mode, .Label = mode.GetLabel()}).ToList() CbRtType.ValueMember = "Value" CbRtType.DisplayMember = "Label" CbRtType.DataSource = [Enum].GetValues(GetType(RetarderType)) _ - .Cast (Of RetarderType) _ + .Cast(Of RetarderType) _ .Select(Function(type) New With {Key .Value = type, .Label = type.GetLabel()}).ToList() CbAxleConfig.ValueMember = "Value" CbAxleConfig.DisplayMember = "Label" CbAxleConfig.DataSource = [Enum].GetValues(GetType(AxleConfiguration)) _ - .Cast (Of AxleConfiguration) _ + .Cast(Of AxleConfiguration) _ .Select(Function(category) New With {Key .Value = category, .Label = category.GetName()}).ToList() CbCat.ValueMember = "Value" CbCat.DisplayMember = "Label" CbCat.DataSource = [Enum].GetValues(GetType(VehicleCategory)) _ - .Cast (Of VehicleCategory) _ + .Cast(Of VehicleCategory) _ .Select(Function(category) New With {Key .Value = category, .label = category.GetLabel()}).ToList() cbAngledriveType.ValueMember = "Value" cbAngledriveType.DisplayMember = "Label" cbAngledriveType.DataSource = [Enum].GetValues(GetType(AngledriveType)) _ - .Cast (Of AngledriveType).Select(Function(type) New With {Key .Value = type, .Label = type.GetLabel()}).ToList() + .Cast(Of AngledriveType).Select(Function(type) New With {Key .Value = type, .Label = type.GetLabel()}).ToList() _axlDlog = New VehicleAxleDialog _torqueLimitDlog = New VehicleTorqueLimitDialog() @@ -110,12 +116,12 @@ Public Class VehicleForm End If Dim vehC As VehicleCategory = CType(CbCat.SelectedValue, VehicleCategory) Dim axlC As AxleConfiguration = CType(CbAxleConfig.SelectedValue, AxleConfiguration) - Dim maxMass As Kilogram = (TbMassMass.Text.ToDouble()*1000).SI (Of Kilogram)() + Dim maxMass As Kilogram = (TbMassMass.Text.ToDouble() * 1000).SI(Of Kilogram)() _hdVclass = "-" Dim s0 As Segment = Nothing Try - s0 = DeclarationData.Segments.Lookup(vehC, axlC, maxMass, 0.SI (Of Kilogram), True) + s0 = DeclarationData.Segments.Lookup(vehC, axlC, maxMass, 0.SI(Of Kilogram), True) Catch ' no segment found - ignore @@ -126,7 +132,7 @@ Public Class VehicleForm TbHDVclass.Text = _hdVclass - PicVehicle.Image = ConvPicPath(If(s0 Is Nothing, - 1, _hdVclass.ToInt()), False) + PicVehicle.Image = ConvPicPath(If(s0 Is Nothing, -1, _hdVclass.ToInt()), False) End Sub @@ -140,11 +146,11 @@ Public Class VehicleForm End If Dim vehC As VehicleCategory = CType(CbCat.SelectedValue, VehicleCategory) Dim axlC As AxleConfiguration = CType(CbAxleConfig.SelectedValue, AxleConfiguration) - Dim maxMass As Kilogram = (TbMassMass.Text.ToDouble()*1000).SI (Of Kilogram)() + Dim maxMass As Kilogram = (TbMassMass.Text.ToDouble() * 1000).SI(Of Kilogram)() Dim s0 As Segment = Nothing Try - s0 = DeclarationData.Segments.Lookup(vehC, axlC, maxMass, 0.SI (Of Kilogram), True) + s0 = DeclarationData.Segments.Lookup(vehC, axlC, maxMass, 0.SI(Of Kilogram), True) Catch ' no segment found - ignore End Try @@ -179,7 +185,7 @@ Public Class VehicleForm TbCdFile.Text = "" Dim rdyn As Double - rdyn = - 1 + rdyn = -1 If rdyn < 0 Then TBrdyn.Text = "-" @@ -324,7 +330,7 @@ Public Class VehicleForm If ChangeCheckCancel() Then Exit Sub - Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(file), + Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(file), IEngineeringInputDataProvider) Dim vehicle As IVehicleEngineeringInputData = inputData.VehicleInputData Dim airdrag As IAirdragEngineeringInputData = inputData.AirdragInputData @@ -338,7 +344,7 @@ Public Class VehicleForm Close() MainForm.RbDecl.Checked = Not MainForm.RbDecl.Checked MainForm.OpenVectoFile(file) - Case - 1 + Case -1 Exit Sub End Select End If @@ -347,12 +353,12 @@ Public Class VehicleForm Dim basePath As String = Path.GetDirectoryName(file) CbCat.SelectedValue = vehicle.VehicleCategory CbAxleConfig.SelectedValue = vehicle.AxleConfiguration - TbMassMass.Text = (vehicle.GrossVehicleMassRating.Value()/1000).ToGUIFormat() + TbMassMass.Text = (vehicle.GrossVehicleMassRating.Value() / 1000).ToGUIFormat() TbMass.Text = vehicle.CurbMassChassis.ToGUIFormat() TbMassExtra.Text = vehicle.CurbMassExtra.ToGUIFormat() TbLoad.Text = vehicle.Loading.ToGUIFormat() - TBrdyn.Text = (vehicle.DynamicTyreRadius.Value()*1000).ToGUIFormat() + TBrdyn.Text = (vehicle.DynamicTyreRadius.Value() * 1000).ToGUIFormat() CbCdMode.SelectedValue = airdrag.CrossWindCorrectionMode TbCdFile.Text = @@ -367,8 +373,6 @@ Public Class VehicleForm Dim a0 As IAxleEngineeringInputData For Each a0 In vehicle.Axles i += 1 - - If Cfg.DeclMode Then Dim inertia As Double = DeclarationData.Wheels.Lookup(a0.Wheels).Inertia.Value() LvRRC.Items.Add(CreateListViewItem(i, Double.NaN, a0.TwinTyres, a0.RollResistanceCoefficient, @@ -378,9 +382,12 @@ Public Class VehicleForm a0.TyreTestLoad.Value(), a0.Wheels, a0.Inertia.Value())) End If - Next + lvTorqueLimits.Items.Clear() + For Each entry As ITorqueLimitInputData In vehicle.TorqueLimits + lvTorqueLimits.Items.Add(CreateMaxTorqueListViewItem(entry.Gear(), entry.MaxTorque.Value())) + Next 'TbMassExtra.Text = veh.MassExtra.ToGUIFormat() @@ -454,13 +461,13 @@ Public Class VehicleForm veh.VehicleCategory = CType(CbCat.SelectedValue, VehicleCategory) 'CType(CbCat.SelectedIndex, tVehCat) For Each entry As ListViewItem In LvRRC.Items - Dim a0 As Vehicle.Axle = New Vehicle.Axle - a0.Share = entry.SubItems(AxleTbl.RelativeLoad).Text.ToDouble(0) - a0.TwinTire = (entry.SubItems(AxleTbl.TwinTyres).Text = "yes") - a0.RRC = entry.SubItems(AxleTbl.RRC).Text.ToDouble(0) - a0.FzISO = entry.SubItems(AxleTbl.FzISO).Text.ToDouble(0) + Dim a0 As AxleInputData = New AxleInputData() + a0.AxleWeightShare = entry.SubItems(AxleTbl.RelativeLoad).Text.ToDouble(0) + a0.TwinTyres = (entry.SubItems(AxleTbl.TwinTyres).Text = "yes") + a0.RollResistanceCoefficient = entry.SubItems(AxleTbl.RRC).Text.ToDouble(0) + a0.TyreTestLoad = entry.SubItems(AxleTbl.FzISO).Text.ToDouble(0).SI(Of Newton)() a0.Wheels = entry.SubItems(AxleTbl.WheelsDimension).Text - a0.Inertia = entry.SubItems(AxleTbl.Inertia).Text.ToDouble(0) + a0.Inertia = entry.SubItems(AxleTbl.Inertia).Text.ToDouble(0).SI(Of KilogramSquareMeter)() veh.Axles.Add(a0) Next @@ -472,6 +479,13 @@ Public Class VehicleForm veh.MassExtra = TbMassExtra.Text.ToDouble(0) veh.AxleConfiguration = CType(CbAxleConfig.SelectedValue, AxleConfiguration) + For Each item As ListViewItem In lvTorqueLimits.Items + Dim tl As TorqueLimitInputData = New TorqueLimitInputData() + tl.Gear() = item.SubItems(TorqueLimitsTbl.Gear).Text.ToInt(0) + tl.MaxTorque = item.SubItems(TorqueLimitsTbl.MaxTorque).Text.ToDouble(0).SI(Of NewtonMeter)() + veh.torqueLimitsList.Add(tl) + Next + '--------------------------------------------------------------------------------- If Not veh.SaveFile Then @@ -653,7 +667,7 @@ Public Class VehicleForm Private Sub SetMaxLoad() If Not Cfg.DeclMode Then If IsNumeric(TbMass.Text) And IsNumeric(TbMassExtra.Text) And IsNumeric(TbMassMass.Text) Then - TbLoadingMax.Text = CStr(CSng(TbMassMass.Text)*1000 - CSng(TbMass.Text) - CSng(TbMassExtra.Text)) + TbLoadingMax.Text = CStr(CSng(TbMassMass.Text) * 1000 - CSng(TbMass.Text) - CSng(TbMassExtra.Text)) Else TbLoadingMax.Text = "" End If @@ -834,8 +848,17 @@ Public Class VehicleForm Private Sub btAddMaxTorqueEntry_Click(sender As Object, e As EventArgs) Handles btAddMaxTorqueEntry.Click _torqueLimitDlog.Clear() If _torqueLimitDlog.ShowDialog() = DialogResult.OK Then - lvTorqueLimits.Items.Add(CreateMaxTorqueListViewItem(_torqueLimitDlog.tbGear.Text.ToInt(0), - _torqueLimitDlog.tbMaxTorque.Text.ToDouble(0))) + Dim gear As Integer = _torqueLimitDlog.tbGear.Text.ToInt(0) + For Each entry As ListViewItem In lvTorqueLimits.Items + If entry.SubItems(TorqueLimitsTbl.Gear).Text.ToInt() = gear Then + entry.SubItems(TorqueLimitsTbl.MaxTorque).Text = _torqueLimitDlog.tbMaxTorque.Text.ToDouble(0).ToGUIFormat + Change() + Return + End If + Next + + lvTorqueLimits.Items.Add(CreateMaxTorqueListViewItem(gear, _torqueLimitDlog.tbMaxTorque.Text.ToDouble(0))) + Change() End If @@ -865,5 +888,23 @@ Public Class VehicleForm Change() End Sub + + Private Sub lvTorqueLimits_DoubleClick(sender As Object, e As EventArgs) Handles lvTorqueLimits.DoubleClick + EditMaxTorqueEntry() + End Sub + + Private Sub EditMaxTorqueEntry() + If lvTorqueLimits.SelectedItems.Count = 0 Then Exit Sub + + Dim entry As ListViewItem = lvTorqueLimits.SelectedItems(0) + _torqueLimitDlog.tbGear.Text = entry.SubItems(TorqueLimitsTbl.Gear).Text + _torqueLimitDlog.tbGear.ReadOnly = True + _torqueLimitDlog.tbMaxTorque.Text = entry.SubItems(TorqueLimitsTbl.MaxTorque).Text + _torqueLimitDlog.tbMaxTorque.Focus() + If (_torqueLimitDlog.ShowDialog() = DialogResult.OK) Then + entry.SubItems(TorqueLimitsTbl.MaxTorque).Text = _torqueLimitDlog.tbMaxTorque.Text + End If + _torqueLimitDlog.tbGear.ReadOnly = False + End Sub End Class diff --git a/VECTO/GUI/VehicleTorqueLimitsDialog.vb b/VECTO/GUI/VehicleTorqueLimitsDialog.vb index 44558819d2a77ba0138c636f8484028b399b1eb5..c2f88220627ed6c5bf02fd71f8617e4481f07271 100644 --- a/VECTO/GUI/VehicleTorqueLimitsDialog.vb +++ b/VECTO/GUI/VehicleTorqueLimitsDialog.vb @@ -27,6 +27,7 @@ Public Class VehicleTorqueLimitDialog tbGear.Text = "" tbMaxTorque.Text = "" + tbGear.Focus() End Sub 'Initialise @@ -36,6 +37,17 @@ Public Class VehicleTorqueLimitDialog 'Save and close Private Sub OK_Button_Click(sender As Object, e As EventArgs) Handles OK_Button.Click + If Not IsNumeric(tbGear.Text) Then + MsgBox("Invalid input for Gear") + tbGear.Focus() + Return + End If + If Not IsNumeric(tbMaxTorque.Text) Then + MsgBox("Invalid max. torque") + tbMaxTorque.Focus() + Return + End If + DialogResult = DialogResult.OK Close() End Sub diff --git a/VECTO/Input Files/VectoJob.vb b/VECTO/Input Files/VectoJob.vb index 34cd7d75d46d7bd69d9539efaba0e0951f723859..7515a9d9c03eded0030e15985902315bf5d80612 100644 --- a/VECTO/Input Files/VectoJob.vb +++ b/VECTO/Input Files/VectoJob.vb @@ -593,13 +593,6 @@ Public Class VectoJob End Property - Public ReadOnly Property IDriverDeclarationInputData_StartStop As IStartStopDeclarationInputData _ - Implements IDriverDeclarationInputData.StartStop - Get - Return IDriverEngineeringInputData_StartStop - End Get - End Property - Public ReadOnly Property IEngineeringJobInputData_Vehicle As IVehicleEngineeringInputData _ Implements IEngineeringJobInputData.Vehicle Get diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index 6fc311dcb566651b7a91551f144bcc0dec2a5141..01b05bcd155dd0312b5d21734487671535768c2c 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -45,7 +45,7 @@ Public Class Vehicle Public ReadOnly RetarderLossMapFile As SubPath Public DynamicTyreRadius As Double - Public ReadOnly Axles As List(Of Axle) + Public ReadOnly Axles As List(Of AxleInputData) Public VehicleCategory As VehicleCategory @@ -61,6 +61,7 @@ Public Class Vehicle Public PtoType As String Public ReadOnly PtoLossMap As SubPath Public ReadOnly PtoCycle As SubPath + Public torqueLimitsList As List(Of ITorqueLimitInputData) Public Class Axle Public RRC As Double @@ -80,7 +81,8 @@ Public Class Vehicle RetarderLossMapFile = New SubPath AngledriveLossMapFile = New SubPath() - Axles = New List(Of Axle) + Axles = New List(Of AxleInputData) + torqueLimitsList = new List(Of ITorqueLimitInputData) PtoLossMap = New SubPath() PtoCycle = New SubPath() SetDefault() @@ -96,7 +98,7 @@ Public Class Vehicle Dim angledriveData As AngledriveData Dim modeService As VectoValidationModeServiceContainer = - TryCast(validationContext.GetService(GetType(VectoValidationModeServiceContainer)), + TryCast(validationContext.GetService(GetType(VectoValidationModeServiceContainer)), VectoValidationModeServiceContainer) Dim mode As ExecutionMode = If(modeService Is Nothing, ExecutionMode.Declaration, modeService.Mode) Dim emsCycle As Boolean = (modeService IsNot Nothing) AndAlso modeService.IsEMSCycle @@ -332,6 +334,13 @@ Public Class Vehicle End Get End Property + Public ReadOnly Property TorqueLimits As IList(Of ITorqueLimitInputData) _ + Implements IVehicleDeclarationInputData.TorqueLimits + Get + Return torqueLimitsList + End Get + End Property + Public ReadOnly Property AirDragArea As SquareMeter Implements IAirdragEngineeringInputData.AirDragArea Get Return CdA0.SI(Of SquareMeter)() @@ -341,29 +350,17 @@ Public Class Vehicle Public ReadOnly Property IVehicleEngineeringInputData_Axles As IList(Of IAxleEngineeringInputData) _ Implements IVehicleEngineeringInputData.Axles Get - Return AxleWheels().Cast(Of IAxleEngineeringInputData)().ToList() + Return Axles.Cast(Of IAxleEngineeringInputData)().ToList() End Get End Property Public ReadOnly Property IVehicleDeclarationInputData_Axles As IList(Of IAxleDeclarationInputData) _ Implements IVehicleDeclarationInputData.Axles Get - Return AxleWheels().Cast(Of IAxleDeclarationInputData)().ToList() + Return Axles.Cast(Of IAxleDeclarationInputData)().ToList() End Get End Property - Private Function AxleWheels() As IEnumerable(Of AxleInputData) - Return Axles.Select(Function(axle) New AxleInputData With { - .SourceType = DataSourceType.JSONFile, - .Source = FilePath, - .Inertia = axle.Inertia.SI(Of KilogramSquareMeter)(), - .Wheels = axle.Wheels, - .AxleWeightShare = axle.Share, - .TwinTyres = axle.TwinTire, - .RollResistanceCoefficient = axle.RRC, - .TyreTestLoad = axle.FzISO.SI(Of Newton)() - }) - End Function Public ReadOnly Property CurbMassExtra As Kilogram Implements IVehicleEngineeringInputData.CurbMassExtra Get diff --git a/VECTO/OutputData/JSONFileWriter.vb b/VECTO/OutputData/JSONFileWriter.vb index c2c10de71f24607f88320b5377e9371d34c9e400..b1e38fe83a479a5297d1f47c346f142122b3579b 100644 --- a/VECTO/OutputData/JSONFileWriter.vb +++ b/VECTO/OutputData/JSONFileWriter.vb @@ -187,6 +187,11 @@ Public Class JSONFileWriter (angledrive.Type = AngledriveType.SeparateAngledrive AndAlso Not angledrive.LossMap Is Nothing, GetRelativePath(angledrive.LossMap.Source, basePath), "")}} + Dim torqueLimits As Dictionary(Of String, String) = New Dictionary(Of String, String) + For Each entry As ITorqueLimitInputData In vehicle.TorqueLimits + torqueLimits.Add(entry.Gear().ToString(), entry.MaxTorque.Value().ToString()) + Next + Dim body As Dictionary(Of String, Object) = New Dictionary(Of String, Object) From { {"SavedInDeclMode", Cfg.DeclMode}, {"VehCat", vehicle.VehicleCategory.ToString()}, @@ -206,6 +211,7 @@ Public Class JSONFileWriter {"Retarder", retarderOut}, {"Angledrive", angledriveOut}, {"PTO", ptoOut}, + {"TorqueLimits", torqueLimits}, {"AxleConfig", New Dictionary(Of String, Object) From { {"Type", vehicle.AxleConfiguration.GetName()}, {"Axles", From axle In vehicle.Axles Select New Dictionary(Of String, Object) From { diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 9ff6c1234f7a4b6dfe4a88c4616b515c486bde2f..68a4ee4d9683b3b9badf415c7c49227089e1a7ad 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -101,6 +101,8 @@ namespace TUGraz.VectoCommon.InputData ///// </summary> //string Rim { get; } // deprecated + IList<ITorqueLimitInputData> TorqueLimits { get; } + /// <summary> /// parameters for every axle /// P044, P045, P046, P047, P048, P108 @@ -364,8 +366,6 @@ namespace TUGraz.VectoCommon.InputData { bool SavedInDeclarationMode { get; } - //IStartStopDeclarationInputData StartStop { get; } - IOverSpeedEcoRollDeclarationInputData OverSpeedEcoRoll { get; } } @@ -392,4 +392,11 @@ namespace TUGraz.VectoCommon.InputData /// </summary> IList<string> Technology { get; } } + + public interface ITorqueLimitInputData + { + int Gear { get; } + + NewtonMeter MaxTorque { get; } + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index 9b7e2118c9040d84f3dfc6ce3bbfe71a4963d0ec..b56eb792ed94ce5e59148f6f2943da6ff21a7c19 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -415,19 +415,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region DriverInputData - public virtual IStartStopEngineeringInputData StartStop - { - get { - var startStop = Body.GetEx(JsonKeys.DriverData_StartStop); - return new StartStopInputData { - Enabled = startStop.GetEx<bool>(JsonKeys.DriverData_StartStop_Enabled), - Delay = startStop.GetEx<double>(JsonKeys.DriverData_StartStop_Delay).SI<Second>(), - MaxSpeed = startStop.GetEx<double>(JsonKeys.DriverData_StartStop_MaxSpeed).KMPHtoMeterPerSecond(), - MinTime = startStop.GetEx<double>(JsonKeys.DriverData_StartStop_MinTime).SI<Second>(), - }; - } - } - IOverSpeedEcoRollDeclarationInputData IDriverDeclarationInputData.OverSpeedEcoRoll { get { diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index a235de9368957c9a053f52569adb372a90284c85..0ff79810684da3b3401461cc85b5a4dfa4d96971 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -72,6 +72,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON get { return Body.GetEx<double>(JsonKeys.Vehicle_GrossVehicleMassRating).SI().Ton.Cast<Kilogram>(); } } + public IList<ITorqueLimitInputData> TorqueLimits + { + get { + var retVal = new List<ITorqueLimitInputData>(); + if (Body["TorqueLimits"] == null) { + return retVal; + } + foreach (var entry in (JObject)Body["TorqueLimits"]) { + retVal.Add(new TorqueLimitInputData() { + Gear = entry.Key.ToInt(), + MaxTorque = entry.Value.ToString().ToDouble(0).SI<NewtonMeter>() + }); + } + return retVal; + } + } + public virtual Kilogram Loading { get { return Body.GetEx<double>(JsonKeys.Vehicle_Loading).SI<Kilogram>(); } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs index 08bfd2f41d70d55fbdcf146424e7db9777c7ea74..fc4273b987572abc530db8a4ca71c8fb1c9d0620 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs @@ -40,6 +40,22 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration get { return GetDoubleElementValue(XMLNames.Vehicle_GrossVehicleMass).SI<Kilogram>(); } } + public IList<ITorqueLimitInputData> TorqueLimits + { + get { + var retVal = new List<ITorqueLimitInputData>(); + var limits = Navigator.Select(Helper.Query(VehiclePath, XMLNames.Vehicle_TorqueLimits, "Entry")); + while (limits.MoveNext()) { + retVal.Add(new TorqueLimitInputData() { + Gear = limits.Current.GetAttribute(XMLNames.Vehicle_TorqueLimits_Entry_Gear_Attr, "").ToInt(), + MaxTorque = + limits.Current.GetAttribute(XMLNames.Vehicle_TorqueLimits_Entry_MaxTorque_Attr, "").ToDouble().SI<NewtonMeter>() + }); + } + return retVal; + } + } + public SquareMeter AirDragArea { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs index 545f51795c564c356f16f2e40ab99fee55932a87..6c4eebd7fbe5a26886a0e8b373ce31aab7d09ced 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/XMLEngineeringVehicleDataProvider.cs @@ -50,6 +50,22 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering get { return GetDoubleElementValue(XMLNames.Vehicle_GrossVehicleMass).SI<Kilogram>(); } } + public IList<ITorqueLimitInputData> TorqueLimits + { + get { + var retVal = new List<ITorqueLimitInputData>(); + var limits = Navigator.Select(Helper.Query(VehiclePath, XMLNames.Vehicle_TorqueLimits, "Entry")); + while (limits.MoveNext()) { + retVal.Add(new TorqueLimitInputData() { + Gear = limits.Current.GetAttribute(XMLNames.Vehicle_TorqueLimits_Entry_Gear_Attr, "").ToInt(), + MaxTorque = + limits.Current.GetAttribute(XMLNames.Vehicle_TorqueLimits_Entry_MaxTorque_Attr, "").ToDouble().SI<NewtonMeter>() + }); + } + return retVal; + } + } + public Kilogram Loading { get { return GetDoubleElementValue(XMLNames.Vehicle_Loading).SI<Kilogram>(); } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index 3c1a581f2d32a2a1f3016c1ab8a30780d7152963..929d3f7e1ee29c1ebfb0e36c1a39dc9f92fc6d7b 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -157,4 +157,10 @@ namespace TUGraz.VectoCore.InputData.Impl public Watt ConstantPowerDemand { get; internal set; } } + + public class TorqueLimitInputData : ITorqueLimitInputData + { + public int Gear { get; internal set; } + public NewtonMeter MaxTorque { get; internal set; } + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index af8a4f9a8076a55fd2680cbd9fbc6290bbf97a1e..62edaf670a3fc56a823dba84428ab35d864a819b 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -73,16 +73,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter "Specified Overspeed/EcoRoll Mode not allowed in declaration mode! {0}", overspeedData.Mode); } - var startstopData = new VectoRunData.StartStopData { - Enabled = data.StartStop.Enabled, - Delay = DeclarationData.Driver.StartStop.Delay, - MinTime = DeclarationData.Driver.StartStop.MinTime, - MaxSpeed = DeclarationData.Driver.StartStop.MaxSpeed - }; var retVal = new DriverData { LookAheadCoasting = lookAheadData, OverSpeedEcoRoll = overspeedData, - StartStop = startstopData }; return retVal; } diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 76fc148372bb7655cb62de034d899f50a7ce4a16..d48e4cce70eeb1dd56f5db599c3a9deacf15752a 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -139,12 +139,12 @@ namespace TUGraz.VectoCore.Models.Declaration public static readonly MeterPerSecond UnderSpeed = 5.KMPHtoMeterPerSecond(); } - public static class StartStop - { - public static readonly MeterPerSecond MaxSpeed = 5.KMPHtoMeterPerSecond(); - public static readonly Second Delay = 5.SI<Second>(); - public static readonly Second MinTime = 5.SI<Second>(); - } + //public static class StartStop + //{ + // public static readonly MeterPerSecond MaxSpeed = 5.KMPHtoMeterPerSecond(); + // public static readonly Second Delay = 5.SI<Second>(); + // public static readonly Second MinTime = 5.SI<Second>(); + //} } public static class Trailer diff --git a/VectoCore/VectoCore/Resources/XMLNames.Designer.cs b/VectoCore/VectoCore/Resources/XMLNames.Designer.cs index 04faa1a12840ecdae1354a1ee7544f149d3d136f..1b93b10cdfb290ddd1d343c25f218f4f084a5757 100644 --- a/VectoCore/VectoCore/Resources/XMLNames.Designer.cs +++ b/VectoCore/VectoCore/Resources/XMLNames.Designer.cs @@ -1950,6 +1950,33 @@ namespace TUGraz.VectoCore.Resources { } } + /// <summary> + /// Looks up a localized string similar to TorqueLimits. + /// </summary> + public static string Vehicle_TorqueLimits { + get { + return ResourceManager.GetString("Vehicle_TorqueLimits", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to gear. + /// </summary> + public static string Vehicle_TorqueLimits_Entry_Gear_Attr { + get { + return ResourceManager.GetString("Vehicle_TorqueLimits_Entry_Gear_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to maxTorque. + /// </summary> + public static string Vehicle_TorqueLimits_Entry_MaxTorque_Attr { + get { + return ResourceManager.GetString("Vehicle_TorqueLimits_Entry_MaxTorque_Attr", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to VehicleCategory. /// </summary> diff --git a/VectoCore/VectoCore/Resources/XMLNames.resx b/VectoCore/VectoCore/Resources/XMLNames.resx index bbfeacc197d62468b1941dccc39aa41c72e81a38..eeb9fdb5e02f37d8341e4e693b36451f78675e4c 100644 --- a/VectoCore/VectoCore/Resources/XMLNames.resx +++ b/VectoCore/VectoCore/Resources/XMLNames.resx @@ -752,5 +752,14 @@ </data> <data name="Component_ManufacturerAddress" xml:space="preserve"> <value>ManufacturerAddress</value> + </data> + <data name="Vehicle_TorqueLimits" xml:space="preserve"> + <value>TorqueLimits</value> + </data> + <data name="Vehicle_TorqueLimits_Entry_Gear_Attr" xml:space="preserve"> + <value>gear</value> + </data> + <data name="Vehicle_TorqueLimits_Entry_MaxTorque_Attr" xml:space="preserve"> + <value>maxTorque</value> </data> </root> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs index ecfb707bd32987a1e1ee618957b1019cc441e4cb..22c107008b5b4991f48806d9f3ff247189c0500a 100644 --- a/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/ATPowerTrain.cs @@ -234,9 +234,6 @@ namespace TUGraz.VectoCore.Tests.Integration : new DriverData.OverSpeedEcoRollData { Mode = DriverMode.Off }, - StartStop = new VectoRunData.StartStopData { - Enabled = false - } }; } }