diff --git a/VECTO/GUI/ElectricMotorForm.Designer.vb b/VECTO/GUI/ElectricMotorForm.Designer.vb index a978334f88ba8d214aa0cdd166abfb25240ad6ba..787eda5c704162d2e97bb52640985ff27f3fec1f 100644 --- a/VECTO/GUI/ElectricMotorForm.Designer.vb +++ b/VECTO/GUI/ElectricMotorForm.Designer.vb @@ -60,10 +60,6 @@ Partial Class ElectricMotorForm Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.pnInertia = New System.Windows.Forms.Panel() - Me.tbDragTorqueHi = New System.Windows.Forms.TextBox() - Me.lblDragTorqueHi = New System.Windows.Forms.Label() - Me.btnBrowseDragCurveHi = New System.Windows.Forms.Button() - Me.btnDragCurveOpenHi = New System.Windows.Forms.Button() Me.btnEmMapOpenHi = New System.Windows.Forms.Button() Me.btnBrowseEmMapHi = New System.Windows.Forms.Button() Me.lblPowerMapHi = New System.Windows.Forms.Label() @@ -163,20 +159,20 @@ Partial Class ElectricMotorForm ' Me.ButCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.ButCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.ButCancel.Location = New System.Drawing.Point(811, 574) + Me.ButCancel.Location = New System.Drawing.Point(839, 567) Me.ButCancel.Name = "ButCancel" Me.ButCancel.Size = New System.Drawing.Size(75, 23) - Me.ButCancel.TabIndex = 11 + Me.ButCancel.TabIndex = 99 Me.ButCancel.Text = "Cancel" Me.ButCancel.UseVisualStyleBackColor = true ' 'ButOK ' Me.ButOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) - Me.ButOK.Location = New System.Drawing.Point(730, 574) + Me.ButOK.Location = New System.Drawing.Point(758, 567) Me.ButOK.Name = "ButOK" Me.ButOK.Size = New System.Drawing.Size(75, 23) - Me.ButOK.TabIndex = 10 + Me.ButOK.TabIndex = 98 Me.ButOK.Text = "Save" Me.ButOK.UseVisualStyleBackColor = true ' @@ -188,7 +184,7 @@ Partial Class ElectricMotorForm Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) Me.ToolStrip1.Name = "ToolStrip1" Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0) - Me.ToolStrip1.Size = New System.Drawing.Size(898, 31) + Me.ToolStrip1.Size = New System.Drawing.Size(926, 31) Me.ToolStrip1.TabIndex = 30 Me.ToolStrip1.Text = "ToolStrip1" ' @@ -265,9 +261,9 @@ Partial Class ElectricMotorForm ' Me.StatusStrip1.ImageScalingSize = New System.Drawing.Size(24, 24) Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus}) - Me.StatusStrip1.Location = New System.Drawing.Point(0, 599) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 592) Me.StatusStrip1.Name = "StatusStrip1" - Me.StatusStrip1.Size = New System.Drawing.Size(898, 22) + Me.StatusStrip1.Size = New System.Drawing.Size(926, 22) Me.StatusStrip1.SizingGrip = false Me.StatusStrip1.TabIndex = 37 Me.StatusStrip1.Text = "StatusStrip1" @@ -333,44 +329,10 @@ Partial Class ElectricMotorForm Me.pnInertia.Size = New System.Drawing.Size(221, 30) Me.pnInertia.TabIndex = 1 ' - 'tbDragTorqueHi - ' - Me.tbDragTorqueHi.Location = New System.Drawing.Point(6, 103) - Me.tbDragTorqueHi.Name = "tbDragTorqueHi" - Me.tbDragTorqueHi.Size = New System.Drawing.Size(406, 20) - Me.tbDragTorqueHi.TabIndex = 4 - ' - 'lblDragTorqueHi - ' - Me.lblDragTorqueHi.AutoSize = true - Me.lblDragTorqueHi.Location = New System.Drawing.Point(6, 87) - Me.lblDragTorqueHi.Name = "lblDragTorqueHi" - Me.lblDragTorqueHi.Size = New System.Drawing.Size(98, 13) - Me.lblDragTorqueHi.TabIndex = 38 - Me.lblDragTorqueHi.Text = "Drag Torque Curve" - ' - 'btnBrowseDragCurveHi - ' - Me.btnBrowseDragCurveHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseDragCurveHi.Location = New System.Drawing.Point(420, 100) - Me.btnBrowseDragCurveHi.Name = "btnBrowseDragCurveHi" - Me.btnBrowseDragCurveHi.Size = New System.Drawing.Size(24, 24) - Me.btnBrowseDragCurveHi.TabIndex = 5 - Me.btnBrowseDragCurveHi.UseVisualStyleBackColor = true - ' - 'btnDragCurveOpenHi - ' - Me.btnDragCurveOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnDragCurveOpenHi.Location = New System.Drawing.Point(443, 100) - Me.btnDragCurveOpenHi.Name = "btnDragCurveOpenHi" - Me.btnDragCurveOpenHi.Size = New System.Drawing.Size(24, 24) - Me.btnDragCurveOpenHi.TabIndex = 6 - Me.btnDragCurveOpenHi.UseVisualStyleBackColor = true - ' 'btnEmMapOpenHi ' Me.btnEmMapOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnEmMapOpenHi.Location = New System.Drawing.Point(443, 141) + Me.btnEmMapOpenHi.Location = New System.Drawing.Point(443, 102) Me.btnEmMapOpenHi.Name = "btnEmMapOpenHi" Me.btnEmMapOpenHi.Size = New System.Drawing.Size(24, 24) Me.btnEmMapOpenHi.TabIndex = 9 @@ -379,7 +341,7 @@ Partial Class ElectricMotorForm 'btnBrowseEmMapHi ' Me.btnBrowseEmMapHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseEmMapHi.Location = New System.Drawing.Point(420, 141) + Me.btnBrowseEmMapHi.Location = New System.Drawing.Point(420, 102) Me.btnBrowseEmMapHi.Name = "btnBrowseEmMapHi" Me.btnBrowseEmMapHi.Size = New System.Drawing.Size(24, 24) Me.btnBrowseEmMapHi.TabIndex = 8 @@ -388,7 +350,7 @@ Partial Class ElectricMotorForm 'lblPowerMapHi ' Me.lblPowerMapHi.AutoSize = true - Me.lblPowerMapHi.Location = New System.Drawing.Point(6, 128) + Me.lblPowerMapHi.Location = New System.Drawing.Point(6, 89) Me.lblPowerMapHi.Name = "lblPowerMapHi" Me.lblPowerMapHi.Size = New System.Drawing.Size(163, 13) Me.lblPowerMapHi.TabIndex = 43 @@ -396,7 +358,7 @@ Partial Class ElectricMotorForm ' 'tbMapHi ' - Me.tbMapHi.Location = New System.Drawing.Point(6, 144) + Me.tbMapHi.Location = New System.Drawing.Point(6, 105) Me.tbMapHi.Name = "tbMapHi" Me.tbMapHi.Size = New System.Drawing.Size(406, 20) Me.tbMapHi.TabIndex = 7 @@ -440,7 +402,7 @@ Partial Class ElectricMotorForm Me.lblTitle.AutoSize = true Me.lblTitle.BackColor = System.Drawing.Color.White Me.lblTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 18!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) - Me.lblTitle.Location = New System.Drawing.Point(84, 34) + Me.lblTitle.Location = New System.Drawing.Point(115, 34) Me.lblTitle.Name = "lblTitle" Me.lblTitle.Size = New System.Drawing.Size(190, 29) Me.lblTitle.TabIndex = 48 @@ -672,10 +634,6 @@ Partial Class ElectricMotorForm Me.gbVoltageLevelHi.Controls.Add(Me.lblVoltageHiUnit) Me.gbVoltageLevelHi.Controls.Add(Me.tbVoltageHi) Me.gbVoltageLevelHi.Controls.Add(Me.lblMaxTorqueHi) - Me.gbVoltageLevelHi.Controls.Add(Me.tbDragTorqueHi) - Me.gbVoltageLevelHi.Controls.Add(Me.lblDragTorqueHi) - Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseDragCurveHi) - Me.gbVoltageLevelHi.Controls.Add(Me.btnDragCurveOpenHi) Me.gbVoltageLevelHi.Controls.Add(Me.tbMapHi) Me.gbVoltageLevelHi.Controls.Add(Me.lblPowerMapHi) Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseEmMapHi) @@ -683,9 +641,9 @@ Partial Class ElectricMotorForm Me.gbVoltageLevelHi.Controls.Add(Me.tbMaxTorqueHi) Me.gbVoltageLevelHi.Controls.Add(Me.btnMaxTorqueCurveOpenHi) Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseMaxTorqueHi) - Me.gbVoltageLevelHi.Location = New System.Drawing.Point(12, 418) + Me.gbVoltageLevelHi.Location = New System.Drawing.Point(12, 382) Me.gbVoltageLevelHi.Name = "gbVoltageLevelHi" - Me.gbVoltageLevelHi.Size = New System.Drawing.Size(482, 170) + Me.gbVoltageLevelHi.Size = New System.Drawing.Size(482, 136) Me.gbVoltageLevelHi.TabIndex = 9 Me.gbVoltageLevelHi.TabStop = false Me.gbVoltageLevelHi.Text = "Voltage Level High" @@ -721,10 +679,6 @@ Partial Class ElectricMotorForm Me.gbVoltageLevelLow.Controls.Add(Me.lblVoltageLowUnit) Me.gbVoltageLevelLow.Controls.Add(Me.tbVoltageLow) Me.gbVoltageLevelLow.Controls.Add(Me.lblMaxTorqueLow) - Me.gbVoltageLevelLow.Controls.Add(Me.tbDragTorqueLow) - Me.gbVoltageLevelLow.Controls.Add(Me.lblDragTorqueLow) - Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseDragCurveLow) - Me.gbVoltageLevelLow.Controls.Add(Me.btnDragCurveOpenLow) Me.gbVoltageLevelLow.Controls.Add(Me.tbMapLow) Me.gbVoltageLevelLow.Controls.Add(Me.lblPowerMapLow) Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseEmMapLow) @@ -734,7 +688,7 @@ Partial Class ElectricMotorForm Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseMaxTorqueLow) Me.gbVoltageLevelLow.Location = New System.Drawing.Point(12, 242) Me.gbVoltageLevelLow.Name = "gbVoltageLevelLow" - Me.gbVoltageLevelLow.Size = New System.Drawing.Size(482, 170) + Me.gbVoltageLevelLow.Size = New System.Drawing.Size(482, 134) Me.gbVoltageLevelLow.TabIndex = 8 Me.gbVoltageLevelLow.TabStop = false Me.gbVoltageLevelLow.Text = "Voltage Level Low" @@ -775,15 +729,15 @@ Partial Class ElectricMotorForm ' 'tbDragTorqueLow ' - Me.tbDragTorqueLow.Location = New System.Drawing.Point(6, 103) + Me.tbDragTorqueLow.Location = New System.Drawing.Point(19, 543) Me.tbDragTorqueLow.Name = "tbDragTorqueLow" Me.tbDragTorqueLow.Size = New System.Drawing.Size(406, 20) - Me.tbDragTorqueLow.TabIndex = 4 + Me.tbDragTorqueLow.TabIndex = 10 ' 'lblDragTorqueLow ' Me.lblDragTorqueLow.AutoSize = true - Me.lblDragTorqueLow.Location = New System.Drawing.Point(6, 87) + Me.lblDragTorqueLow.Location = New System.Drawing.Point(19, 527) Me.lblDragTorqueLow.Name = "lblDragTorqueLow" Me.lblDragTorqueLow.Size = New System.Drawing.Size(98, 13) Me.lblDragTorqueLow.TabIndex = 38 @@ -792,24 +746,24 @@ Partial Class ElectricMotorForm 'btnBrowseDragCurveLow ' Me.btnBrowseDragCurveLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseDragCurveLow.Location = New System.Drawing.Point(420, 100) + Me.btnBrowseDragCurveLow.Location = New System.Drawing.Point(433, 540) Me.btnBrowseDragCurveLow.Name = "btnBrowseDragCurveLow" Me.btnBrowseDragCurveLow.Size = New System.Drawing.Size(24, 24) - Me.btnBrowseDragCurveLow.TabIndex = 5 + Me.btnBrowseDragCurveLow.TabIndex = 11 Me.btnBrowseDragCurveLow.UseVisualStyleBackColor = true ' 'btnDragCurveOpenLow ' Me.btnDragCurveOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnDragCurveOpenLow.Location = New System.Drawing.Point(443, 100) + Me.btnDragCurveOpenLow.Location = New System.Drawing.Point(456, 540) Me.btnDragCurveOpenLow.Name = "btnDragCurveOpenLow" Me.btnDragCurveOpenLow.Size = New System.Drawing.Size(24, 24) - Me.btnDragCurveOpenLow.TabIndex = 6 + Me.btnDragCurveOpenLow.TabIndex = 12 Me.btnDragCurveOpenLow.UseVisualStyleBackColor = true ' 'tbMapLow ' - Me.tbMapLow.Location = New System.Drawing.Point(6, 144) + Me.tbMapLow.Location = New System.Drawing.Point(6, 104) Me.tbMapLow.Name = "tbMapLow" Me.tbMapLow.Size = New System.Drawing.Size(406, 20) Me.tbMapLow.TabIndex = 7 @@ -817,7 +771,7 @@ Partial Class ElectricMotorForm 'lblPowerMapLow ' Me.lblPowerMapLow.AutoSize = true - Me.lblPowerMapLow.Location = New System.Drawing.Point(6, 128) + Me.lblPowerMapLow.Location = New System.Drawing.Point(6, 88) Me.lblPowerMapLow.Name = "lblPowerMapLow" Me.lblPowerMapLow.Size = New System.Drawing.Size(163, 13) Me.lblPowerMapLow.TabIndex = 43 @@ -826,7 +780,7 @@ Partial Class ElectricMotorForm 'btnBrowseEmMapLow ' Me.btnBrowseEmMapLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseEmMapLow.Location = New System.Drawing.Point(420, 141) + Me.btnBrowseEmMapLow.Location = New System.Drawing.Point(420, 101) Me.btnBrowseEmMapLow.Name = "btnBrowseEmMapLow" Me.btnBrowseEmMapLow.Size = New System.Drawing.Size(24, 24) Me.btnBrowseEmMapLow.TabIndex = 8 @@ -835,7 +789,7 @@ Partial Class ElectricMotorForm 'btnEmMapOpenLow ' Me.btnEmMapOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnEmMapOpenLow.Location = New System.Drawing.Point(443, 141) + Me.btnEmMapOpenLow.Location = New System.Drawing.Point(443, 101) Me.btnEmMapOpenLow.Name = "btnEmMapOpenLow" Me.btnEmMapOpenLow.Size = New System.Drawing.Size(24, 24) Me.btnEmMapOpenLow.TabIndex = 9 @@ -872,12 +826,16 @@ Partial Class ElectricMotorForm Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.ButCancel - Me.ClientSize = New System.Drawing.Size(898, 621) + Me.ClientSize = New System.Drawing.Size(926, 614) Me.Controls.Add(Me.gbVoltageLevelLow) Me.Controls.Add(Me.gbVoltageLevelHi) Me.Controls.Add(Me.Panel6) + Me.Controls.Add(Me.tbDragTorqueLow) + Me.Controls.Add(Me.lblDragTorqueLow) Me.Controls.Add(Me.pnOverloadTq) + Me.Controls.Add(Me.btnBrowseDragCurveLow) Me.Controls.Add(Me.Panel4) + Me.Controls.Add(Me.btnDragCurveOpenLow) Me.Controls.Add(Me.Panel3) Me.Controls.Add(Me.Panel2) Me.Controls.Add(Me.Panel1) @@ -950,10 +908,6 @@ End Sub Friend WithEvents OpenWithToolStripMenuItem As ToolStripMenuItem Friend WithEvents ShowInFolderToolStripMenuItem As ToolStripMenuItem Friend WithEvents pnInertia As Panel - Friend WithEvents tbDragTorqueHi As TextBox - Friend WithEvents lblDragTorqueHi As Label - Friend WithEvents btnBrowseDragCurveHi As Button - Friend WithEvents btnDragCurveOpenHi As Button Friend WithEvents btnEmMapOpenHi As Button Friend WithEvents btnBrowseEmMapHi As Button Friend WithEvents lblPowerMapHi As Label diff --git a/VECTO/GUI/ElectricMotorForm.vb b/VECTO/GUI/ElectricMotorForm.vb index e2e982126fee3127c60b74b036541b2a25715bdc..b1b93a450f00c8f1ec7c889dbe0afca779676ef4 100644 --- a/VECTO/GUI/ElectricMotorForm.vb +++ b/VECTO/GUI/ElectricMotorForm.vb @@ -133,7 +133,6 @@ Public Class ElectricMotorForm tbMakeModel.Text = "" tbInertia.Text = "" tbMapHi.Text = "" - tbDragTorqueHi.Text = "" tbMaxTorqueHi.Text = "" DeclInit() @@ -180,16 +179,17 @@ Public Class ElectricMotorForm tbRatedSpeed.Text = engine.ContinuousTorqueSpeed.AsRPM.ToGUIFormat() tbOverloadRecoveryFactor.Text = engine.OverloadRecoveryFactor.ToGUIFormat() + tbDragTorqueLow.Text = GetRelativePath(engine.DragCurve.Source, basePath) + Dim voltageLevelHigh As IElectricMotorVoltageLevel = engine.VoltageLevels.MaxBy(function(level) level.VoltageLevel.Value()) - tbDragTorqueHi.Text = GetRelativePath(voltageLevelHigh.DragCurve.Source, basePath) tbMaxTorqueHi.Text = GetRelativePath(voltageLevelHigh.FullLoadCurve.Source, basePath) tbMapHi.Text = GetRelativePath(voltageLevelHigh.EfficiencyMap.Source, basePath) tbVoltageHi.Text = voltageLevelHigh.VoltageLevel.Value().ToGUIFormat() Dim voltageLevelLow As IElectricMotorVoltageLevel = engine.VoltageLevels.MinBy(function(level) level.VoltageLevel.Value()) - tbDragTorqueLow.Text = GetRelativePath(voltageLevelLow.DragCurve.Source, basePath) + tbMaxTorqueLow.Text = GetRelativePath(voltageLevelLow.FullLoadCurve.Source, basePath) tbMapLow.Text = GetRelativePath(voltageLevelLow.EfficiencyMap.Source, basePath) tbVoltageLow.Text = voltageLevelLow.VoltageLevel.Value().ToGUIFormat() @@ -236,12 +236,11 @@ Public Class ElectricMotorForm em.OverloadRecoveryFactor = tbOverloadRecoveryFactor.Text.ToDouble(0) em.PathMaxTorqueLow = tbMaxTorqueLow.Text - em.PathDragLow = tbDragTorqueLow.Text + em.PathDrag = tbDragTorqueLow.Text em.PathMapLow = tbMapLow.Text em.VoltageLevelLow = tbVoltageLow.Text.ToDouble(0) em.PathMaxTorqueHi = tbMaxTorqueHi.Text - em.PathDragHi = tbDragTorqueHi.Text em.PathMapHi = tbMapHi.Text em.VoltageLevelHigh = tbVoltageHi.Text.ToDouble(0) @@ -304,7 +303,7 @@ Public Class ElectricMotorForm End Sub Private Sub DataChangedUpdatePic(sender As Object, e As EventArgs) _ - Handles tbDragTorqueHi.TextChanged, tbMaxTorqueLow.TextChanged, tbMaxTorqueHi.TextChanged, tbDragTorqueLow.TextChanged + Handles tbMaxTorqueLow.TextChanged, tbMaxTorqueHi.TextChanged, tbDragTorqueLow.TextChanged UpdatePic() Change() End Sub @@ -335,7 +334,7 @@ Public Class ElectricMotorForm Try Dim fldFile As String = - If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorqueHi.Text), tbDragTorqueHi.Text) + If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorqueHi.Text), tbDragTorqueLow.Text) If File.Exists(fldFile) Then _ fullLoadCurve = ElectricFullLoadCurveReader.Create(VectoCSVFile.Read(fldFile), 1) Catch ex As Exception @@ -350,7 +349,7 @@ Public Class ElectricMotorForm Try Dim dragFile As String = - If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorqueHi.Text), tbMapHi.Text) + If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorqueLow.Text), tbMapHi.Text) If File.Exists(dragFile) Then dragCurve = ElectricMotorDragCurveReader.Create(VectoCSVFile.Read(dragFile), 1) Catch ex As Exception End Try @@ -371,7 +370,7 @@ Public Class ElectricMotorForm series.ChartType = SeriesChartType.FastLine series.BorderWidth = 2 series.Color = Color.DarkBlue - series.Name = "Max drive torque (" & tbDragTorqueHi.Text & ")" + series.Name = "Max drive torque (" & tbDragTorqueLow.Text & ")" chart.Series.Add(series) series = New Series @@ -495,9 +494,6 @@ Public Class ElectricMotorForm CreateNewFile(tbMaxTorqueHi) End Sub - Private Sub btnDragCurveOpen_Click(sender As Object, e As EventArgs) Handles btnDragCurveOpenHi.Click - CreateNewFile(tbDragTorqueHi) - End Sub Private Sub btnEmMapOpen_Click(sender As Object, e As EventArgs) Handles btnEmMapOpenHi.Click CreateNewFile(tbMapHi) @@ -519,11 +515,7 @@ Public Class ElectricMotorForm SelectFile(ElectricMachineMaxTorqueFileBrowser, tbMaxTorqueHi) End Sub - Private Sub btnBrowseDragCurve_Click(sender As Object, e As EventArgs) Handles btnBrowseDragCurveHi.Click - SelectFile(ElectricMachineDragTorqueFileBrowser, tbDragTorqueHi) - End Sub - - Private Sub btnBrowseEmMap_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapHi.Click + Private Sub btnBrowseEmMap_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapHi.Click SelectFile(ElectricMachineEfficiencyMapFileBrowser, tbMapHi) End Sub diff --git a/VECTO/GUI/MainForm.Designer.vb b/VECTO/GUI/MainForm.Designer.vb index 12282beb5883bffc81a8fb7b04d211f9e5c6aa1f..883e66e0d823092a94c6834335e9c47b944d5c6d 100644 --- a/VECTO/GUI/MainForm.Designer.vb +++ b/VECTO/GUI/MainForm.Designer.vb @@ -443,9 +443,9 @@ Partial Class MainForm Me.Label2.AutoSize = true Me.Label2.Location = New System.Drawing.Point(7, 19) Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(84, 13) + Me.Label2.Size = New System.Drawing.Size(61, 13) Me.Label2.TabIndex = 1 - Me.Label2.Text = "Output Directory" + Me.Label2.Text = "Min Speed:" ' 'GroupBox4 ' @@ -730,80 +730,80 @@ Partial Class MainForm ' Me.GENEditorToolStripMenuItem1.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO Me.GENEditorToolStripMenuItem1.Name = "GENEditorToolStripMenuItem1" - Me.GENEditorToolStripMenuItem1.Size = New System.Drawing.Size(262, 30) + Me.GENEditorToolStripMenuItem1.Size = New System.Drawing.Size(254, 22) Me.GENEditorToolStripMenuItem1.Text = "Job Editor - Conventional Vehicle" ' 'JobEditorParallelHybridVehicleToolStripMenuItem ' Me.JobEditorParallelHybridVehicleToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO Me.JobEditorParallelHybridVehicleToolStripMenuItem.Name = "JobEditorParallelHybridVehicleToolStripMenuItem" - Me.JobEditorParallelHybridVehicleToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.JobEditorParallelHybridVehicleToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.JobEditorParallelHybridVehicleToolStripMenuItem.Text = "Job Editor - Parallel Hybrid Vehicle" ' 'JobEditorBatteryElectricVehicleToolStripMenuItem ' Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Name = "JobEditorBatteryElectricVehicleToolStripMenuItem" - Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.JobEditorBatteryElectricVehicleToolStripMenuItem.Text = "JobEditor - Battery Electric Vehicle" ' 'JobEditorEngineOnlyModeToolStripMenuItem ' Me.JobEditorEngineOnlyModeToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO Me.JobEditorEngineOnlyModeToolStripMenuItem.Name = "JobEditorEngineOnlyModeToolStripMenuItem" - Me.JobEditorEngineOnlyModeToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.JobEditorEngineOnlyModeToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.JobEditorEngineOnlyModeToolStripMenuItem.Text = "Job Editor - Engine Only Mode" ' 'EPTPJobEditorToolStripMenuItem ' Me.EPTPJobEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VECTO Me.EPTPJobEditorToolStripMenuItem.Name = "EPTPJobEditorToolStripMenuItem" - Me.EPTPJobEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.EPTPJobEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.EPTPJobEditorToolStripMenuItem.Text = "VTP Job Editor" ' 'VEHEditorToolStripMenuItem ' Me.VEHEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_VEH Me.VEHEditorToolStripMenuItem.Name = "VEHEditorToolStripMenuItem" - Me.VEHEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.VEHEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.VEHEditorToolStripMenuItem.Text = "Vehicle Editor" ' 'EngineEditorToolStripMenuItem ' Me.EngineEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_ENG Me.EngineEditorToolStripMenuItem.Name = "EngineEditorToolStripMenuItem" - Me.EngineEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.EngineEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.EngineEditorToolStripMenuItem.Text = "Engine Editor" ' 'GearboxEditorToolStripMenuItem ' Me.GearboxEditorToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_GBX Me.GearboxEditorToolStripMenuItem.Name = "GearboxEditorToolStripMenuItem" - Me.GearboxEditorToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.GearboxEditorToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.GearboxEditorToolStripMenuItem.Text = "Gearbox Editor" ' 'GraphToolStripMenuItem ' Me.GraphToolStripMenuItem.Image = Global.TUGraz.VECTO.My.Resources.Resources.F_Graph Me.GraphToolStripMenuItem.Name = "GraphToolStripMenuItem" - Me.GraphToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.GraphToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.GraphToolStripMenuItem.Text = "Graph" ' 'ToolStripSeparator6 ' Me.ToolStripSeparator6.Name = "ToolStripSeparator6" - Me.ToolStripSeparator6.Size = New System.Drawing.Size(259, 6) + Me.ToolStripSeparator6.Size = New System.Drawing.Size(251, 6) ' 'OpenLogToolStripMenuItem ' Me.OpenLogToolStripMenuItem.Name = "OpenLogToolStripMenuItem" - Me.OpenLogToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.OpenLogToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.OpenLogToolStripMenuItem.Text = "Open Log" ' 'SettingsToolStripMenuItem ' Me.SettingsToolStripMenuItem.Name = "SettingsToolStripMenuItem" - Me.SettingsToolStripMenuItem.Size = New System.Drawing.Size(262, 30) + Me.SettingsToolStripMenuItem.Size = New System.Drawing.Size(254, 22) Me.SettingsToolStripMenuItem.Text = "Settings" ' 'ToolStripDrDnBtInfo diff --git a/VECTO/Input Files/ElectricMachine.vb b/VECTO/Input Files/ElectricMachine.vb index 72740e0b4baef10958552e0971d3baf1ccd6041d..6c0136cbb970ff63155f44a665944de5f825acac 100644 --- a/VECTO/Input Files/ElectricMachine.vb +++ b/VECTO/Input Files/ElectricMachine.vb @@ -17,12 +17,11 @@ Public Class ElectricMachine public VoltageLevelLow As Double Private ReadOnly _fullLoadCurvePathLow As SubPath - Private ReadOnly _dragCurvePathLow As SubPath + Private ReadOnly _dragCurvePath As SubPath Private ReadOnly _efficiencyMapLow As SubPath public VoltageLevelHigh as Double Private ReadOnly _fullLoadCurvePathHi As SubPath - Private ReadOnly _dragCurvePathHi As SubPath Private ReadOnly _efficiencyMapHi As SubPath ''' <summary> @@ -54,12 +53,11 @@ Public Class ElectricMachine _filePath = "" _fullLoadCurvePathLow = New SubPath - _dragCurvePathLow = New SubPath() + _dragCurvePath = New SubPath() _efficiencyMapLow = New SubPath() _fullLoadCurvePathHi = New SubPath - _dragCurvePathHi = New SubPath() - _efficiencyMapHi = New SubPath() + _efficiencyMapHi = New SubPath() SetDefault() End Sub @@ -213,17 +211,17 @@ Public Class ElectricMachine Return VectoCSVFile.Read(_fullLoadCurvePathLow.FullPath) End Get End Property - protected ReadOnly Property DragCurvLow As TableData - Get - If Not File.Exists(_dragCurvePathLow.FullPath) Then _ - Throw New VectoException("Drag Curve is missing or invalid") - Return VectoCSVFile.Read(_dragCurvePathLow.FullPath) - End Get - End Property + 'protected ReadOnly Property DragCurvLow As TableData + ' Get + ' If Not File.Exists(_dragCurvePathLow.FullPath) Then _ + ' Throw New VectoException("Drag Curve is missing or invalid") + ' Return VectoCSVFile.Read(_dragCurvePathLow.FullPath) + ' End Get + 'End Property protected ReadOnly Property EfficiencyMapLow As TableData Get If Not File.Exists(_efficiencyMapLow.FullPath) Then _ - Throw New VectoException("Drag Curve is missing or invalid") + Throw New VectoException("EfficiencyMap is missing or invalid") Return VectoCSVFile.Read(_efficiencyMapLow.FullPath) End Get End Property @@ -234,17 +232,17 @@ Public Class ElectricMachine Return VectoCSVFile.Read(_fullLoadCurvePathHi.FullPath) End Get End Property - protected ReadOnly Property DragCurvHi As TableData - Get - If Not File.Exists(_dragCurvePathHi.FullPath) Then _ - Throw New VectoException("Drag Curve is missing or invalid") - Return VectoCSVFile.Read(_dragCurvePathHi.FullPath) - End Get - End Property + 'protected ReadOnly Property DragCurvHi As TableData + ' Get + ' If Not File.Exists(_dragCurvePathHi.FullPath) Then _ + ' Throw New VectoException("Drag Curve is missing or invalid") + ' Return VectoCSVFile.Read(_dragCurvePathHi.FullPath) + ' End Get + 'End Property protected ReadOnly Property EfficiencyMapHi As TableData Get If Not File.Exists(_efficiencyMapHi.FullPath) Then _ - Throw New VectoException("Drag Curve is missing or invalid") + Throw New VectoException("EfficiencyMap is missing or invalid") Return VectoCSVFile.Read(_efficiencyMapHi.FullPath) End Get End Property @@ -255,17 +253,23 @@ Public Class ElectricMachine New ElectricMotorVoltageLevel() With { .VoltageLevel = VoltageLevelLow.SI(of Volt), .EfficiencyMap = EfficiencyMapLow, - .DragCurve = DragCurvLow, .FullLoadCurve = FullLoadCurveLow}, New ElectricMotorVoltageLevel() With { .VoltageLevel = VoltageLevelHigh.SI(of Volt), .EfficiencyMap = EfficiencyMapHi, - .DragCurve = DragCurvHi, .FullLoadCurve = FullLoadCurveHi} } End Get End Property + Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve + Get + If Not File.Exists(_dragCurvePath.FullPath) Then _ + Throw New VectoException("Drag Curve is missing or invalid") + Return VectoCSVFile.Read(_dragCurvePath.FullPath) + End Get + end Property + Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia Get Return MotorInertia.SI(Of KilogramSquareMeter) @@ -317,16 +321,16 @@ Public Class ElectricMachine End Set End Property - Public Property PathDragLow(Optional ByVal original As Boolean = False) As String + Public Property PathDrag(Optional ByVal original As Boolean = False) As String Get If original Then - Return _dragCurvePathLow.OriginalPath + Return _dragCurvePath.OriginalPath Else - Return _dragCurvePathLow.FullPath + Return _dragCurvePath.FullPath End If End Get Set(ByVal value As String) - _dragCurvePathLow.Init(_myPath, value) + _dragCurvePath.Init(_myPath, value) End Set End Property @@ -356,18 +360,6 @@ Public Class ElectricMachine End Set End Property - Public Property PathDragHi(Optional ByVal original As Boolean = False) As String - Get - If original Then - Return _dragCurvePathHi.OriginalPath - Else - Return _dragCurvePathHi.FullPath - End If - End Get - Set(ByVal value As String) - _dragCurvePathHi.Init(_myPath, value) - End Set - End Property Public Property PathMapHi(Optional ByVal original As Boolean = False) As String Get diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index 5aca52896b85570b2b554c551b5a91baab43b162..0a2ea94fe774442baed7be20e9f696bca1c3d4dd 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -1043,6 +1043,7 @@ Public Class ElectricMachineWrapper Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IElectricMotorDeclarationInputData.VoltageLevels + Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia Public ReadOnly Property OverloadTime As Second Implements IElectricMotorDeclarationInputData.OverloadTime Public ReadOnly Property ContinuousTorqueSpeed As PerSecond Implements IElectricMotorDeclarationInputData.ContinuousTorqueSpeed diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index d8d748873feca24f29444a10f3225a68bced3a9a..f1f03f28f88cdc52b3e6a39dee733dc033d3a0bd 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -713,6 +713,8 @@ namespace TUGraz.VectoCommon.InputData { IList<IElectricMotorVoltageLevel> VoltageLevels { get; } + TableData DragCurve { get; } + KilogramSquareMeter Inertia { get; } Second OverloadTime { get; } @@ -734,8 +736,6 @@ namespace TUGraz.VectoCommon.InputData TableData FullLoadCurve { get; } - TableData DragCurve { get; } - TableData EfficiencyMap { get; } } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs index 2e537cda6e410bae087b96e8a050f1453046a4e3..111a8cc108be9dbbecb36f869b076438cb521023 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Configuration; using System.Linq; using Newtonsoft.Json.Linq; using TUGraz.VectoCommon.InputData; @@ -7,10 +8,19 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.Impl; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.JSON { + public class JSONElectricMotorV4 : JSONElectricMotorV3 + { + public JSONElectricMotorV4(JObject data, string filename, bool tolerateMissing = false) : base(data, filename, tolerateMissing) { } + + public override TableData DragCurve => ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"); + + } + public class JSONElectricMotorV3 : JSONElectricMotorV2 { public JSONElectricMotorV3(JObject data, string filename, bool tolerateMissing = false) : base(data, filename, tolerateMissing) { } @@ -22,11 +32,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON return Body["VoltageLevels"].Select(entry => new ElectricMotorVoltageLevel() { VoltageLevel = entry.GetEx<double>("Voltage").SI<Volt>(), EfficiencyMap = ReadTableData(entry.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"), - DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + //DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), FullLoadCurve = ReadTableData(entry.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") }).Cast<IElectricMotorVoltageLevel>().ToList(); } + public override TableData DragCurve=> Body["VoltageLevels"].Select(x => ReadTableData(x.GetEx<string>("DragCurve"), "ElectricMotor DragCurve")).First(); + + #endregion } @@ -64,13 +77,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON new ElectricMotorVoltageLevel() { VoltageLevel = 0.SI<Volt>(), EfficiencyMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"), - DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + //DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") }, new ElectricMotorVoltageLevel() { VoltageLevel = 1e9.SI<Volt>(), EfficiencyMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"), - DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + //DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") }, }; @@ -78,15 +91,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public DigestData DigestValue => null; - public virtual TableData FullLoadCurve => ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve"); + //public virtual TableData FullLoadCurve => ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve"); public virtual TableData DragCurve => ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"); - public virtual TableData EfficiencyMap => ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"); + //public virtual TableData EfficiencyMap => ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"); public virtual KilogramSquareMeter Inertia => Body.GetEx<double>("Inertia").SI<KilogramSquareMeter>(); - public virtual Joule OverloadBuffer => Body.GetValueOrDefault<double>("ThermalOverloadBuffer")?.SI(Unit.SI.Mega.Joule).Cast<Joule>() ?? 1e18.SI<Joule>(); + //public virtual Joule OverloadBuffer => Body.GetValueOrDefault<double>("ThermalOverloadBuffer")?.SI(Unit.SI.Mega.Joule).Cast<Joule>() ?? 1e18.SI<Joule>(); public virtual double OverloadRecoveryFactor => Body.GetValueOrDefault<double>("ThermalOverloadRecoveryFactor") ?? 0.9; diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs index 4e9c56a7f2ad3a515057f9cccbd11c5b6f0df851..08573d70a716091588bfaf761a7373bb440cde39 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs @@ -214,6 +214,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON return new JSONElectricMotorV2(json, filename, tolerateMissing); case 3: return new JSONElectricMotorV3(json, filename, tolerateMissing); + case 4: + return new JSONElectricMotorV4(json, filename, tolerateMissing); default: throw new VectoException("ElectricMotor-File: Unsupported FileVersion. Got {0}", version); } diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index 2468d3d0bdc5fb7ce9ab4f070712e2139e73f950..386b4c6ff0188df6af1cf9bf7b5bfa6f64766317 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -299,7 +299,7 @@ namespace TUGraz.VectoCore.InputData.Impl public Volt VoltageLevel { get; internal set; } public TableData FullLoadCurve { get; internal set; } - public TableData DragCurve { get; internal set; } + //public TableData DragCurve { get; internal set; } public TableData EfficiencyMap { get; internal set; } #endregion diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index 8b613d79b179aa919a43779509b90cf953ac3157..e803c63d34de47c33ee208a139368f048ad42e94 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -889,7 +889,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter voltageLevels.Add(new ElectricMotorVoltageLevelData() { Voltage = entry.VoltageLevel, FullLoadCurve = fullLoadCurveCombined, - DragCurve = ElectricMotorDragCurveReader.Create(entry.DragCurve, count), + //DragCurve = ElectricMotorDragCurveReader.Create(entry.DragCurve, count), EfficiencyMap = ElectricMotorMapReader.Create(entry.EfficiencyMap, count), }); } @@ -901,6 +901,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return new ElectricMotorData() { EfficiencyData = new VoltageLevelData() { VoltageLevels = voltageLevels}, + DragCurve = ElectricMotorDragCurveReader.Create(motorData.DragCurve, count), Inertia = motorData.Inertia, ContinuousTorque = motorData.ContinuousTorque * count, ContinuousTorqueSpeed = motorData.ContinuousTorqueSpeed, diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs index 67ec469a5dda78b937555de8f3c41d08a603a26f..91e17a240c5e61f4b6ce7e201d4bcc45717d3160 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs @@ -41,6 +41,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data [ValidateObject] public VoltageLevelData EfficiencyData { get; internal set; } + + [ValidateObject] + public DragCurve DragCurve { get; internal set; } } public class VoltageLevelData @@ -54,12 +57,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data _maxSpeed ?? (_maxSpeed = VoltageLevels .Min(v => VectoMath.Min(v.EfficiencyMap.MaxSpeed, v.FullLoadCurve.MaxSpeed))); - public NewtonMeter LookupDragTorque(Volt voltage, PerSecond avgSpeed) { - var (a, b) = GetSection(voltage); - return VectoMath.Interpolate(a.Voltage, b.Voltage, - a.DragCurve.Lookup(avgSpeed), b.DragCurve.Lookup(avgSpeed), voltage); - } - + public NewtonMeter EfficiencyMapLookupTorque(Volt voltage, Watt electricPower, PerSecond avgSpeed, NewtonMeter maxEmTorque) { if (avgSpeed.IsGreaterOrEqual(MaxSpeed)) { @@ -157,9 +155,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data [ValidateObject] public ElectricMotorFullLoadCurve FullLoadCurve { get; internal set; } - [ValidateObject] - public DragCurve DragCurve { get; internal set; } - [ValidateObject] public EfficiencyMap EfficiencyMap { get; internal set; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs index 8a5429fb4071fad592759f301a135cf2e4fb4df4..c9c30009eb506810106e3665c88041e2ecbb9a25 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs @@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public Watt DragPower(Volt volt, PerSecond electricMotorSpeed) { - return ModelData.EfficiencyData.LookupDragTorque(volt, electricMotorSpeed) * electricMotorSpeed; + return ModelData.DragCurve.Lookup(electricMotorSpeed) * electricMotorSpeed; } public Watt MaxPowerDrive(Volt volt, PerSecond electricMotorSpeed) @@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl // no electric system or EM shall be off - apply drag only // if EM is off, calculate EM drag torque 'forward' to be applied on drivetrain // add inertia, drag is positive - emTorque = ModelData.EfficiencyData.LookupDragTorque(voltage, avgEmSpeed) + inertiaTorqueEm; + emTorque = ModelData.DragCurve.Lookup(avgEmSpeed) + inertiaTorqueEm; emTorqueDt = ConvertEmTorqueToDrivetrain(avgEmSpeed, emTorque); emOff = true; } @@ -274,7 +274,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl emTorqueMap = null; } - var electricPower = emOff || (ModelData.EfficiencyData.LookupDragTorque(voltage, avgEmSpeed) + inertiaTorqueEm).IsEqual(emTorque, 1e-3.SI<NewtonMeter>()) + var electricPower = emOff || (ModelData.DragCurve.Lookup(avgEmSpeed) + inertiaTorqueEm).IsEqual(emTorque, 1e-3.SI<NewtonMeter>()) ? 0.SI<Watt>() : ModelData.EfficiencyData .LookupElectricPower(voltage, avgEmSpeed, emTorqueMap, DataBus.ExecutionMode != ExecutionMode.Declaration) @@ -409,7 +409,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } var maxBatRecuperationTorque = maxBatPower.IsEqual(0, 1e-3) - ? ModelData.EfficiencyData.LookupDragTorque(volt, avgSpeed) + ? ModelData.DragCurve.Lookup(avgSpeed) : ModelData.EfficiencyData.EfficiencyMapLookupTorque(volt, maxBatPower, avgSpeed, maxEmTorque); var maxTorqueRecuperate = VectoMath.Min(maxEmTorque, maxBatRecuperationTorque); if (maxTorqueRecuperate < 0) { @@ -437,7 +437,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } var maxBatDriveTorque = maxBatPower.IsEqual(0, 1e-3) - ? ModelData.EfficiencyData.LookupDragTorque(volt, avgSpeed) + ? ModelData.DragCurve.Lookup(avgSpeed) : ModelData.EfficiencyData.EfficiencyMapLookupTorque(volt, maxBatPower, avgSpeed, maxEmTorque); var maxTorqueDrive = VectoMath.Max(maxEmTorque, maxBatDriveTorque); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index 9264e039e32ffd7598e5da1f74353f839e1fa158..0683ea1db800a1f74d264993f5b5b7cebf1fe74b 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -1871,7 +1871,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies var emDriveTorque = DataBus.ElectricMotorInfo(emPos).GetTorqueForElectricPower(voltage, emDrivePower, firstResponse.ElectricMotor.AngularVelocity, dt); var emDragTorque = ModelData.ElectricMachinesData.First(x => x.Item1 == emPos).Item2 - .EfficiencyData.LookupDragTorque(voltage, firstResponse.ElectricMotor.AngularVelocity); + .DragCurve.Lookup(firstResponse.ElectricMotor.AngularVelocity); if (emDriveTorque != null && emDriveTorque.IsBetween( firstResponse.ElectricMotor.MaxRecuperationTorque, firstResponse.ElectricMotor.MaxDriveTorque) && diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs index ff256764d9e7401d11fbfb540570642ffd6304a6..e8eea0d5a7f55dda529e23567cc7cf5119538fce 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs @@ -11,6 +11,7 @@ using TUGraz.VectoCommon.OutputData; using TUGraz.VectoCore; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.SimulationComponent.Data; public class JSONFileWriter : IOutputFileWriter { @@ -34,7 +35,7 @@ public class JSONFileWriter : IOutputFileWriter private const int VectoVTPJobFormatVersion = 4; - private const int ElectricMotorFormatVersion = 3; + private const int ElectricMotorFormatVersion = 4; private const int REESSFormatVersion = 1; @@ -89,13 +90,14 @@ public class JSONFileWriter : IOutputFileWriter body.Add("OverloadTorqueSpeed", electricMachine.OverloadTestSpeed.AsRPM); body.Add("OverloadTime", electricMachine.OverloadTime.Value()); body.Add("ThermalOverloadRecoveryFactor", electricMachine.OverloadRecoveryFactor); + body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))); var vlevels = new List<Dictionary<string, object>>(); foreach (var entry in electricMachine.VoltageLevels) { var vlevel = new Dictionary<string, object>(); vlevel.Add("Voltage", entry.VoltageLevel.Value()); vlevel.Add("FullLoadCurve", GetRelativePath(entry.FullLoadCurve.Source, Path.GetDirectoryName(filename))); - vlevel.Add("DragCurve", GetRelativePath(entry.DragCurve.Source, Path.GetDirectoryName(filename))); + //vlevel.Add("DragCurve", GetRelativePath(entry.DragCurve.Source, Path.GetDirectoryName(filename))); vlevel.Add("EfficiencyMap", GetRelativePath(entry.EfficiencyMap.Source, Path.GetDirectoryName(filename))); vlevels.Add(vlevel); } diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs index ce7a39972d809b1159e887e5f43ee05d725f3b2c..fff7330b5f4ef65f141cab70210848663d01b52a 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs @@ -140,6 +140,12 @@ namespace TUGraz.VectoCore.Tests.FileIO var daa = new EngineeringDataAdapter(); var emData = daa.CreateElectricMachines(inputProvider.ElectricMachines, null).First().Item2; + + Assert.AreEqual(26, emData.DragCurve.Lookup(2000.RPMtoRad()).Value()); + Assert.AreEqual(33, emData.DragCurve.Lookup(2000.RPMtoRad()).Value()); + Assert.AreEqual(29.5, emData.DragCurve.Lookup(2000.RPMtoRad()).Value()); + Assert.AreEqual(31.25, emData.DragCurve.Lookup(2000.RPMtoRad()).Value()); + var em = emData.EfficiencyData; Assert.AreEqual(-334.2300, em.FullLoadDriveTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value()); @@ -152,11 +158,6 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(370.153, em.FullGenerationTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value()); Assert.AreEqual(388.1145, em.FullGenerationTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value()); - Assert.AreEqual(26, em.LookupDragTorque(400.SI<Volt>(), 2000.RPMtoRad()).Value()); - Assert.AreEqual(33, em.LookupDragTorque(600.SI<Volt>(), 2000.RPMtoRad()).Value()); - Assert.AreEqual(29.5, em.LookupDragTorque(500.SI<Volt>(), 2000.RPMtoRad()).Value()); - Assert.AreEqual(31.25, em.LookupDragTorque(550.SI<Volt>(), 2000.RPMtoRad()).Value()); - Assert.AreEqual(-101.760, em.EfficiencyMapLookupTorque(400.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3); Assert.AreEqual(-115.1818, em.EfficiencyMapLookupTorque(600.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3); Assert.AreEqual(14.5383, em.EfficiencyMapLookupTorque(500.SI<Volt>(), -25000.SI<Watt>(), 2000.RPMtoRad(), -300.SI<NewtonMeter>()).Value(), 1e-3); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs index f8861e6e389997e169f7775fc18ba2138558aa16..fce37835bec5d61e96b89c4fb634ccaf569561df 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs @@ -276,7 +276,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var response = motor.Request(absTime, dt, torque.SI<NewtonMeter>(), speed.RPMtoRad()); Assert.IsInstanceOf<ResponseSuccess>(response); - var dragTorque = data.First().Item2.EfficiencyData.VoltageLevels.First().DragCurve.Lookup(speed.RPMtoRad()); + var dragTorque = data.First().Item2.DragCurve.Lookup(speed.RPMtoRad()); var enginePower = speed.RPMtoRad() * (torque.SI<NewtonMeter>() + dragTorque); var motorMechPower = dragTorque * speed.RPMtoRad(); Assert.AreEqual(enginePower.Value(), response.Engine.PowerRequest.Value(), 1e-6);