diff --git a/Default Data/VDRI/Construction_Cycle.vdri b/Default Data/VDRI/Construction.vdri similarity index 100% rename from Default Data/VDRI/Construction_Cycle.vdri rename to Default Data/VDRI/Construction.vdri diff --git a/Demo Data/12t Demo/Demo_Declaration.vecto b/Demo Data/12t Demo/Demo_Declaration.vecto index 270007ad97ed91dba34b7562d69836a542746b98..b2e8ac7463f312f820519a1d79756e3d973cb90f 100644 --- a/Demo Data/12t Demo/Demo_Declaration.vecto +++ b/Demo Data/12t Demo/Demo_Declaration.vecto @@ -18,12 +18,12 @@ { "ID": "ALT", "Type": "Alternator", - "Path": "..\\Demo_AuxAlternator.vaux" + "Path": "Demo_AuxAlternator.vaux" }, { "ID": "DEMO", "Type": "Demo", - "Path": "..\\Demo_AuxDevice.vaux" + "Path": "Demo_AuxDevice.vaux" } ], "VACC": "..\\..\\Default Data\\VACC\\Truck.vacc", diff --git a/User Manual Source/Update Notes.pptx b/User Manual Source/Update Notes.pptx index 5bf6aaac2ea3e9601557f69ff5d9a1a45fb22b04..72fcb88f69d823ca911d53dc398ad9778037c3bf 100644 Binary files a/User Manual Source/Update Notes.pptx and b/User Manual Source/Update Notes.pptx differ diff --git a/User Manual/GUI/GBX-Editor.html b/User Manual/GUI/GBX-Editor.html index a8fd5f02671e854dca460f1e815a237697bbd1cf..aaeb15e2a53747a3d2b22f10753effe0fdb8c1a6 100644 --- a/User Manual/GUI/GBX-Editor.html +++ b/User Manual/GUI/GBX-Editor.html @@ -293,7 +293,7 @@ specific reference engine speed (see below).<br> <br> The Input Torque at reference engine speed is needed to -needed to calculate the actual engine torque using this formula:<br> +calculate the actual engine torque using this formula:<br> <img style="width: 300px; height: 72px;" alt="" src="pics/GBX-TC2.png"><br> with:<br> <div style="margin-left: 40px;">T<sub>in</sub> diff --git a/VECTO/ApplicationEvents.vb b/VECTO/ApplicationEvents.vb index 4b074345dc01063ed7ac1a2a401c5ee709fac323..9fa4e2cece85dbfb6e91ad61f396f6f09caf5d36 100644 --- a/VECTO/ApplicationEvents.vb +++ b/VECTO/ApplicationEvents.vb @@ -88,7 +88,7 @@ Namespace My JobFileList = New List(Of String) JobCycleList = New List(Of String) DEV = New cDEV - VEC = New cVECTO + Declaration = New cDeclaration Cfg = New cConfig 'ACHTUNG: cConfig.New löst cConfig.SetDefault aus welches sKey benötigt dehalb muss sKey schon vorher initialisiert werden!! diff --git a/VECTO/GUI/F_ENG.Designer.vb b/VECTO/GUI/F_ENG.Designer.vb index a7ef0f58857e5f7dca21aabea5717350be8a0cb4..946f19183df10fc4330ea0a92a4c62d7a54a8de6 100644 --- a/VECTO/GUI/F_ENG.Designer.vb +++ b/VECTO/GUI/F_ENG.Designer.vb @@ -51,9 +51,6 @@ Partial Class F_ENG Me.TbMAP = New System.Windows.Forms.TextBox() Me.Label6 = New System.Windows.Forms.Label() Me.BtMAP = New System.Windows.Forms.Button() - Me.TbWHTC = New System.Windows.Forms.TextBox() - Me.Label7 = New System.Windows.Forms.Label() - Me.BtWHTC = New System.Windows.Forms.Button() Me.PictureBox1 = New System.Windows.Forms.PictureBox() Me.CmOpenFile = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.OpenWithGRAPHiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -67,11 +64,24 @@ Partial Class F_ENG Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.GroupBox1 = New System.Windows.Forms.GroupBox() Me.Label32 = New System.Windows.Forms.Label() + Me.PnInertia = New System.Windows.Forms.Panel() + Me.GrWHTC = New System.Windows.Forms.GroupBox() + Me.TbWHTCmw = New System.Windows.Forms.TextBox() + Me.TbWHTCrural = New System.Windows.Forms.TextBox() + Me.TbWHTCurban = New System.Windows.Forms.TextBox() + Me.Label8 = New System.Windows.Forms.Label() + Me.Label12 = New System.Windows.Forms.Label() + Me.Label10 = New System.Windows.Forms.Label() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label7 = New System.Windows.Forms.Label() + Me.Label4 = New System.Windows.Forms.Label() Me.ToolStrip1.SuspendLayout() Me.StatusStrip1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.CmOpenFile.SuspendLayout() Me.GroupBox1.SuspendLayout() + Me.PnInertia.SuspendLayout() + Me.GrWHTC.SuspendLayout() Me.SuspendLayout() ' 'TbNleerl @@ -79,7 +89,7 @@ Partial Class F_ENG Me.TbNleerl.Location = New System.Drawing.Point(123, 108) Me.TbNleerl.Name = "TbNleerl" Me.TbNleerl.Size = New System.Drawing.Size(57, 20) - Me.TbNleerl.TabIndex = 4 + Me.TbNleerl.TabIndex = 1 ' 'Label11 ' @@ -92,7 +102,7 @@ Partial Class F_ENG ' 'TbInertia ' - Me.TbInertia.Location = New System.Drawing.Point(388, 108) + Me.TbInertia.Location = New System.Drawing.Point(120, 2) Me.TbInertia.Name = "TbInertia" Me.TbInertia.Size = New System.Drawing.Size(57, 20) Me.TbInertia.TabIndex = 3 @@ -100,7 +110,7 @@ Partial Class F_ENG 'Label41 ' Me.Label41.AutoSize = True - Me.Label41.Location = New System.Drawing.Point(451, 111) + Me.Label41.Location = New System.Drawing.Point(183, 5) Me.Label41.Name = "Label41" Me.Label41.Size = New System.Drawing.Size(36, 13) Me.Label41.TabIndex = 24 @@ -118,7 +128,7 @@ Partial Class F_ENG 'Label5 ' Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(280, 111) + Me.Label5.Location = New System.Drawing.Point(12, 5) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(102, 13) Me.Label5.TabIndex = 0 @@ -128,7 +138,7 @@ Partial Class F_ENG ' 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(418, 439) + Me.ButCancel.Location = New System.Drawing.Point(418, 469) Me.ButCancel.Name = "ButCancel" Me.ButCancel.Size = New System.Drawing.Size(75, 23) Me.ButCancel.TabIndex = 13 @@ -138,7 +148,7 @@ Partial Class F_ENG '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(337, 439) + Me.ButOK.Location = New System.Drawing.Point(337, 469) Me.ButOK.Name = "ButOK" Me.ButOK.Size = New System.Drawing.Size(75, 23) Me.ButOK.TabIndex = 12 @@ -227,7 +237,7 @@ Partial Class F_ENG 'StatusStrip1 ' Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus}) - Me.StatusStrip1.Location = New System.Drawing.Point(0, 465) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 495) Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.Size = New System.Drawing.Size(505, 22) Me.StatusStrip1.SizingGrip = False @@ -286,7 +296,7 @@ Partial Class F_ENG Me.TbMAP.Location = New System.Drawing.Point(12, 351) Me.TbMAP.Name = "TbMAP" Me.TbMAP.Size = New System.Drawing.Size(418, 20) - Me.TbMAP.TabIndex = 8 + Me.TbMAP.TabIndex = 5 ' 'Label6 ' @@ -302,40 +312,11 @@ Partial Class F_ENG Me.BtMAP.Location = New System.Drawing.Point(436, 349) Me.BtMAP.Name = "BtMAP" Me.BtMAP.Size = New System.Drawing.Size(28, 23) - Me.BtMAP.TabIndex = 9 + Me.BtMAP.TabIndex = 6 Me.BtMAP.TabStop = False Me.BtMAP.Text = "..." Me.BtMAP.UseVisualStyleBackColor = True ' - 'TbWHTC - ' - Me.TbWHTC.Enabled = False - Me.TbWHTC.Location = New System.Drawing.Point(12, 401) - Me.TbWHTC.Name = "TbWHTC" - Me.TbWHTC.Size = New System.Drawing.Size(447, 20) - Me.TbWHTC.TabIndex = 10 - ' - 'Label7 - ' - Me.Label7.AutoSize = True - Me.Label7.Enabled = False - Me.Label7.Location = New System.Drawing.Point(12, 385) - Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(109, 13) - Me.Label7.TabIndex = 38 - Me.Label7.Text = "Calibration Test Cycle" - ' - 'BtWHTC - ' - Me.BtWHTC.Enabled = False - Me.BtWHTC.Location = New System.Drawing.Point(465, 399) - Me.BtWHTC.Name = "BtWHTC" - Me.BtWHTC.Size = New System.Drawing.Size(28, 23) - Me.BtWHTC.TabIndex = 11 - Me.BtWHTC.TabStop = False - Me.BtWHTC.Text = "..." - Me.BtWHTC.UseVisualStyleBackColor = True - ' 'PictureBox1 ' Me.PictureBox1.BackColor = System.Drawing.Color.White @@ -376,7 +357,7 @@ Partial Class F_ENG Me.BtMAPopen.Location = New System.Drawing.Point(470, 349) Me.BtMAPopen.Name = "BtMAPopen" Me.BtMAPopen.Size = New System.Drawing.Size(23, 23) - Me.BtMAPopen.TabIndex = 40 + Me.BtMAPopen.TabIndex = 7 Me.BtMAPopen.TabStop = False Me.BtMAPopen.UseVisualStyleBackColor = True ' @@ -386,7 +367,7 @@ Partial Class F_ENG Me.BtAddFLD.Location = New System.Drawing.Point(6, 133) Me.BtAddFLD.Name = "BtAddFLD" Me.BtAddFLD.Size = New System.Drawing.Size(29, 23) - Me.BtAddFLD.TabIndex = 42 + Me.BtAddFLD.TabIndex = 1 Me.BtAddFLD.UseVisualStyleBackColor = True ' 'BtRemFLD @@ -395,7 +376,7 @@ Partial Class F_ENG Me.BtRemFLD.Location = New System.Drawing.Point(43, 133) Me.BtRemFLD.Name = "BtRemFLD" Me.BtRemFLD.Size = New System.Drawing.Size(29, 23) - Me.BtRemFLD.TabIndex = 43 + Me.BtRemFLD.TabIndex = 2 Me.BtRemFLD.UseVisualStyleBackColor = True ' 'LvFLDs @@ -408,7 +389,7 @@ Partial Class F_ENG Me.LvFLDs.MultiSelect = False Me.LvFLDs.Name = "LvFLDs" Me.LvFLDs.Size = New System.Drawing.Size(469, 108) - Me.LvFLDs.TabIndex = 41 + Me.LvFLDs.TabIndex = 0 Me.LvFLDs.TabStop = False Me.LvFLDs.UseCompatibleStateImageBehavior = False Me.LvFLDs.View = System.Windows.Forms.View.Details @@ -432,7 +413,7 @@ Partial Class F_ENG Me.GroupBox1.Location = New System.Drawing.Point(12, 160) Me.GroupBox1.Name = "GroupBox1" Me.GroupBox1.Size = New System.Drawing.Size(481, 162) - Me.GroupBox1.TabIndex = 44 + Me.GroupBox1.TabIndex = 4 Me.GroupBox1.TabStop = False Me.GroupBox1.Text = "Full Load and Drag Curves" ' @@ -445,18 +426,122 @@ Partial Class F_ENG Me.Label32.TabIndex = 44 Me.Label32.Text = "Double-Click to edit item" ' + 'PnInertia + ' + Me.PnInertia.Controls.Add(Me.Label5) + Me.PnInertia.Controls.Add(Me.Label41) + Me.PnInertia.Controls.Add(Me.TbInertia) + Me.PnInertia.Location = New System.Drawing.Point(264, 106) + Me.PnInertia.Name = "PnInertia" + Me.PnInertia.Size = New System.Drawing.Size(229, 32) + Me.PnInertia.TabIndex = 3 + ' + 'GrWHTC + ' + Me.GrWHTC.Controls.Add(Me.TbWHTCmw) + Me.GrWHTC.Controls.Add(Me.TbWHTCrural) + Me.GrWHTC.Controls.Add(Me.TbWHTCurban) + Me.GrWHTC.Controls.Add(Me.Label8) + Me.GrWHTC.Controls.Add(Me.Label12) + Me.GrWHTC.Controls.Add(Me.Label10) + Me.GrWHTC.Controls.Add(Me.Label9) + Me.GrWHTC.Controls.Add(Me.Label7) + Me.GrWHTC.Controls.Add(Me.Label4) + Me.GrWHTC.Enabled = False + Me.GrWHTC.Location = New System.Drawing.Point(12, 392) + Me.GrWHTC.Name = "GrWHTC" + Me.GrWHTC.Size = New System.Drawing.Size(481, 61) + Me.GrWHTC.TabIndex = 9 + Me.GrWHTC.TabStop = False + Me.GrWHTC.Text = "WHTC Test Results" + ' + 'TbWHTCmw + ' + Me.TbWHTCmw.Location = New System.Drawing.Point(348, 28) + Me.TbWHTCmw.Name = "TbWHTCmw" + Me.TbWHTCmw.Size = New System.Drawing.Size(57, 20) + Me.TbWHTCmw.TabIndex = 2 + ' + 'TbWHTCrural + ' + Me.TbWHTCrural.Location = New System.Drawing.Point(192, 28) + Me.TbWHTCrural.Name = "TbWHTCrural" + Me.TbWHTCrural.Size = New System.Drawing.Size(57, 20) + Me.TbWHTCrural.TabIndex = 1 + ' + 'TbWHTCurban + ' + Me.TbWHTCurban.Location = New System.Drawing.Point(36, 28) + Me.TbWHTCurban.Name = "TbWHTCurban" + Me.TbWHTCurban.Size = New System.Drawing.Size(57, 20) + Me.TbWHTCurban.TabIndex = 0 + ' + 'Label8 + ' + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(317, 31) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(25, 13) + Me.Label8.TabIndex = 0 + Me.Label8.Text = "Mot" + ' + 'Label12 + ' + Me.Label12.AutoSize = True + Me.Label12.Location = New System.Drawing.Point(411, 31) + Me.Label12.Name = "Label12" + Me.Label12.Size = New System.Drawing.Size(47, 13) + Me.Label12.TabIndex = 0 + Me.Label12.Text = "[g/kWh]" + ' + 'Label10 + ' + Me.Label10.AutoSize = True + Me.Label10.Location = New System.Drawing.Point(255, 31) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(47, 13) + Me.Label10.TabIndex = 0 + Me.Label10.Text = "[g/kWh]" + ' + 'Label9 + ' + Me.Label9.AutoSize = True + Me.Label9.Location = New System.Drawing.Point(99, 31) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(47, 13) + Me.Label9.TabIndex = 0 + Me.Label9.Text = "[g/kWh]" + ' + 'Label7 + ' + Me.Label7.AutoSize = True + Me.Label7.Location = New System.Drawing.Point(162, 31) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(24, 13) + Me.Label7.TabIndex = 0 + Me.Label7.Text = "Rur" + ' + 'Label4 + ' + Me.Label4.AutoSize = True + Me.Label4.Location = New System.Drawing.Point(6, 31) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(24, 13) + Me.Label4.TabIndex = 0 + Me.Label4.Text = "Urb" + ' 'F_ENG ' Me.AcceptButton = Me.ButOK Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.ButCancel - Me.ClientSize = New System.Drawing.Size(505, 487) + Me.ClientSize = New System.Drawing.Size(505, 517) + Me.Controls.Add(Me.GrWHTC) + Me.Controls.Add(Me.PnInertia) Me.Controls.Add(Me.GroupBox1) Me.Controls.Add(Me.BtMAPopen) Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.BtWHTC) - Me.Controls.Add(Me.Label7) Me.Controls.Add(Me.BtMAP) Me.Controls.Add(Me.Label6) Me.Controls.Add(Me.TbNleerl) @@ -467,15 +552,11 @@ Partial Class F_ENG Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.ButCancel) Me.Controls.Add(Me.ButOK) - Me.Controls.Add(Me.TbWHTC) Me.Controls.Add(Me.TbMAP) - Me.Controls.Add(Me.TbInertia) - Me.Controls.Add(Me.Label41) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.Label40) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.TbName) - Me.Controls.Add(Me.Label5) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MaximizeBox = False @@ -490,6 +571,10 @@ Partial Class F_ENG Me.CmOpenFile.ResumeLayout(False) Me.GroupBox1.ResumeLayout(False) Me.GroupBox1.PerformLayout() + Me.PnInertia.ResumeLayout(False) + Me.PnInertia.PerformLayout() + Me.GrWHTC.ResumeLayout(False) + Me.GrWHTC.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -519,9 +604,6 @@ Partial Class F_ENG Friend WithEvents TbMAP As System.Windows.Forms.TextBox Friend WithEvents Label6 As System.Windows.Forms.Label Friend WithEvents BtMAP As System.Windows.Forms.Button - Friend WithEvents TbWHTC As System.Windows.Forms.TextBox - Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents BtWHTC As System.Windows.Forms.Button Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton @@ -537,4 +619,15 @@ Partial Class F_ENG Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox Friend WithEvents Label32 As System.Windows.Forms.Label + Friend WithEvents PnInertia As System.Windows.Forms.Panel + Friend WithEvents GrWHTC As System.Windows.Forms.GroupBox + Friend WithEvents TbWHTCmw As System.Windows.Forms.TextBox + Friend WithEvents TbWHTCrural As System.Windows.Forms.TextBox + Friend WithEvents TbWHTCurban As System.Windows.Forms.TextBox + Friend WithEvents Label8 As System.Windows.Forms.Label + Friend WithEvents Label12 As System.Windows.Forms.Label + Friend WithEvents Label10 As System.Windows.Forms.Label + Friend WithEvents Label9 As System.Windows.Forms.Label + Friend WithEvents Label7 As System.Windows.Forms.Label + Friend WithEvents Label4 As System.Windows.Forms.Label End Class diff --git a/VECTO/GUI/F_ENG.vb b/VECTO/GUI/F_ENG.vb index 9036dd620abcd136d2896ae59b5790628550e0b3..d088e4d13f4471613780f281185b509b77acafdf 100644 --- a/VECTO/GUI/F_ENG.vb +++ b/VECTO/GUI/F_ENG.vb @@ -19,10 +19,25 @@ FLDdia = New F_FLD + If Declaration.Active Then + Me.PnInertia.Enabled = False + Me.GrWHTC.Enabled = True + Else + Me.GrWHTC.Enabled = False + End If + + Changed = False newENG() End Sub + Private Sub DeclInit() + + If Not Declaration.Active Then Exit Sub + + Me.TbInertia.Text = CStr(Declaration.GetEngInertia(fTextboxToNumString(Me.TbDispl.Text))) + End Sub + #Region "ToolStrip" Private Sub ToolStripBtNew_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripBtNew.Click @@ -53,15 +68,15 @@ End If End If - If Not F_GEN.Visible Then + If Not F_VECTO.Visible Then GenDir = "" - F_GEN.Show() - F_GEN.GENnew() + F_VECTO.Show() + F_VECTO.GENnew() Else - F_GEN.WindowState = FormWindowState.Normal + F_VECTO.WindowState = FormWindowState.Normal End If - F_GEN.TbENG.Text = fFileWoDir(EngFile, GenDir) + F_VECTO.TbENG.Text = fFileWoDir(EngFile, GenDir) End Sub @@ -85,7 +100,13 @@ Me.TbNleerl.Text = "" Me.LvFLDs.Items.Clear() Me.TbMAP.Text = "" - Me.TbWHTC.Text = "" + Me.TbWHTCurban.Text = "" + Me.TbWHTCrural.Text = "" + Me.TbWHTCmw.Text = "" + + + DeclInit() + EngFile = "" Me.Text = "ENG Editor" @@ -114,7 +135,7 @@ Me.TbName.Text = ENG0.ModelName Me.TbDispl.Text = ENG0.Displ.ToString Me.TbInertia.Text = ENG0.I_mot.ToString - Me.TbNleerl.Text = ENG0.nleerl.ToString + Me.TbNleerl.Text = ENG0.Nidle.ToString Me.LvFLDs.Items.Clear() For i = 0 To ENG0.fFLD.Count - 1 @@ -124,7 +145,14 @@ Next Me.TbMAP.Text = ENG0.PathMAP(True) - Me.TbWHTC.Text = ENG0.PathWHTC(True) + Me.TbWHTCurban.Text = ENG0.WHTCurban + Me.TbWHTCrural.Text = ENG0.WHTCrural + Me.TbWHTCmw.Text = ENG0.WHTCmw + + + DeclInit() + + fbENG.UpdateHistory(file) Me.Text = fFILE(file, True) @@ -167,7 +195,7 @@ If Trim(ENG0.ModelName) = "" Then ENG0.ModelName = "Undefined" ENG0.Displ = CSng(fTextboxToNumString(Me.TbDispl.Text)) ENG0.I_mot = CSng(fTextboxToNumString(Me.TbInertia.Text)) - ENG0.nleerl = CSng(fTextboxToNumString(Me.TbNleerl.Text)) + ENG0.Nidle = CSng(fTextboxToNumString(Me.TbNleerl.Text)) For i = 0 To Me.LvFLDs.Items.Count - 1 ENG0.fFLD.Add(New cSubPath) @@ -176,7 +204,14 @@ Next ENG0.PathMAP = Me.TbMAP.Text - ENG0.PathWHTC = Me.TbWHTC.Text + + + ENG0.WHTCurban = CSng(fTextboxToNumString(Me.TbWHTCurban.Text)) + ENG0.WHTCrural = CSng(fTextboxToNumString(Me.TbWHTCrural.Text)) + ENG0.WHTCmw = CSng(fTextboxToNumString(Me.TbWHTCmw.Text)) + + + If Not ENG0.SaveFile Then MsgBox("Cannot safe to " & file, MsgBoxStyle.Critical) @@ -184,7 +219,7 @@ End If If Not GenDir = "" Or AutoSendTo Then - If F_GEN.Visible And UCase(fFileRepl(F_GEN.TbENG.Text, GenDir)) <> UCase(file) Then F_GEN.TbENG.Text = fFileWoDir(file, GenDir) + If F_VECTO.Visible And UCase(fFileRepl(F_VECTO.TbENG.Text, GenDir)) <> UCase(file) Then F_VECTO.TbENG.Text = fFileWoDir(file, GenDir) End If fbENG.UpdateHistory(file) @@ -241,6 +276,7 @@ Private Sub TbDispl_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbDispl.TextChanged Change() + DeclInit() End Sub Private Sub TbInertia_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbInertia.TextChanged @@ -259,10 +295,20 @@ Change() End Sub - Private Sub TbWHTC_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTC.TextChanged + Private Sub TbWHTCurban_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTCurban.TextChanged + Change() + End Sub + + Private Sub TbWHTCrural_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTCrural.TextChanged + Change() + End Sub + + Private Sub TbWHTCmw_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbWHTCmw.TextChanged Change() End Sub + + #End Region @@ -374,9 +420,6 @@ If fbMAP.OpenDialog(fFileRepl(Me.TbMAP.Text, fPATH(EngFile))) Then Me.TbMAP.Text = fFileWoDir(fbMAP.Files(0), fPATH(EngFile)) End Sub - Private Sub BtWHTC_Click(sender As System.Object, e As System.EventArgs) Handles BtWHTC.Click - If fbWHTC.OpenDialog(fFileRepl(Me.TbWHTC.Text, fPATH(EngFile))) Then Me.TbWHTC.Text = fFileWoDir(fbWHTC.Files(0), fPATH(EngFile)) - End Sub Private Sub BtMAPopen_Click(sender As System.Object, e As System.EventArgs) Handles BtMAPopen.Click Dim fldfile As String @@ -447,8 +490,5 @@ #End Region - - - - + End Class diff --git a/VECTO/GUI/F_GBX.Designer.vb b/VECTO/GUI/F_GBX.Designer.vb index 92b50dcd4b4854fec518050191258d17225edda8..e6b9de385140c00b479b6dbe79b031f391e191c3 100644 --- a/VECTO/GUI/F_GBX.Designer.vb +++ b/VECTO/GUI/F_GBX.Designer.vb @@ -52,7 +52,7 @@ Partial Class F_GBX Me.TbName = New System.Windows.Forms.TextBox() Me.PictureBox1 = New System.Windows.Forms.PictureBox() Me.BtRemGear = New System.Windows.Forms.Button() - Me.GroupBox1 = New System.Windows.Forms.GroupBox() + Me.GrGearShift = New System.Windows.Forms.GroupBox() Me.PnTorqRes = New System.Windows.Forms.Panel() Me.Label2 = New System.Windows.Forms.Label() Me.Label4 = New System.Windows.Forms.Label() @@ -95,16 +95,18 @@ Partial Class F_GBX Me.BtAddGear = New System.Windows.Forms.Button() Me.GroupBox4 = New System.Windows.Forms.GroupBox() Me.Label32 = New System.Windows.Forms.Label() + Me.PnInertiaTI = New System.Windows.Forms.Panel() Me.ToolStrip1.SuspendLayout() Me.StatusStrip1.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() - Me.GroupBox1.SuspendLayout() + Me.GrGearShift.SuspendLayout() Me.PnTorqRes.SuspendLayout() Me.GroupBox2.SuspendLayout() Me.CmOpenFile.SuspendLayout() Me.GroupBox3.SuspendLayout() Me.PnTC.SuspendLayout() Me.GroupBox4.SuspendLayout() + Me.PnInertiaTI.SuspendLayout() Me.SuspendLayout() ' 'ToolStrip1 @@ -225,7 +227,7 @@ Partial Class F_GBX ' 'TbTracInt ' - Me.TbTracInt.Location = New System.Drawing.Point(352, 350) + Me.TbTracInt.Location = New System.Drawing.Point(303, 3) Me.TbTracInt.Name = "TbTracInt" Me.TbTracInt.Size = New System.Drawing.Size(40, 20) Me.TbTracInt.TabIndex = 5 @@ -267,7 +269,7 @@ Partial Class F_GBX ' 'TBI_getr ' - Me.TBI_getr.Location = New System.Drawing.Point(102, 350) + Me.TBI_getr.Location = New System.Drawing.Point(53, 3) Me.TBI_getr.Name = "TBI_getr" Me.TBI_getr.Size = New System.Drawing.Size(57, 20) Me.TBI_getr.TabIndex = 4 @@ -275,7 +277,7 @@ Partial Class F_GBX 'Label49 ' Me.Label49.AutoSize = True - Me.Label49.Location = New System.Drawing.Point(398, 353) + Me.Label49.Location = New System.Drawing.Point(349, 6) Me.Label49.Name = "Label49" Me.Label49.Size = New System.Drawing.Size(18, 13) Me.Label49.TabIndex = 2 @@ -284,7 +286,7 @@ Partial Class F_GBX 'Label33 ' Me.Label33.AutoSize = True - Me.Label33.Location = New System.Drawing.Point(165, 353) + Me.Label33.Location = New System.Drawing.Point(116, 6) Me.Label33.Name = "Label33" Me.Label33.Size = New System.Drawing.Size(36, 13) Me.Label33.TabIndex = 2 @@ -293,7 +295,7 @@ Partial Class F_GBX 'Label48 ' Me.Label48.AutoSize = True - Me.Label48.Location = New System.Drawing.Point(244, 353) + Me.Label48.Location = New System.Drawing.Point(195, 6) Me.Label48.Name = "Label48" Me.Label48.Size = New System.Drawing.Size(102, 13) Me.Label48.TabIndex = 2 @@ -302,7 +304,7 @@ Partial Class F_GBX 'Label6 ' Me.Label6.AutoSize = True - Me.Label6.Location = New System.Drawing.Point(60, 353) + Me.Label6.Location = New System.Drawing.Point(11, 6) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(36, 13) Me.Label6.TabIndex = 2 @@ -343,25 +345,25 @@ Partial Class F_GBX Me.BtRemGear.TabIndex = 3 Me.BtRemGear.UseVisualStyleBackColor = True ' - 'GroupBox1 - ' - Me.GroupBox1.Controls.Add(Me.PnTorqRes) - Me.GroupBox1.Controls.Add(Me.BtShiftPolyOpen) - Me.GroupBox1.Controls.Add(Me.ChShiftInside) - Me.GroupBox1.Controls.Add(Me.TbShiftTime) - Me.GroupBox1.Controls.Add(Me.Label12) - Me.GroupBox1.Controls.Add(Me.Label13) - Me.GroupBox1.Controls.Add(Me.ChSkipGears) - Me.GroupBox1.Controls.Add(Me.GroupBox2) - Me.GroupBox1.Controls.Add(Me.TbShiftPolyFile) - Me.GroupBox1.Controls.Add(Me.BtShiftPolyBrowse) - Me.GroupBox1.Controls.Add(Me.Label1) - Me.GroupBox1.Location = New System.Drawing.Point(12, 377) - Me.GroupBox1.Name = "GroupBox1" - Me.GroupBox1.Size = New System.Drawing.Size(441, 230) - Me.GroupBox1.TabIndex = 6 - Me.GroupBox1.TabStop = False - Me.GroupBox1.Text = "Gear shift parameters" + 'GrGearShift + ' + Me.GrGearShift.Controls.Add(Me.PnTorqRes) + Me.GrGearShift.Controls.Add(Me.BtShiftPolyOpen) + Me.GrGearShift.Controls.Add(Me.ChShiftInside) + Me.GrGearShift.Controls.Add(Me.TbShiftTime) + Me.GrGearShift.Controls.Add(Me.Label12) + Me.GrGearShift.Controls.Add(Me.Label13) + Me.GrGearShift.Controls.Add(Me.ChSkipGears) + Me.GrGearShift.Controls.Add(Me.GroupBox2) + Me.GrGearShift.Controls.Add(Me.TbShiftPolyFile) + Me.GrGearShift.Controls.Add(Me.BtShiftPolyBrowse) + Me.GrGearShift.Controls.Add(Me.Label1) + Me.GrGearShift.Location = New System.Drawing.Point(12, 377) + Me.GrGearShift.Name = "GrGearShift" + Me.GrGearShift.Size = New System.Drawing.Size(441, 230) + Me.GrGearShift.TabIndex = 6 + Me.GrGearShift.TabStop = False + Me.GrGearShift.Text = "Gear shift parameters" ' 'PnTorqRes ' @@ -746,6 +748,19 @@ Partial Class F_GBX Me.Label32.TabIndex = 35 Me.Label32.Text = "Double-Click to edit gear" ' + 'PnInertiaTI + ' + Me.PnInertiaTI.Controls.Add(Me.Label6) + Me.PnInertiaTI.Controls.Add(Me.TBI_getr) + Me.PnInertiaTI.Controls.Add(Me.Label33) + Me.PnInertiaTI.Controls.Add(Me.Label48) + Me.PnInertiaTI.Controls.Add(Me.Label49) + Me.PnInertiaTI.Controls.Add(Me.TbTracInt) + Me.PnInertiaTI.Location = New System.Drawing.Point(49, 347) + Me.PnInertiaTI.Name = "PnInertiaTI" + Me.PnInertiaTI.Size = New System.Drawing.Size(398, 30) + Me.PnInertiaTI.TabIndex = 47 + ' 'F_GBX ' Me.AcceptButton = Me.ButOK @@ -753,24 +768,19 @@ Partial Class F_GBX Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.ButCancel Me.ClientSize = New System.Drawing.Size(465, 786) + Me.Controls.Add(Me.PnInertiaTI) Me.Controls.Add(Me.GroupBox4) Me.Controls.Add(Me.CbGStype) Me.Controls.Add(Me.Label16) Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.GroupBox1) + Me.Controls.Add(Me.GrGearShift) Me.Controls.Add(Me.GroupBox3) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.TbName) Me.Controls.Add(Me.ButCancel) Me.Controls.Add(Me.ButOK) - Me.Controls.Add(Me.TbTracInt) Me.Controls.Add(Me.StatusStrip1) Me.Controls.Add(Me.ToolStrip1) - Me.Controls.Add(Me.Label6) - Me.Controls.Add(Me.TBI_getr) - Me.Controls.Add(Me.Label49) - Me.Controls.Add(Me.Label33) - Me.Controls.Add(Me.Label48) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MaximizeBox = False @@ -782,8 +792,8 @@ Partial Class F_GBX Me.StatusStrip1.ResumeLayout(False) Me.StatusStrip1.PerformLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() - Me.GroupBox1.ResumeLayout(False) - Me.GroupBox1.PerformLayout() + Me.GrGearShift.ResumeLayout(False) + Me.GrGearShift.PerformLayout() Me.PnTorqRes.ResumeLayout(False) Me.PnTorqRes.PerformLayout() Me.GroupBox2.ResumeLayout(False) @@ -795,6 +805,8 @@ Partial Class F_GBX Me.PnTC.PerformLayout() Me.GroupBox4.ResumeLayout(False) Me.GroupBox4.PerformLayout() + Me.PnInertiaTI.ResumeLayout(False) + Me.PnInertiaTI.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -826,7 +838,7 @@ Partial Class F_GBX Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents ToolStripSeparator1 As System.Windows.Forms.ToolStripSeparator Friend WithEvents ToolStripButton1 As System.Windows.Forms.ToolStripButton - Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox + Friend WithEvents GrGearShift As System.Windows.Forms.GroupBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents BtShiftPolyBrowse As System.Windows.Forms.Button Friend WithEvents TbShiftPolyFile As System.Windows.Forms.TextBox @@ -870,4 +882,5 @@ Partial Class F_GBX Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox Friend WithEvents Label32 As System.Windows.Forms.Label + Friend WithEvents PnInertiaTI As System.Windows.Forms.Panel End Class diff --git a/VECTO/GUI/F_GBX.vb b/VECTO/GUI/F_GBX.vb index 3a77fcde16c5c584468b4150612476adada82e41..99ebf791b9733dbab04436d2b93282e2ab274f62 100644 --- a/VECTO/GUI/F_GBX.vb +++ b/VECTO/GUI/F_GBX.vb @@ -20,13 +20,43 @@ Init = False GearDia = New F_VEH_GearDlog + If Declaration.Active Then + Me.PnInertiaTI.Enabled = False + Me.GrGearShift.Enabled = False + Me.ChTCon.Enabled = False + End If + Init = True + DeclInit() + Changed = False newGBX() End Sub + Private Sub DeclInit() + Dim GStype As tGearbox + + If Not Declaration.Active Then Exit Sub + + Me.TBI_getr.Text = cDeclaration.GbInertia + Me.TbShiftPolyFile.Text = "" + + GStype = CType(Me.CbGStype.SelectedIndex, tGearbox) + + Me.TbTracInt.Text = Declaration.TracInt(GStype) + Me.TbShiftTime.Text = Declaration.ShiftTime(GStype) + + Me.TbTqResv.Text = cDeclaration.TqResv + Me.TbTqResvStart.Text = cDeclaration.TqResvStart + Me.TbStartSpeed.Text = cDeclaration.StartSpeed + Me.TbStartAcc.Text = cDeclaration.StartAcc + + + + End Sub + #Region "ToolStrip" Private Sub ToolStripBtNew_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripBtNew.Click @@ -57,15 +87,15 @@ End If End If - If Not F_GEN.Visible Then + If Not F_VECTO.Visible Then GenDir = "" - F_GEN.Show() - F_GEN.GENnew() + F_VECTO.Show() + F_VECTO.GENnew() Else - F_GEN.WindowState = FormWindowState.Normal + F_VECTO.WindowState = FormWindowState.Normal End If - F_GEN.TbGBX.Text = fFileWoDir(GbxFile, GenDir) + F_VECTO.TbGBX.Text = fFileWoDir(GbxFile, GenDir) End Sub @@ -112,6 +142,7 @@ Me.TbTCfile.Text = "" Me.TbTCrefrpm.Text = "" + DeclInit() GbxFile = "" Me.Text = "GBX Editor" @@ -184,6 +215,9 @@ Me.CbGStype.SelectedIndex = CType(GBX0.gs_Type, Integer) + DeclInit() + + fbGBX.UpdateHistory(file) Me.Text = fFILE(file, True) Me.LbStatus.Text = "" @@ -255,7 +289,7 @@ End If If Not GenDir = "" Or AutoSendTo Then - If F_GEN.Visible And UCase(fFileRepl(F_GEN.TbGBX.Text, GenDir)) <> UCase(file) Then F_GEN.TbGBX.Text = fFileWoDir(file, GenDir) + If F_VECTO.Visible And UCase(fFileRepl(F_VECTO.TbGBX.Text, GenDir)) <> UCase(file) Then F_VECTO.TbGBX.Text = fFileWoDir(file, GenDir) End If fbGBX.UpdateHistory(file) @@ -381,6 +415,8 @@ Private Sub CbGStype_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbGStype.SelectedIndexChanged Dim GStype As tGearbox + If Me.CbGStype.SelectedIndex = 3 Then Me.CbGStype.SelectedIndex = 0 + Change() GStype = CType(Me.CbGStype.SelectedIndex, tGearbox) diff --git a/VECTO/GUI/F_MAINForm.Designer.vb b/VECTO/GUI/F_MAINForm.Designer.vb index e184d457056e2db41c8a1184301348882919dfee..ddbf0eb4e867ee23c0f3e9c8ee38d3eee3630f03 100644 --- a/VECTO/GUI/F_MAINForm.Designer.vb +++ b/VECTO/GUI/F_MAINForm.Designer.vb @@ -53,9 +53,6 @@ Partial Class F_MAINForm Me.ButtonDRIremove = New System.Windows.Forms.Button() Me.ButtonDRIadd = New System.Windows.Forms.Button() Me.TabPgOptions = New System.Windows.Forms.TabPage() - Me.GrBoxADV = New System.Windows.Forms.GroupBox() - Me.ChBoxFzpSort = New System.Windows.Forms.CheckBox() - Me.ChBoxFzpExport = New System.Windows.Forms.CheckBox() Me.GrBoxSTD = New System.Windows.Forms.GroupBox() Me.GrBoxBATCH = New System.Windows.Forms.GroupBox() Me.ChBoxBatchSubD = New System.Windows.Forms.CheckBox() @@ -121,13 +118,13 @@ Partial Class F_MAINForm Me.OpenWithGRAPHiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.PnDeclOpt = New System.Windows.Forms.Panel() Me.StatusBAR.SuspendLayout() Me.TabControl1.SuspendLayout() Me.TabPageGEN.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.TabPageDRI.SuspendLayout() Me.TabPgOptions.SuspendLayout() - Me.GrBoxADV.SuspendLayout() Me.GrBoxBATCH.SuspendLayout() Me.PanelOptAllg.SuspendLayout() Me.TabPageDEV.SuspendLayout() @@ -138,6 +135,7 @@ Partial Class F_MAINForm Me.SplitContainer1.SuspendLayout() Me.ToolStrip1.SuspendLayout() Me.CmOpenFile.SuspendLayout() + Me.PnDeclOpt.SuspendLayout() Me.SuspendLayout() ' 'StatusBAR @@ -450,7 +448,6 @@ Partial Class F_MAINForm ' 'TabPgOptions ' - Me.TabPgOptions.Controls.Add(Me.GrBoxADV) Me.TabPgOptions.Controls.Add(Me.GrBoxSTD) Me.TabPgOptions.Controls.Add(Me.GrBoxBATCH) Me.TabPgOptions.Controls.Add(Me.ChBoxAutoSD) @@ -463,42 +460,6 @@ Partial Class F_MAINForm Me.TabPgOptions.Text = "Options" Me.TabPgOptions.UseVisualStyleBackColor = True ' - 'GrBoxADV - ' - Me.GrBoxADV.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ - Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.GrBoxADV.Controls.Add(Me.ChBoxFzpSort) - Me.GrBoxADV.Controls.Add(Me.ChBoxFzpExport) - Me.GrBoxADV.Location = New System.Drawing.Point(6, 182) - Me.GrBoxADV.Name = "GrBoxADV" - Me.GrBoxADV.Size = New System.Drawing.Size(1106, 158) - Me.GrBoxADV.TabIndex = 0 - Me.GrBoxADV.TabStop = False - Me.GrBoxADV.Text = "ADVANCE Options" - ' - 'ChBoxFzpSort - ' - Me.ChBoxFzpSort.AutoSize = True - Me.ChBoxFzpSort.Checked = True - Me.ChBoxFzpSort.CheckState = System.Windows.Forms.CheckState.Checked - Me.ChBoxFzpSort.Location = New System.Drawing.Point(14, 23) - Me.ChBoxFzpSort.Name = "ChBoxFzpSort" - Me.ChBoxFzpSort.Size = New System.Drawing.Size(98, 17) - Me.ChBoxFzpSort.TabIndex = 0 - Me.ChBoxFzpSort.Text = "Sort traffic data" - Me.ChBoxFzpSort.UseVisualStyleBackColor = True - ' - 'ChBoxFzpExport - ' - Me.ChBoxFzpExport.AutoSize = True - Me.ChBoxFzpExport.Location = New System.Drawing.Point(35, 46) - Me.ChBoxFzpExport.Name = "ChBoxFzpExport" - Me.ChBoxFzpExport.Size = New System.Drawing.Size(141, 17) - Me.ChBoxFzpExport.TabIndex = 1 - Me.ChBoxFzpExport.Text = "Export sorted traffic data" - Me.ChBoxFzpExport.UseVisualStyleBackColor = True - ' 'GrBoxSTD ' Me.GrBoxSTD.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ @@ -588,10 +549,7 @@ Partial Class F_MAINForm ' 'PanelOptAllg ' - Me.PanelOptAllg.Controls.Add(Me.Label1) - Me.PanelOptAllg.Controls.Add(Me.ChBoxCyclDistCor) - Me.PanelOptAllg.Controls.Add(Me.ChBoxUseGears) - Me.PanelOptAllg.Controls.Add(Me.CBoxMODE) + Me.PanelOptAllg.Controls.Add(Me.PnDeclOpt) Me.PanelOptAllg.Controls.Add(Me.ChBoxModOut) Me.PanelOptAllg.Location = New System.Drawing.Point(6, 6) Me.PanelOptAllg.Name = "PanelOptAllg" @@ -601,7 +559,7 @@ Partial Class F_MAINForm 'Label1 ' Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(13, 14) + Me.Label1.Location = New System.Drawing.Point(5, 7) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(34, 13) Me.Label1.TabIndex = 1 @@ -610,7 +568,7 @@ Partial Class F_MAINForm 'ChBoxCyclDistCor ' Me.ChBoxCyclDistCor.AutoSize = True - Me.ChBoxCyclDistCor.Location = New System.Drawing.Point(14, 48) + Me.ChBoxCyclDistCor.Location = New System.Drawing.Point(6, 41) Me.ChBoxCyclDistCor.Name = "ChBoxCyclDistCor" Me.ChBoxCyclDistCor.Size = New System.Drawing.Size(148, 17) Me.ChBoxCyclDistCor.TabIndex = 0 @@ -620,7 +578,7 @@ Partial Class F_MAINForm 'ChBoxUseGears ' Me.ChBoxUseGears.AutoSize = True - Me.ChBoxUseGears.Location = New System.Drawing.Point(14, 71) + Me.ChBoxUseGears.Location = New System.Drawing.Point(6, 64) Me.ChBoxUseGears.Name = "ChBoxUseGears" Me.ChBoxUseGears.Size = New System.Drawing.Size(188, 17) Me.ChBoxUseGears.TabIndex = 0 @@ -633,7 +591,7 @@ Partial Class F_MAINForm Me.CBoxMODE.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.CBoxMODE.FormattingEnabled = True Me.CBoxMODE.Items.AddRange(New Object() {" STANDARD", " BATCH"}) - Me.CBoxMODE.Location = New System.Drawing.Point(53, 11) + Me.CBoxMODE.Location = New System.Drawing.Point(45, 4) Me.CBoxMODE.Name = "CBoxMODE" Me.CBoxMODE.Size = New System.Drawing.Size(105, 21) Me.CBoxMODE.TabIndex = 12 @@ -999,6 +957,17 @@ Partial Class F_MAINForm Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(174, 22) Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder" ' + 'PnDeclOpt + ' + Me.PnDeclOpt.Controls.Add(Me.Label1) + Me.PnDeclOpt.Controls.Add(Me.ChBoxCyclDistCor) + Me.PnDeclOpt.Controls.Add(Me.ChBoxUseGears) + Me.PnDeclOpt.Controls.Add(Me.CBoxMODE) + Me.PnDeclOpt.Location = New System.Drawing.Point(8, 7) + Me.PnDeclOpt.Name = "PnDeclOpt" + Me.PnDeclOpt.Size = New System.Drawing.Size(202, 93) + Me.PnDeclOpt.TabIndex = 13 + ' 'F_MAINForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -1021,8 +990,6 @@ Partial Class F_MAINForm Me.TabPageDRI.PerformLayout() Me.TabPgOptions.ResumeLayout(False) Me.TabPgOptions.PerformLayout() - Me.GrBoxADV.ResumeLayout(False) - Me.GrBoxADV.PerformLayout() Me.GrBoxBATCH.ResumeLayout(False) Me.GrBoxBATCH.PerformLayout() Me.PanelOptAllg.ResumeLayout(False) @@ -1036,6 +1003,8 @@ Partial Class F_MAINForm Me.ToolStrip1.ResumeLayout(False) Me.ToolStrip1.PerformLayout() Me.CmOpenFile.ResumeLayout(False) + Me.PnDeclOpt.ResumeLayout(False) + Me.PnDeclOpt.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -1075,8 +1044,6 @@ Partial Class F_MAINForm Friend WithEvents ChBoxUseGears As System.Windows.Forms.CheckBox Friend WithEvents ChBoxCyclDistCor As System.Windows.Forms.CheckBox Friend WithEvents PanelOptAllg As System.Windows.Forms.Panel - Friend WithEvents ChBoxFzpExport As System.Windows.Forms.CheckBox - Friend WithEvents ChBoxFzpSort As System.Windows.Forms.CheckBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents LbAutoShDown As System.Windows.Forms.Label Friend WithEvents ChBoxAutoSD As System.Windows.Forms.CheckBox @@ -1091,8 +1058,6 @@ Partial Class F_MAINForm Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader Friend WithEvents GrBoxBATCH As System.Windows.Forms.GroupBox - Friend WithEvents GrBoxADV As System.Windows.Forms.GroupBox - Friend WithEvents GrBoxSTD As System.Windows.Forms.GroupBox Friend WithEvents TabPageDEV As System.Windows.Forms.TabPage Friend WithEvents LvDEVoptions As System.Windows.Forms.ListView Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader @@ -1137,5 +1102,7 @@ Partial Class F_MAINForm Friend WithEvents SupportToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents SignOrVerifyFilesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ToolStripSeparator6 As System.Windows.Forms.ToolStripSeparator + Friend WithEvents GrBoxSTD As System.Windows.Forms.GroupBox + Friend WithEvents PnDeclOpt As System.Windows.Forms.Panel End Class diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb index 517ebe4ad8be594baf4bb6739d8dacb2a95a127e..25866a968a69ecfa6faa4bfd6581952fb3b8f2e2 100644 --- a/VECTO/GUI/F_MAINForm.vb +++ b/VECTO/GUI/F_MAINForm.vb @@ -169,7 +169,7 @@ Public Class F_MAINForm 'PHEM-Launcher Public Sub PHEM_Launcher() Dim ProgOverall As Boolean - Dim GEN0 As cGEN + Dim GEN0 As cVECTO 'Called when PHEM already running If PHEMworker.IsBusy Then @@ -217,10 +217,10 @@ Public Class F_MAINForm End If 'Check whether Overall-progbar is needed - If PHEMmode = tPHEMmode.ModeBATCH Or JobFileList.Count > 1 Then + If PHEMmode = tPHEMmode.ModeBATCH Or JobFileList.Count > 1 Or Declaration.Active Then ProgOverall = True Else - GEN0 = New cGEN + GEN0 = New cVECTO GEN0.FilePath = JobFileList(0) If Not GEN0.ReadFile Then GUImsg(tMsgID.Err, "Failed to job file (" & fFILE(JobFileList(0), True) & ")!") @@ -240,7 +240,6 @@ Public Class F_MAINForm Me.PanelOptAllg.Enabled = Not Lock Me.GrBoxSTD.Enabled = Not Lock Me.GrBoxBATCH.Enabled = Not Lock - Me.GrBoxADV.Enabled = Not Lock Me.BtGENup.Enabled = Not Lock Me.BtGENdown.Enabled = Not Lock @@ -537,6 +536,12 @@ Public Class F_MAINForm LoadDEVconfigs() End If + If Declaration.Active Then + Me.PnDeclOpt.Enabled = False + Me.CBoxMODE.SelectedIndex = 0 + GUImsg(tMsgID.Warn, "VECTO is running in Declaration Mode") + End If + End Sub 'Shown Event (Form-Load finished) ... here StartUp Forms are loaded (DEV, GEN/ADV- Editor ..) @@ -548,7 +553,7 @@ Public Class F_MAINForm End If 'VECTO Init - 'VEC.Init() + Declaration.Init() 'Command Line Args If Command() <> "" Then @@ -1555,7 +1560,6 @@ lbFound: Me.GrBoxSTD.Visible = False 'weil GroupBox leer!!! sonst 'True Me.GrBoxBATCH.Visible = False - Me.GrBoxADV.Visible = False If DRIpageHere Then Me.TabControl1.Controls.Remove(DRIpage) @@ -1572,7 +1576,6 @@ lbFound: Me.GrBoxSTD.Visible = False Me.GrBoxBATCH.Visible = True - Me.GrBoxADV.Visible = False If Not DRIpageHere Then 'Me.TabControl1.Controls.Add(DRIpage) @@ -1722,20 +1725,20 @@ lbFound: 'Open GEN-editor and load File Friend Sub OpenGENEditor(ByVal x As String) - If Not F_GEN.Visible Then - F_GEN.Show() + If Not F_VECTO.Visible Then + F_VECTO.Show() Else - If F_GEN.WindowState = FormWindowState.Minimized Then F_GEN.WindowState = FormWindowState.Normal - F_GEN.BringToFront() + If F_VECTO.WindowState = FormWindowState.Minimized Then F_VECTO.WindowState = FormWindowState.Normal + F_VECTO.BringToFront() End If If x = "<New>" Then - F_GEN.GENnew() + F_VECTO.GENnew() Else - F_GEN.GENload2Form(x) + F_VECTO.GENload2Form(x) End If - F_GEN.Activate() + F_VECTO.Activate() End Sub @@ -1811,11 +1814,9 @@ lbFound: #Region "Options Tab" Public Sub LoadOptions() - Me.ChBoxFzpSort.Checked = Cfg.FZPsort Me.ChBoxCyclDistCor.Checked = Cfg.WegKorJa Me.ChBoxUseGears.Checked = Cfg.GnVorgab Me.ChBoxModOut.Checked = Cfg.ModOut - Me.ChBoxFzpExport.Checked = Cfg.FZPsortExp CbBOmode.SelectedIndex = -1 Select Case UCase(Cfg.BATCHoutpath) Case sKey.WorkDir @@ -1849,10 +1850,6 @@ lbFound: Cfg.WegKorJa = Me.ChBoxCyclDistCor.Checked Cfg.GnVorgab = Me.ChBoxUseGears.Checked - 'ADVANCE - Cfg.FZPsortExp = Me.ChBoxFzpExport.Checked - Cfg.FZPsort = Me.ChBoxFzpSort.Checked - 'BATCH Cfg.ModOut = Me.ChBoxModOut.Checked Select Case CbBOmode.SelectedIndex @@ -1875,9 +1872,6 @@ lbFound: #Region "Events" - Private Sub ChBoxAdvSort_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChBoxFzpSort.CheckedChanged - Me.ChBoxFzpExport.Enabled = Me.ChBoxFzpSort.Checked - End Sub Private Sub ChBoxAutoSD_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChBoxAutoSD.CheckedChanged Me.LbAutoShDown.Visible = Me.ChBoxAutoSD.Checked diff --git a/VECTO/GUI/F_Options.Designer.vb b/VECTO/GUI/F_Options.Designer.vb index 4bbe18a3dde2889f636e5ad9943faea3f90eb8ed..6d9869f486b5cb7143d1f26185f4f564bd8d98f6 100644 --- a/VECTO/GUI/F_Options.Designer.vb +++ b/VECTO/GUI/F_Options.Designer.vb @@ -28,7 +28,6 @@ Partial Class F_Options Me.ButtonOK = New System.Windows.Forms.Button() Me.ButtonCancel = New System.Windows.Forms.Button() Me.GroupBox3 = New System.Windows.Forms.GroupBox() - Me.CbJSON = New System.Windows.Forms.CheckBox() Me.GroupBox5 = New System.Windows.Forms.GroupBox() Me.TbOpenCmdName = New System.Windows.Forms.TextBox() Me.Label7 = New System.Windows.Forms.Label() @@ -38,7 +37,7 @@ Partial Class F_Options Me.Label16 = New System.Windows.Forms.Label() Me.TabControl1 = New System.Windows.Forms.TabControl() Me.TabPage2 = New System.Windows.Forms.TabPage() - Me.GroupBox4 = New System.Windows.Forms.GroupBox() + Me.GrCalc = New System.Windows.Forms.GroupBox() Me.Label11 = New System.Windows.Forms.Label() Me.Label9 = New System.Windows.Forms.Label() Me.Label3 = New System.Windows.Forms.Label() @@ -55,7 +54,7 @@ Partial Class F_Options Me.GroupBox5.SuspendLayout() Me.TabControl1.SuspendLayout() Me.TabPage2.SuspendLayout() - Me.GroupBox4.SuspendLayout() + Me.GrCalc.SuspendLayout() Me.SuspendLayout() ' 'TextBoxWorDir @@ -109,7 +108,6 @@ Partial Class F_Options ' 'GroupBox3 ' - Me.GroupBox3.Controls.Add(Me.CbJSON) Me.GroupBox3.Controls.Add(Me.GroupBox5) Me.GroupBox3.Controls.Add(Me.TextBoxLogSize) Me.GroupBox3.Controls.Add(Me.Label16) @@ -120,16 +118,6 @@ Partial Class F_Options Me.GroupBox3.TabStop = False Me.GroupBox3.Text = "Interface" ' - 'CbJSON - ' - Me.CbJSON.AutoSize = True - Me.CbJSON.Location = New System.Drawing.Point(21, 80) - Me.CbJSON.Name = "CbJSON" - Me.CbJSON.Size = New System.Drawing.Size(168, 17) - Me.CbJSON.TabIndex = 15 - Me.CbJSON.Text = "In- and Output in JSON format" - Me.CbJSON.UseVisualStyleBackColor = True - ' 'GroupBox5 ' Me.GroupBox5.Controls.Add(Me.TbOpenCmdName) @@ -205,7 +193,7 @@ Partial Class F_Options ' 'TabPage2 ' - Me.TabPage2.Controls.Add(Me.GroupBox4) + Me.TabPage2.Controls.Add(Me.GrCalc) Me.TabPage2.Controls.Add(Me.GroupBoxWorDir) Me.TabPage2.Controls.Add(Me.GroupBox3) Me.TabPage2.Location = New System.Drawing.Point(4, 22) @@ -216,23 +204,23 @@ Partial Class F_Options Me.TabPage2.Text = "VECTO" Me.TabPage2.UseVisualStyleBackColor = True ' - 'GroupBox4 - ' - Me.GroupBox4.Controls.Add(Me.Label11) - Me.GroupBox4.Controls.Add(Me.Label9) - Me.GroupBox4.Controls.Add(Me.Label3) - Me.GroupBox4.Controls.Add(Me.TbCO2toFC) - Me.GroupBox4.Controls.Add(Me.Label10) - Me.GroupBox4.Controls.Add(Me.TbFuelDens) - Me.GroupBox4.Controls.Add(Me.Label8) - Me.GroupBox4.Controls.Add(Me.TbAirDensity) - Me.GroupBox4.Controls.Add(Me.Label2) - Me.GroupBox4.Location = New System.Drawing.Point(6, 193) - Me.GroupBox4.Name = "GroupBox4" - Me.GroupBox4.Size = New System.Drawing.Size(488, 103) - Me.GroupBox4.TabIndex = 12 - Me.GroupBox4.TabStop = False - Me.GroupBox4.Text = "Calculation" + 'GrCalc + ' + Me.GrCalc.Controls.Add(Me.Label11) + Me.GrCalc.Controls.Add(Me.Label9) + Me.GrCalc.Controls.Add(Me.Label3) + Me.GrCalc.Controls.Add(Me.TbCO2toFC) + Me.GrCalc.Controls.Add(Me.Label10) + Me.GrCalc.Controls.Add(Me.TbFuelDens) + Me.GrCalc.Controls.Add(Me.Label8) + Me.GrCalc.Controls.Add(Me.TbAirDensity) + Me.GrCalc.Controls.Add(Me.Label2) + Me.GrCalc.Location = New System.Drawing.Point(6, 193) + Me.GrCalc.Name = "GrCalc" + Me.GrCalc.Size = New System.Drawing.Size(488, 103) + Me.GrCalc.TabIndex = 12 + Me.GrCalc.TabStop = False + Me.GrCalc.Text = "Calculation" ' 'Label11 ' @@ -354,8 +342,8 @@ Partial Class F_Options Me.GroupBox5.PerformLayout() Me.TabControl1.ResumeLayout(False) Me.TabPage2.ResumeLayout(False) - Me.GroupBox4.ResumeLayout(False) - Me.GroupBox4.PerformLayout() + Me.GrCalc.ResumeLayout(False) + Me.GrCalc.PerformLayout() Me.ResumeLayout(False) End Sub @@ -372,7 +360,7 @@ Partial Class F_Options Friend WithEvents ButReset As System.Windows.Forms.Button Friend WithEvents TbOpenCmd As System.Windows.Forms.TextBox Friend WithEvents Label7 As System.Windows.Forms.Label - Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox + Friend WithEvents GrCalc As System.Windows.Forms.GroupBox Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents TbAirDensity As System.Windows.Forms.TextBox Friend WithEvents Label2 As System.Windows.Forms.Label @@ -386,5 +374,4 @@ Partial Class F_Options Friend WithEvents GroupBox5 As System.Windows.Forms.GroupBox Friend WithEvents TbOpenCmdName As System.Windows.Forms.TextBox Friend WithEvents Label12 As System.Windows.Forms.Label - Friend WithEvents CbJSON As System.Windows.Forms.CheckBox End Class diff --git a/VECTO/GUI/F_Options.vb b/VECTO/GUI/F_Options.vb index f09129de323e2747dd4352da25b6803a5368eaf3..580765e1bf674fadd798198cdf186fd9e32ff91f 100644 --- a/VECTO/GUI/F_Options.vb +++ b/VECTO/GUI/F_Options.vb @@ -5,6 +5,16 @@ 'Initialize - load config Private Sub F03_Options_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load LoadConfig() + + If Declaration.Active Then + Me.GrCalc.Enabled = False + Me.TbAirDensity.Text = cDeclaration.AirDensity + Me.TbFuelDens.Text = cDeclaration.FuelDens + Me.TbCO2toFC.Text = cDeclaration.CO2perFC + End If + + + End Sub 'Load Config @@ -17,13 +27,13 @@ Me.TbOpenCmdName.Text = Cfg.OpenCmdName Me.TbFuelDens.Text = Cfg.FuelDens.ToString Me.TbCO2toFC.Text = Cfg.CO2perFC.ToString - Me.CbJSON.Checked = Cfg.JSON End Sub 'Reset Button Private Sub ButReset_Click(sender As System.Object, e As System.EventArgs) Handles ButReset.Click If MsgBox("This will reset all application settings including the Options Tab. Filehistory will not be deleted." & vbCrLf & vbCrLf & "Continue ?", MsgBoxStyle.YesNo, "Reset Application Settings") = MsgBoxResult.Yes Then Cfg.SetDefault() + If Declaration.Active Then Cfg.DeclInit() LoadConfig() F_MAINForm.LoadOptions() End If @@ -38,7 +48,6 @@ Cfg.OpenCmdName = Me.TbOpenCmdName.Text Cfg.FuelDens = CSng(Me.TbFuelDens.Text) Cfg.CO2perFC = CSng(Me.TbCO2toFC.Text) - Cfg.JSON = Me.CbJSON.Checked '---------------------------------------------------- Call Cfg.ConfigSAVE() diff --git a/VECTO/GUI/F_GEN.Designer.vb b/VECTO/GUI/F_VECTO.Designer.vb similarity index 90% rename from VECTO/GUI/F_GEN.Designer.vb rename to VECTO/GUI/F_VECTO.Designer.vb index 87817b408da0493015c231c031a3549d4a6e1ec2..b9568ae90a0634bfdea6cd1ab5f3bf2072ea1cd5 100644 --- a/VECTO/GUI/F_GEN.Designer.vb +++ b/VECTO/GUI/F_VECTO.Designer.vb @@ -1,5 +1,5 @@ <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ -Partial Class F_GEN +Partial Class F_VECTO Inherits System.Windows.Forms.Form 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. @@ -23,9 +23,9 @@ Partial Class F_GEN <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(F_GEN)) + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(F_VECTO)) Me.TabPgGen = New System.Windows.Forms.TabPage() - Me.GroupBox5 = New System.Windows.Forms.GroupBox() + Me.GrCycles = New System.Windows.Forms.GroupBox() Me.Label2 = New System.Windows.Forms.Label() Me.LvCycles = New System.Windows.Forms.ListView() Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) @@ -50,7 +50,12 @@ Partial Class F_GEN Me.ButtonMAP = New System.Windows.Forms.Button() Me.TabControl1 = New System.Windows.Forms.TabControl() Me.TabPgDriver = New System.Windows.Forms.TabPage() - Me.GroupBox4 = New System.Windows.Forms.GroupBox() + Me.PnVACC = New System.Windows.Forms.Panel() + Me.Label1 = New System.Windows.Forms.Label() + Me.TbDesMaxFile = New System.Windows.Forms.TextBox() + Me.BtDesMaxBr = New System.Windows.Forms.Button() + Me.BtAccOpen = New System.Windows.Forms.Button() + Me.GrLAC = New System.Windows.Forms.GroupBox() Me.PnLookAhead = New System.Windows.Forms.Panel() Me.Label29 = New System.Windows.Forms.Label() Me.Label25 = New System.Windows.Forms.Label() @@ -76,18 +81,14 @@ Partial Class F_GEN Me.PnStartStop = New System.Windows.Forms.Panel() Me.Label31 = New System.Windows.Forms.Label() Me.Label27 = New System.Windows.Forms.Label() - Me.TBSSspeed = New System.Windows.Forms.TextBox() + Me.TbSSspeed = New System.Windows.Forms.TextBox() Me.LabelSSspeed = New System.Windows.Forms.Label() Me.Label26 = New System.Windows.Forms.Label() Me.Label30 = New System.Windows.Forms.Label() Me.LabelSStime = New System.Windows.Forms.Label() - Me.TbStStDelay = New System.Windows.Forms.TextBox() - Me.TBSStime = New System.Windows.Forms.TextBox() + Me.TbSSdelay = New System.Windows.Forms.TextBox() + Me.TbSStime = New System.Windows.Forms.TextBox() Me.ChBStartStop = New System.Windows.Forms.CheckBox() - Me.BtAccOpen = New System.Windows.Forms.Button() - Me.Label1 = New System.Windows.Forms.Label() - Me.BtDesMaxBr = New System.Windows.Forms.Button() - Me.TbDesMaxFile = New System.Windows.Forms.TextBox() Me.StatusStrip1 = New System.Windows.Forms.StatusStrip() Me.ToolStripStatusLabelGEN = New System.Windows.Forms.ToolStripStatusLabel() Me.ButOK = New System.Windows.Forms.Button() @@ -108,11 +109,12 @@ Partial Class F_GEN Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.TabPgGen.SuspendLayout() - Me.GroupBox5.SuspendLayout() + Me.GrCycles.SuspendLayout() Me.GrAux.SuspendLayout() Me.TabControl1.SuspendLayout() Me.TabPgDriver.SuspendLayout() - Me.GroupBox4.SuspendLayout() + Me.PnVACC.SuspendLayout() + Me.GrLAC.SuspendLayout() Me.PnLookAhead.SuspendLayout() Me.GroupBox1.SuspendLayout() Me.GrStartStop.SuspendLayout() @@ -125,7 +127,7 @@ Partial Class F_GEN ' 'TabPgGen ' - Me.TabPgGen.Controls.Add(Me.GroupBox5) + Me.TabPgGen.Controls.Add(Me.GrCycles) Me.TabPgGen.Controls.Add(Me.GrAux) Me.TabPgGen.Controls.Add(Me.TbGBX) Me.TabPgGen.Controls.Add(Me.TbENG) @@ -144,18 +146,18 @@ Partial Class F_GEN Me.TabPgGen.Text = "General" Me.TabPgGen.UseVisualStyleBackColor = True ' - 'GroupBox5 + 'GrCycles ' - Me.GroupBox5.Controls.Add(Me.Label2) - Me.GroupBox5.Controls.Add(Me.LvCycles) - Me.GroupBox5.Controls.Add(Me.BtDRIrem) - Me.GroupBox5.Controls.Add(Me.BtDRIadd) - Me.GroupBox5.Location = New System.Drawing.Point(6, 247) - Me.GroupBox5.Name = "GroupBox5" - Me.GroupBox5.Size = New System.Drawing.Size(634, 177) - Me.GroupBox5.TabIndex = 34 - Me.GroupBox5.TabStop = False - Me.GroupBox5.Text = "Cycles" + Me.GrCycles.Controls.Add(Me.Label2) + Me.GrCycles.Controls.Add(Me.LvCycles) + Me.GrCycles.Controls.Add(Me.BtDRIrem) + Me.GrCycles.Controls.Add(Me.BtDRIadd) + Me.GrCycles.Location = New System.Drawing.Point(6, 247) + Me.GrCycles.Name = "GrCycles" + Me.GrCycles.Size = New System.Drawing.Size(634, 177) + Me.GrCycles.TabIndex = 34 + Me.GrCycles.TabStop = False + Me.GrCycles.Text = "Cycles" ' 'Label2 ' @@ -387,13 +389,10 @@ Partial Class F_GEN ' 'TabPgDriver ' - Me.TabPgDriver.Controls.Add(Me.GroupBox4) + Me.TabPgDriver.Controls.Add(Me.PnVACC) + Me.TabPgDriver.Controls.Add(Me.GrLAC) Me.TabPgDriver.Controls.Add(Me.GroupBox1) Me.TabPgDriver.Controls.Add(Me.GrStartStop) - Me.TabPgDriver.Controls.Add(Me.BtAccOpen) - Me.TabPgDriver.Controls.Add(Me.Label1) - Me.TabPgDriver.Controls.Add(Me.BtDesMaxBr) - Me.TabPgDriver.Controls.Add(Me.TbDesMaxFile) Me.TabPgDriver.Location = New System.Drawing.Point(4, 22) Me.TabPgDriver.Name = "TabPgDriver" Me.TabPgDriver.Padding = New System.Windows.Forms.Padding(3) @@ -402,16 +401,62 @@ Partial Class F_GEN Me.TabPgDriver.Text = "Driver Assist" Me.TabPgDriver.UseVisualStyleBackColor = True ' - 'GroupBox4 + 'PnVACC + ' + Me.PnVACC.Controls.Add(Me.Label1) + Me.PnVACC.Controls.Add(Me.TbDesMaxFile) + Me.PnVACC.Controls.Add(Me.BtDesMaxBr) + Me.PnVACC.Controls.Add(Me.BtAccOpen) + Me.PnVACC.Location = New System.Drawing.Point(3, 6) + Me.PnVACC.Name = "PnVACC" + Me.PnVACC.Size = New System.Drawing.Size(640, 44) + Me.PnVACC.TabIndex = 33 + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(3, 0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(177, 13) + Me.Label1.TabIndex = 32 + Me.Label1.Text = "Max. acceleration and brake curves" + ' + 'TbDesMaxFile + ' + Me.TbDesMaxFile.Location = New System.Drawing.Point(3, 16) + Me.TbDesMaxFile.Name = "TbDesMaxFile" + Me.TbDesMaxFile.Size = New System.Drawing.Size(571, 20) + Me.TbDesMaxFile.TabIndex = 0 + ' + 'BtDesMaxBr + ' + Me.BtDesMaxBr.Location = New System.Drawing.Point(580, 15) + Me.BtDesMaxBr.Name = "BtDesMaxBr" + Me.BtDesMaxBr.Size = New System.Drawing.Size(28, 21) + Me.BtDesMaxBr.TabIndex = 1 + Me.BtDesMaxBr.Text = "..." + Me.BtDesMaxBr.UseVisualStyleBackColor = True + ' + 'BtAccOpen + ' + Me.BtAccOpen.Image = Global.VECTO.My.Resources.Resources.application_export_icon_small + Me.BtAccOpen.Location = New System.Drawing.Point(614, 14) + Me.BtAccOpen.Name = "BtAccOpen" + Me.BtAccOpen.Size = New System.Drawing.Size(23, 23) + Me.BtAccOpen.TabIndex = 2 + Me.BtAccOpen.TabStop = False + Me.BtAccOpen.UseVisualStyleBackColor = True + ' + 'GrLAC ' - Me.GroupBox4.Controls.Add(Me.PnLookAhead) - Me.GroupBox4.Controls.Add(Me.CbLookAhead) - Me.GroupBox4.Location = New System.Drawing.Point(12, 331) - Me.GroupBox4.Name = "GroupBox4" - Me.GroupBox4.Size = New System.Drawing.Size(375, 87) - Me.GroupBox4.TabIndex = 5 - Me.GroupBox4.TabStop = False - Me.GroupBox4.Text = "Look-Ahead Coasting" + Me.GrLAC.Controls.Add(Me.PnLookAhead) + Me.GrLAC.Controls.Add(Me.CbLookAhead) + Me.GrLAC.Location = New System.Drawing.Point(12, 307) + Me.GrLAC.Name = "GrLAC" + Me.GrLAC.Size = New System.Drawing.Size(375, 87) + Me.GrLAC.TabIndex = 5 + Me.GrLAC.TabStop = False + Me.GrLAC.Text = "Look-Ahead Coasting" ' 'PnLookAhead ' @@ -620,7 +665,7 @@ Partial Class F_GEN ' Me.GrStartStop.Controls.Add(Me.PnStartStop) Me.GrStartStop.Controls.Add(Me.ChBStartStop) - Me.GrStartStop.Location = New System.Drawing.Point(7, 56) + Me.GrStartStop.Location = New System.Drawing.Point(12, 56) Me.GrStartStop.Name = "GrStartStop" Me.GrStartStop.Size = New System.Drawing.Size(375, 130) Me.GrStartStop.TabIndex = 3 @@ -631,13 +676,13 @@ Partial Class F_GEN ' Me.PnStartStop.Controls.Add(Me.Label31) Me.PnStartStop.Controls.Add(Me.Label27) - Me.PnStartStop.Controls.Add(Me.TBSSspeed) + Me.PnStartStop.Controls.Add(Me.TbSSspeed) Me.PnStartStop.Controls.Add(Me.LabelSSspeed) Me.PnStartStop.Controls.Add(Me.Label26) Me.PnStartStop.Controls.Add(Me.Label30) Me.PnStartStop.Controls.Add(Me.LabelSStime) - Me.PnStartStop.Controls.Add(Me.TbStStDelay) - Me.PnStartStop.Controls.Add(Me.TBSStime) + Me.PnStartStop.Controls.Add(Me.TbSSdelay) + Me.PnStartStop.Controls.Add(Me.TbSStime) Me.PnStartStop.Location = New System.Drawing.Point(148, 10) Me.PnStartStop.Name = "PnStartStop" Me.PnStartStop.Size = New System.Drawing.Size(221, 106) @@ -661,12 +706,12 @@ Partial Class F_GEN Me.Label27.TabIndex = 38 Me.Label27.Text = "[s]" ' - 'TBSSspeed + 'TbSSspeed ' - Me.TBSSspeed.Location = New System.Drawing.Point(99, 9) - Me.TBSSspeed.Name = "TBSSspeed" - Me.TBSSspeed.Size = New System.Drawing.Size(64, 20) - Me.TBSSspeed.TabIndex = 0 + Me.TbSSspeed.Location = New System.Drawing.Point(99, 9) + Me.TbSSspeed.Name = "TbSSspeed" + Me.TbSSspeed.Size = New System.Drawing.Size(64, 20) + Me.TbSSspeed.TabIndex = 0 ' 'LabelSSspeed ' @@ -704,19 +749,19 @@ Partial Class F_GEN Me.LabelSStime.TabIndex = 35 Me.LabelSStime.Text = "Min ICE-On Time" ' - 'TbStStDelay + 'TbSSdelay ' - Me.TbStStDelay.Location = New System.Drawing.Point(99, 61) - Me.TbStStDelay.Name = "TbStStDelay" - Me.TbStStDelay.Size = New System.Drawing.Size(64, 20) - Me.TbStStDelay.TabIndex = 1 + Me.TbSSdelay.Location = New System.Drawing.Point(99, 61) + Me.TbSSdelay.Name = "TbSSdelay" + Me.TbSSdelay.Size = New System.Drawing.Size(64, 20) + Me.TbSSdelay.TabIndex = 1 ' - 'TBSStime + 'TbSStime ' - Me.TBSStime.Location = New System.Drawing.Point(99, 35) - Me.TBSStime.Name = "TBSStime" - Me.TBSStime.Size = New System.Drawing.Size(64, 20) - Me.TBSStime.TabIndex = 1 + Me.TbSStime.Location = New System.Drawing.Point(99, 35) + Me.TbSStime.Name = "TbSStime" + Me.TbSStime.Size = New System.Drawing.Size(64, 20) + Me.TbSStime.TabIndex = 1 ' 'ChBStartStop ' @@ -730,41 +775,6 @@ Partial Class F_GEN Me.ChBStartStop.Text = "Enabled" Me.ChBStartStop.UseVisualStyleBackColor = True ' - 'BtAccOpen - ' - Me.BtAccOpen.Image = Global.VECTO.My.Resources.Resources.application_export_icon_small - Me.BtAccOpen.Location = New System.Drawing.Point(617, 28) - Me.BtAccOpen.Name = "BtAccOpen" - Me.BtAccOpen.Size = New System.Drawing.Size(23, 23) - Me.BtAccOpen.TabIndex = 2 - Me.BtAccOpen.TabStop = False - Me.BtAccOpen.UseVisualStyleBackColor = True - ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(6, 14) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(177, 13) - Me.Label1.TabIndex = 32 - Me.Label1.Text = "Max. acceleration and brake curves" - ' - 'BtDesMaxBr - ' - Me.BtDesMaxBr.Location = New System.Drawing.Point(583, 29) - Me.BtDesMaxBr.Name = "BtDesMaxBr" - Me.BtDesMaxBr.Size = New System.Drawing.Size(28, 21) - Me.BtDesMaxBr.TabIndex = 1 - Me.BtDesMaxBr.Text = "..." - Me.BtDesMaxBr.UseVisualStyleBackColor = True - ' - 'TbDesMaxFile - ' - Me.TbDesMaxFile.Location = New System.Drawing.Point(6, 30) - Me.TbDesMaxFile.Name = "TbDesMaxFile" - Me.TbDesMaxFile.Size = New System.Drawing.Size(571, 20) - Me.TbDesMaxFile.TabIndex = 0 - ' 'StatusStrip1 ' Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripStatusLabelGEN}) @@ -925,7 +935,7 @@ Partial Class F_GEN Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(174, 22) Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder" ' - 'F_GEN + 'F_VEC ' Me.AcceptButton = Me.ButOK Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -942,20 +952,21 @@ Partial Class F_GEN Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MaximizeBox = False - Me.Name = "F_GEN" + Me.Name = "F_VEC" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent - Me.Text = "GEN Editor" + Me.Text = "VECTO Editor" Me.TabPgGen.ResumeLayout(False) Me.TabPgGen.PerformLayout() - Me.GroupBox5.ResumeLayout(False) - Me.GroupBox5.PerformLayout() + Me.GrCycles.ResumeLayout(False) + Me.GrCycles.PerformLayout() Me.GrAux.ResumeLayout(False) Me.GrAux.PerformLayout() Me.TabControl1.ResumeLayout(False) Me.TabPgDriver.ResumeLayout(False) - Me.TabPgDriver.PerformLayout() - Me.GroupBox4.ResumeLayout(False) - Me.GroupBox4.PerformLayout() + Me.PnVACC.ResumeLayout(False) + Me.PnVACC.PerformLayout() + Me.GrLAC.ResumeLayout(False) + Me.GrLAC.PerformLayout() Me.PnLookAhead.ResumeLayout(False) Me.PnLookAhead.PerformLayout() Me.GroupBox1.ResumeLayout(False) @@ -1008,7 +1019,7 @@ Partial Class F_GEN Friend WithEvents BtDesMaxBr As System.Windows.Forms.Button Friend WithEvents TbDesMaxFile As System.Windows.Forms.TextBox Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents GroupBox5 As System.Windows.Forms.GroupBox + Friend WithEvents GrCycles As System.Windows.Forms.GroupBox Friend WithEvents LvCycles As System.Windows.Forms.ListView Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader Friend WithEvents BtDRIrem As System.Windows.Forms.Button @@ -1024,11 +1035,11 @@ Partial Class F_GEN Friend WithEvents ShowInFolderToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ChBStartStop As System.Windows.Forms.CheckBox Friend WithEvents GrStartStop As System.Windows.Forms.GroupBox - Friend WithEvents TBSSspeed As System.Windows.Forms.TextBox - Friend WithEvents TBSStime As System.Windows.Forms.TextBox + Friend WithEvents TbSSspeed As System.Windows.Forms.TextBox + Friend WithEvents TbSStime As System.Windows.Forms.TextBox Friend WithEvents LabelSStime As System.Windows.Forms.Label Friend WithEvents LabelSSspeed As System.Windows.Forms.Label - Friend WithEvents GroupBox4 As System.Windows.Forms.GroupBox + Friend WithEvents GrLAC As System.Windows.Forms.GroupBox Friend WithEvents Label25 As System.Windows.Forms.Label Friend WithEvents CbLookAhead As System.Windows.Forms.CheckBox Friend WithEvents TbAlookahead As System.Windows.Forms.TextBox @@ -1055,6 +1066,7 @@ Partial Class F_GEN Friend WithEvents Label28 As System.Windows.Forms.Label Friend WithEvents Label31 As System.Windows.Forms.Label Friend WithEvents Label30 As System.Windows.Forms.Label - Friend WithEvents TbStStDelay As System.Windows.Forms.TextBox + Friend WithEvents TbSSdelay As System.Windows.Forms.TextBox Friend WithEvents Label32 As System.Windows.Forms.Label + Friend WithEvents PnVACC As System.Windows.Forms.Panel End Class diff --git a/VECTO/GUI/F_GEN.resx b/VECTO/GUI/F_VECTO.resx similarity index 100% rename from VECTO/GUI/F_GEN.resx rename to VECTO/GUI/F_VECTO.resx diff --git a/VECTO/GUI/F_GEN.vb b/VECTO/GUI/F_VECTO.vb similarity index 90% rename from VECTO/GUI/F_GEN.vb rename to VECTO/GUI/F_VECTO.vb index 59533ca5b304cfe06a4c13feaf8ce978aaedbda7..60d37ae5aa377004e36a68d00966eddf4856aee4 100644 --- a/VECTO/GUI/F_GEN.vb +++ b/VECTO/GUI/F_VECTO.vb @@ -1,6 +1,6 @@ Imports System.Collections.Generic -Public Class F_GEN +Public Class F_VECTO Private Genfile As String Private Changed As Boolean = False @@ -26,6 +26,16 @@ Public Class F_GEN Me.LvAux.Columns(2).Width = -2 + 'Declaration Mode + If Declaration.Active Then + Me.CbEngOnly.Enabled = False + Me.GrCycles.Enabled = False + Me.PnVACC.Enabled = False + Me.PnStartStop.Enabled = False + Me.RdOff.Enabled = False + Me.GrLAC.Enabled = False + End If + Changed = False End Sub @@ -37,6 +47,23 @@ Public Class F_GEN End If End Sub + Private Sub DeclInit() + + If Not Declaration.Active Then Exit Sub + + Me.LvCycles.Items.Clear() + Me.CbEngOnly.Checked = False + Me.TbDesMaxFile.Text = "" + If Not Me.RdEcoRoll.Checked Then Me.RdOverspeed.Checked = True + Me.CbLookAhead.Checked = True + + Me.TbSSspeed.Text = cDeclaration.SSspeed + Me.TbSStime.Text = cDeclaration.SStime + Me.TbSSdelay.Text = cDeclaration.SSdelay + Me.TbAlookahead.Text = cDeclaration.LACa + Me.TbVminLA.Text = cDeclaration.LACvmin + End Sub + #Region "Tabs" @@ -66,11 +93,11 @@ Public Class F_GEN Private Sub ButtonMAP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonMAP.Click If fbENG.OpenDialog(fFileRepl(Me.TbENG.Text, fPATH(Genfile))) Then Me.TbENG.Text = fFileWoDir(fbENG.Files(0), fPATH(Genfile)) End Sub - + Private Sub ButtonFLD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGBX.Click If fbGBX.OpenDialog(fFileRepl(Me.TbGBX.Text, fPATH(Genfile))) Then Me.TbGBX.Text = fFileWoDir(fbGBX.Files(0), fPATH(Genfile)) End Sub - + 'a_DesMax Private Sub BtDesMaxBr_Click_1(sender As System.Object, e As System.EventArgs) Handles BtDesMaxBr.Click If fbACC.OpenDialog(fFileRepl(Me.TbDesMaxFile.Text, fPATH(Genfile))) Then Me.TbDesMaxFile.Text = fFileWoDir(fbACC.Files(0), fPATH(Genfile)) @@ -228,8 +255,8 @@ Public Class F_GEN 'Load GEN in the form Public Sub GENload2Form(ByVal file As String) Dim x As Int16 - Dim Gfile As cGEN - Dim AuxEntryKV As KeyValuePair(Of String, cVEH.cAuxEntry) + Dim Gfile As cVECTO + Dim AuxEntryKV As KeyValuePair(Of String, cVECTO.cAuxEntry) Dim LV0 As ListViewItem Dim sb As cSubPath @@ -238,7 +265,7 @@ Public Class F_GEN GENnew() 'Read GEN - Gfile = New cGEN + Gfile = New cVECTO Gfile.FilePath = file Try If Not Gfile.ReadFile() Then @@ -260,9 +287,9 @@ Public Class F_GEN 'Start/Stop Me.ChBStartStop.Checked = Gfile.StartStop - Me.TBSSspeed.Text = Gfile.StStV - Me.TBSStime.Text = Gfile.StStT - Me.TbStStDelay.Text = Gfile.StStDelay + Me.TbSSspeed.Text = Gfile.StStV + Me.TbSStime.Text = Gfile.StStT + Me.TbSSdelay.Text = Gfile.StStDelay 'VACC Me.TbDesMaxFile.Text = Gfile.DesMaxFile(True) @@ -301,6 +328,9 @@ Public Class F_GEN '------------------------------------------------------------- + DeclInit() + + Genfile = file x = Len(file) @@ -326,12 +356,12 @@ Public Class F_GEN 'GEN save from form Private Function GENsave(ByVal file As String) As Boolean - Dim g As cGEN - Dim AuxEntry As cVEH.cAuxEntry + Dim g As cVECTO + Dim AuxEntry As cVECTO.cAuxEntry Dim LV0 As ListViewItem Dim sb As cSubPath - g = New cGEN + g = New cVECTO g.FilePath = file 'Files ------------------------------------------------- ----------------- @@ -350,15 +380,15 @@ Public Class F_GEN 'Start/Stop g.StartStop = Me.ChBStartStop.Checked - g.StStV = CSng(fTextboxToNumString(Me.TBSSspeed.Text)) - g.StStT = CSng(fTextboxToNumString(Me.TBSStime.Text)) - g.StStDelay = CInt(fTextboxToNumString(Me.TbStStDelay.Text)) + g.StStV = CSng(fTextboxToNumString(Me.TbSSspeed.Text)) + g.StStT = CSng(fTextboxToNumString(Me.TbSStime.Text)) + g.StStDelay = CInt(fTextboxToNumString(Me.TbSSdelay.Text)) 'a_DesMax g.DesMaxFile = Me.TbDesMaxFile.Text For Each LV0 In LvAux.Items - AuxEntry = New cVEH.cAuxEntry + AuxEntry = New cVECTO.cAuxEntry AuxEntry.Path.Init(fPATH(file), LV0.SubItems(2).Text) AuxEntry.Type = LV0.SubItems(1).Text g.AuxPaths.Add(LV0.SubItems(0).Text, AuxEntry) @@ -400,7 +430,7 @@ Public Class F_GEN End Function - 'New BlankGEN + 'New VECTO file Public Sub GENnew() If ChangeCheckCancel() Then Exit Sub @@ -413,8 +443,8 @@ Public Class F_GEN Me.TbDesMaxFile.Text = "" 'Start/Stop - Me.TBSSspeed.Text = "5" - Me.TBSStime.Text = "5" + Me.TbSSspeed.Text = "5" + Me.TbSStime.Text = "5" Me.ChBStartStop.Checked = False Me.LvAux.Items.Clear() @@ -431,6 +461,9 @@ Public Class F_GEN '--------------------------------------------------- + DeclInit() + + Genfile = "" Me.Text = "VECTO Editor" Me.ToolStripStatusLabelGEN.Text = "" @@ -461,18 +494,18 @@ Public Class F_GEN Private Sub TextBoxFLD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TbGBX.TextChanged Change() End Sub - + Private Sub TbDesMaxFile_TextChanged_1(sender As System.Object, e As System.EventArgs) Handles TbDesMaxFile.TextChanged Change() End Sub - Private Sub TBSSspeed_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBSSspeed.TextChanged + Private Sub TBSSspeed_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbSSspeed.TextChanged Change() End Sub - Private Sub TBSStime_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBSStime.TextChanged, TbStStDelay.TextChanged + Private Sub TBSStime_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbSStime.TextChanged, TbSSdelay.TextChanged Change() End Sub @@ -747,7 +780,7 @@ lbDlog: Private Sub ChBStartStop_CheckedChanged_1(sender As System.Object, e As System.EventArgs) Handles ChBStartStop.CheckedChanged Change() - Me.PnStartStop.Enabled = Me.ChBStartStop.Checked + If Not Declaration.Active Then Me.PnStartStop.Enabled = Me.ChBStartStop.Checked End Sub @@ -823,7 +856,6 @@ lbDlog: #End Region - End Class diff --git a/VECTO/GUI/F_VEH.Designer.vb b/VECTO/GUI/F_VEH.Designer.vb index bdbd10ce9236bf4ba61af0d06ed5390c33976d8c..4f2c29cdf0c0af938425d01eac72cc0c884b1011 100644 --- a/VECTO/GUI/F_VEH.Designer.vb +++ b/VECTO/GUI/F_VEH.Designer.vb @@ -29,9 +29,9 @@ Partial Class F_VEH Me.Label2 = New System.Windows.Forms.Label() Me.TbLoad = New System.Windows.Forms.TextBox() Me.Label3 = New System.Windows.Forms.Label() - Me.TBcw = New System.Windows.Forms.TextBox() + Me.TBcdTrTr = New System.Windows.Forms.TextBox() Me.Label4 = New System.Windows.Forms.Label() - Me.TBAquers = New System.Windows.Forms.TextBox() + Me.TBAquersTrTr = New System.Windows.Forms.TextBox() Me.Label7 = New System.Windows.Forms.Label() Me.TbI_wheels = New System.Windows.Forms.TextBox() Me.Label13 = New System.Windows.Forms.Label() @@ -76,6 +76,7 @@ Partial Class F_VEH Me.LvRRC = New System.Windows.Forms.ListView() Me.ColumnHeader7 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.ColumnHeader8 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.ColumnHeader9 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) Me.ButAxlAdd = New System.Windows.Forms.Button() @@ -85,7 +86,7 @@ Partial Class F_VEH Me.CbCat = New System.Windows.Forms.ComboBox() Me.Label5 = New System.Windows.Forms.Label() Me.Label9 = New System.Windows.Forms.Label() - Me.TbMassMax = New System.Windows.Forms.TextBox() + Me.TbMassMass = New System.Windows.Forms.TextBox() Me.Label10 = New System.Windows.Forms.Label() Me.StatusStrip1 = New System.Windows.Forms.StatusStrip() Me.LbStatus = New System.Windows.Forms.ToolStripStatusLabel() @@ -94,13 +95,20 @@ Partial Class F_VEH Me.TbLoadingMax = New System.Windows.Forms.TextBox() Me.Label22 = New System.Windows.Forms.Label() Me.GroupBox1 = New System.Windows.Forms.GroupBox() + Me.PnLoad = New System.Windows.Forms.Panel() Me.GroupBox4 = New System.Windows.Forms.GroupBox() + Me.PnCdATrTr = New System.Windows.Forms.Panel() + Me.LbCdATr = New System.Windows.Forms.Label() + Me.PnCdARig = New System.Windows.Forms.Panel() + Me.Label8 = New System.Windows.Forms.Label() + Me.TBcwRig = New System.Windows.Forms.TextBox() + Me.TBAquersRig = New System.Windows.Forms.TextBox() Me.PictureBox1 = New System.Windows.Forms.PictureBox() Me.CmOpenFile = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.OpenWithGRAPHiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader) + Me.PnAll = New System.Windows.Forms.Panel() Me.GroupBox6.SuspendLayout() Me.ToolStrip1.SuspendLayout() Me.GroupBox7.SuspendLayout() @@ -108,9 +116,13 @@ Partial Class F_VEH Me.GroupBox8.SuspendLayout() Me.StatusStrip1.SuspendLayout() Me.GroupBox1.SuspendLayout() + Me.PnLoad.SuspendLayout() Me.GroupBox4.SuspendLayout() + Me.PnCdATrTr.SuspendLayout() + Me.PnCdARig.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.CmOpenFile.SuspendLayout() + Me.PnAll.SuspendLayout() Me.SuspendLayout() ' 'Label1 @@ -132,7 +144,7 @@ Partial Class F_VEH 'Label2 ' Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(121, 74) + Me.Label2.Location = New System.Drawing.Point(115, 31) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(45, 13) Me.Label2.TabIndex = 2 @@ -140,7 +152,7 @@ Partial Class F_VEH ' 'TbLoad ' - Me.TbLoad.Location = New System.Drawing.Point(172, 71) + Me.TbLoad.Location = New System.Drawing.Point(166, 28) Me.TbLoad.Name = "TbLoad" Me.TbLoad.Size = New System.Drawing.Size(57, 20) Me.TbLoad.TabIndex = 2 @@ -148,39 +160,39 @@ Partial Class F_VEH 'Label3 ' Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(83, 22) + Me.Label3.Location = New System.Drawing.Point(37, 47) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(83, 13) + Me.Label3.Size = New System.Drawing.Size(58, 13) Me.Label3.TabIndex = 8 - Me.Label3.Text = "Drag Coefficient" + Me.Label3.Text = "Drag Coef." ' - 'TBcw + 'TBcdTrTr ' - Me.TBcw.Location = New System.Drawing.Point(172, 19) - Me.TBcw.Name = "TBcw" - Me.TBcw.Size = New System.Drawing.Size(57, 20) - Me.TBcw.TabIndex = 0 + Me.TBcdTrTr.Location = New System.Drawing.Point(2, 24) + Me.TBcdTrTr.Name = "TBcdTrTr" + Me.TBcdTrTr.Size = New System.Drawing.Size(57, 20) + Me.TBcdTrTr.TabIndex = 0 ' 'Label4 ' Me.Label4.AutoSize = True - Me.Label4.Location = New System.Drawing.Point(61, 48) + Me.Label4.Location = New System.Drawing.Point(12, 73) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(105, 13) + Me.Label4.Size = New System.Drawing.Size(83, 13) Me.Label4.TabIndex = 10 - Me.Label4.Text = "Cross Sectional Area" + Me.Label4.Text = "Cross Sec. Area" ' - 'TBAquers + 'TBAquersTrTr ' - Me.TBAquers.Location = New System.Drawing.Point(172, 45) - Me.TBAquers.Name = "TBAquers" - Me.TBAquers.Size = New System.Drawing.Size(57, 20) - Me.TBAquers.TabIndex = 1 + Me.TBAquersTrTr.Location = New System.Drawing.Point(2, 50) + Me.TBAquersTrTr.Name = "TBAquersTrTr" + Me.TBAquersTrTr.Size = New System.Drawing.Size(57, 20) + Me.TBAquersTrTr.TabIndex = 1 ' 'Label7 ' Me.Label7.AutoSize = True - Me.Label7.Location = New System.Drawing.Point(62, 184) + Me.Label7.Location = New System.Drawing.Point(62, 177) Me.Label7.Name = "Label7" Me.Label7.Size = New System.Drawing.Size(75, 13) Me.Label7.TabIndex = 4 @@ -188,7 +200,7 @@ Partial Class F_VEH ' 'TbI_wheels ' - Me.TbI_wheels.Location = New System.Drawing.Point(143, 181) + Me.TbI_wheels.Location = New System.Drawing.Point(143, 174) Me.TbI_wheels.Name = "TbI_wheels" Me.TbI_wheels.Size = New System.Drawing.Size(57, 20) Me.TbI_wheels.TabIndex = 4 @@ -196,7 +208,7 @@ Partial Class F_VEH 'Label13 ' Me.Label13.AutoSize = True - Me.Label13.Location = New System.Drawing.Point(28, 210) + Me.Label13.Location = New System.Drawing.Point(28, 203) Me.Label13.Name = "Label13" Me.Label13.Size = New System.Drawing.Size(109, 13) Me.Label13.TabIndex = 6 @@ -204,7 +216,7 @@ Partial Class F_VEH ' 'TBDreifen ' - Me.TBDreifen.Location = New System.Drawing.Point(143, 207) + Me.TBDreifen.Location = New System.Drawing.Point(143, 200) Me.TBDreifen.Name = "TBDreifen" Me.TBDreifen.Size = New System.Drawing.Size(57, 20) Me.TBDreifen.TabIndex = 5 @@ -212,7 +224,7 @@ Partial Class F_VEH '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(383, 534) + Me.ButOK.Location = New System.Drawing.Point(383, 561) Me.ButOK.Name = "ButOK" Me.ButOK.Size = New System.Drawing.Size(75, 23) Me.ButOK.TabIndex = 9 @@ -223,7 +235,7 @@ Partial Class F_VEH ' 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(464, 534) + Me.ButCancel.Location = New System.Drawing.Point(464, 561) Me.ButCancel.Name = "ButCancel" Me.ButCancel.Size = New System.Drawing.Size(75, 23) Me.ButCancel.TabIndex = 10 @@ -242,7 +254,7 @@ Partial Class F_VEH 'Label31 ' Me.Label31.AutoSize = True - Me.Label31.Location = New System.Drawing.Point(235, 74) + Me.Label31.Location = New System.Drawing.Point(229, 31) Me.Label31.Name = "Label31" Me.Label31.Size = New System.Drawing.Size(25, 13) Me.Label31.TabIndex = 24 @@ -251,7 +263,7 @@ Partial Class F_VEH 'Label32 ' Me.Label32.AutoSize = True - Me.Label32.Location = New System.Drawing.Point(206, 184) + Me.Label32.Location = New System.Drawing.Point(206, 177) Me.Label32.Name = "Label32" Me.Label32.Size = New System.Drawing.Size(36, 13) Me.Label32.TabIndex = 24 @@ -260,7 +272,7 @@ Partial Class F_VEH 'Label35 ' Me.Label35.AutoSize = True - Me.Label35.Location = New System.Drawing.Point(206, 210) + Me.Label35.Location = New System.Drawing.Point(206, 203) Me.Label35.Name = "Label35" Me.Label35.Size = New System.Drawing.Size(21, 13) Me.Label35.TabIndex = 24 @@ -269,7 +281,7 @@ Partial Class F_VEH 'Label37 ' Me.Label37.AutoSize = True - Me.Label37.Location = New System.Drawing.Point(235, 22) + Me.Label37.Location = New System.Drawing.Point(223, 47) Me.Label37.Name = "Label37" Me.Label37.Size = New System.Drawing.Size(16, 13) Me.Label37.TabIndex = 24 @@ -278,7 +290,7 @@ Partial Class F_VEH 'Label38 ' Me.Label38.AutoSize = True - Me.Label38.Location = New System.Drawing.Point(235, 48) + Me.Label38.Location = New System.Drawing.Point(223, 73) Me.Label38.Name = "Label38" Me.Label38.Size = New System.Drawing.Size(24, 13) Me.Label38.TabIndex = 24 @@ -319,7 +331,7 @@ Partial Class F_VEH Me.GroupBox6.Controls.Add(Me.CbCdMode) Me.GroupBox6.Controls.Add(Me.BtCdFileBrowse) Me.GroupBox6.Controls.Add(Me.TbCdFile) - Me.GroupBox6.Location = New System.Drawing.Point(12, 361) + Me.GroupBox6.Location = New System.Drawing.Point(6, 241) Me.GroupBox6.Name = "GroupBox6" Me.GroupBox6.Size = New System.Drawing.Size(527, 74) Me.GroupBox6.TabIndex = 5 @@ -432,7 +444,7 @@ Partial Class F_VEH Me.GroupBox7.Controls.Add(Me.TbRtPath) Me.GroupBox7.Controls.Add(Me.CbRtType) Me.GroupBox7.Controls.Add(Me.Label12) - Me.GroupBox7.Location = New System.Drawing.Point(12, 441) + Me.GroupBox7.Location = New System.Drawing.Point(6, 321) Me.GroupBox7.Name = "GroupBox7" Me.GroupBox7.Size = New System.Drawing.Size(527, 81) Me.GroupBox7.TabIndex = 7 @@ -517,7 +529,7 @@ Partial Class F_VEH 'Label46 ' Me.Label46.AutoSize = True - Me.Label46.Location = New System.Drawing.Point(12, 48) + Me.Label46.Location = New System.Drawing.Point(6, 5) Me.Label46.Name = "Label46" Me.Label46.Size = New System.Drawing.Size(154, 13) Me.Label46.TabIndex = 31 @@ -526,7 +538,7 @@ Partial Class F_VEH 'Label50 ' Me.Label50.AutoSize = True - Me.Label50.Location = New System.Drawing.Point(235, 48) + Me.Label50.Location = New System.Drawing.Point(229, 5) Me.Label50.Name = "Label50" Me.Label50.Size = New System.Drawing.Size(25, 13) Me.Label50.TabIndex = 24 @@ -534,7 +546,7 @@ Partial Class F_VEH ' 'TbMassExtra ' - Me.TbMassExtra.Location = New System.Drawing.Point(172, 45) + Me.TbMassExtra.Location = New System.Drawing.Point(166, 2) Me.TbMassExtra.Name = "TbMassExtra" Me.TbMassExtra.Size = New System.Drawing.Size(57, 20) Me.TbMassExtra.TabIndex = 1 @@ -550,18 +562,17 @@ Partial Class F_VEH Me.GroupBox8.Controls.Add(Me.Label7) Me.GroupBox8.Controls.Add(Me.Label32) Me.GroupBox8.Controls.Add(Me.Label35) - Me.GroupBox8.Location = New System.Drawing.Point(284, 116) + Me.GroupBox8.Location = New System.Drawing.Point(278, 3) Me.GroupBox8.Name = "GroupBox8" - Me.GroupBox8.Size = New System.Drawing.Size(255, 239) + Me.GroupBox8.Size = New System.Drawing.Size(255, 232) Me.GroupBox8.TabIndex = 4 Me.GroupBox8.TabStop = False Me.GroupBox8.Text = "Axles / Wheels" ' 'ButAxlRem ' - Me.ButAxlRem.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.ButAxlRem.Image = Global.VECTO.My.Resources.Resources.minus_circle_icon - Me.ButAxlRem.Location = New System.Drawing.Point(41, 148) + Me.ButAxlRem.Location = New System.Drawing.Point(41, 127) Me.ButAxlRem.Name = "ButAxlRem" Me.ButAxlRem.Size = New System.Drawing.Size(29, 23) Me.ButAxlRem.TabIndex = 2 @@ -569,8 +580,7 @@ Partial Class F_VEH ' 'LvRRC ' - Me.LvRRC.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ - Or System.Windows.Forms.AnchorStyles.Left) _ + Me.LvRRC.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.LvRRC.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader7, Me.ColumnHeader8, Me.ColumnHeader2, Me.ColumnHeader9, Me.ColumnHeader1}) Me.LvRRC.FullRowSelect = True @@ -579,7 +589,7 @@ Partial Class F_VEH Me.LvRRC.Location = New System.Drawing.Point(6, 19) Me.LvRRC.MultiSelect = False Me.LvRRC.Name = "LvRRC" - Me.LvRRC.Size = New System.Drawing.Size(243, 123) + Me.LvRRC.Size = New System.Drawing.Size(243, 102) Me.LvRRC.TabIndex = 0 Me.LvRRC.TabStop = False Me.LvRRC.UseCompatibleStateImageBehavior = False @@ -595,6 +605,11 @@ Partial Class F_VEH Me.ColumnHeader8.Text = "Rel. load" Me.ColumnHeader8.Width = 62 ' + 'ColumnHeader2 + ' + Me.ColumnHeader2.Text = "Twin T." + Me.ColumnHeader2.Width = 51 + ' 'ColumnHeader9 ' Me.ColumnHeader9.Text = "RRC" @@ -607,9 +622,8 @@ Partial Class F_VEH ' 'ButAxlAdd ' - Me.ButAxlAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.ButAxlAdd.Image = Global.VECTO.My.Resources.Resources.plus_circle_icon - Me.ButAxlAdd.Location = New System.Drawing.Point(6, 148) + Me.ButAxlAdd.Location = New System.Drawing.Point(6, 127) Me.ButAxlAdd.Name = "ButAxlAdd" Me.ButAxlAdd.Size = New System.Drawing.Size(29, 23) Me.ButAxlAdd.TabIndex = 1 @@ -626,11 +640,10 @@ Partial Class F_VEH ' 'CbAxleConfig ' - Me.CbAxleConfig.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.CbAxleConfig.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.CbAxleConfig.FormattingEnabled = True Me.CbAxleConfig.Items.AddRange(New Object() {"4x2", "4x4", "6x2", "6x4", "6x6", "8x2", "8x4", "8x6", "8x8"}) - Me.CbAxleConfig.Location = New System.Drawing.Point(304, 82) + Me.CbAxleConfig.Location = New System.Drawing.Point(304, 83) Me.CbAxleConfig.Name = "CbAxleConfig" Me.CbAxleConfig.Size = New System.Drawing.Size(68, 21) Me.CbAxleConfig.TabIndex = 3 @@ -657,27 +670,27 @@ Partial Class F_VEH 'Label5 ' Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(31, 126) + Me.Label5.Location = New System.Drawing.Point(13, 119) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(135, 13) + Me.Label5.Size = New System.Drawing.Size(134, 13) Me.Label5.TabIndex = 31 - Me.Label5.Text = "Max. Gross Vehicle Weight" + Me.Label5.Text = "Gross Vehicle Mass Rating" ' 'Label9 ' Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(235, 126) + Me.Label9.Location = New System.Drawing.Point(201, 119) Me.Label9.Name = "Label9" - Me.Label9.Size = New System.Drawing.Size(25, 13) + Me.Label9.Size = New System.Drawing.Size(16, 13) Me.Label9.TabIndex = 24 - Me.Label9.Text = "[kg]" + Me.Label9.Text = "[t]" ' - 'TbMassMax + 'TbMassMass ' - Me.TbMassMax.Location = New System.Drawing.Point(172, 123) - Me.TbMassMax.Name = "TbMassMax" - Me.TbMassMax.Size = New System.Drawing.Size(57, 20) - Me.TbMassMax.TabIndex = 4 + Me.TbMassMass.Location = New System.Drawing.Point(153, 116) + Me.TbMassMass.Name = "TbMassMass" + Me.TbMassMass.Size = New System.Drawing.Size(42, 20) + Me.TbMassMass.TabIndex = 4 ' 'Label10 ' @@ -691,7 +704,7 @@ Partial Class F_VEH 'StatusStrip1 ' Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus}) - Me.StatusStrip1.Location = New System.Drawing.Point(0, 560) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 587) Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.Size = New System.Drawing.Size(551, 22) Me.StatusStrip1.SizingGrip = False @@ -716,7 +729,7 @@ Partial Class F_VEH 'Label11 ' Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(95, 100) + Me.Label11.Location = New System.Drawing.Point(89, 57) Me.Label11.Name = "Label11" Me.Label11.Size = New System.Drawing.Size(71, 13) Me.Label11.TabIndex = 31 @@ -724,7 +737,7 @@ Partial Class F_VEH ' 'TbLoadingMax ' - Me.TbLoadingMax.Location = New System.Drawing.Point(172, 97) + Me.TbLoadingMax.Location = New System.Drawing.Point(166, 54) Me.TbLoadingMax.Name = "TbLoadingMax" Me.TbLoadingMax.ReadOnly = True Me.TbLoadingMax.Size = New System.Drawing.Size(57, 20) @@ -734,7 +747,7 @@ Partial Class F_VEH 'Label22 ' Me.Label22.AutoSize = True - Me.Label22.Location = New System.Drawing.Point(235, 100) + Me.Label22.Location = New System.Drawing.Point(229, 57) Me.Label22.Name = "Label22" Me.Label22.Size = New System.Drawing.Size(25, 13) Me.Label22.TabIndex = 24 @@ -742,43 +755,100 @@ Partial Class F_VEH ' 'GroupBox1 ' + Me.GroupBox1.Controls.Add(Me.PnLoad) Me.GroupBox1.Controls.Add(Me.TbMass) Me.GroupBox1.Controls.Add(Me.Label1) - Me.GroupBox1.Controls.Add(Me.Label2) - Me.GroupBox1.Controls.Add(Me.TbLoad) Me.GroupBox1.Controls.Add(Me.Label14) - Me.GroupBox1.Controls.Add(Me.Label31) - Me.GroupBox1.Controls.Add(Me.Label50) - Me.GroupBox1.Controls.Add(Me.TbLoadingMax) - Me.GroupBox1.Controls.Add(Me.Label9) - Me.GroupBox1.Controls.Add(Me.Label22) - Me.GroupBox1.Controls.Add(Me.Label46) - Me.GroupBox1.Controls.Add(Me.TbMassExtra) - Me.GroupBox1.Controls.Add(Me.TbMassMax) - Me.GroupBox1.Controls.Add(Me.Label11) - Me.GroupBox1.Controls.Add(Me.Label5) - Me.GroupBox1.Location = New System.Drawing.Point(12, 116) + Me.GroupBox1.Location = New System.Drawing.Point(6, 3) Me.GroupBox1.Name = "GroupBox1" - Me.GroupBox1.Size = New System.Drawing.Size(266, 156) + Me.GroupBox1.Size = New System.Drawing.Size(266, 124) Me.GroupBox1.TabIndex = 2 Me.GroupBox1.TabStop = False Me.GroupBox1.Text = "Weight / Loading" ' + 'PnLoad + ' + Me.PnLoad.Controls.Add(Me.Label2) + Me.PnLoad.Controls.Add(Me.Label31) + Me.PnLoad.Controls.Add(Me.TbLoad) + Me.PnLoad.Controls.Add(Me.TbMassExtra) + Me.PnLoad.Controls.Add(Me.TbLoadingMax) + Me.PnLoad.Controls.Add(Me.Label50) + Me.PnLoad.Controls.Add(Me.Label46) + Me.PnLoad.Controls.Add(Me.Label22) + Me.PnLoad.Controls.Add(Me.Label11) + Me.PnLoad.Location = New System.Drawing.Point(6, 43) + Me.PnLoad.Name = "PnLoad" + Me.PnLoad.Size = New System.Drawing.Size(256, 84) + Me.PnLoad.TabIndex = 25 + ' 'GroupBox4 ' - Me.GroupBox4.Controls.Add(Me.TBcw) + Me.GroupBox4.Controls.Add(Me.PnCdATrTr) + Me.GroupBox4.Controls.Add(Me.PnCdARig) Me.GroupBox4.Controls.Add(Me.Label3) Me.GroupBox4.Controls.Add(Me.Label4) - Me.GroupBox4.Controls.Add(Me.TBAquers) Me.GroupBox4.Controls.Add(Me.Label37) Me.GroupBox4.Controls.Add(Me.Label38) - Me.GroupBox4.Location = New System.Drawing.Point(12, 278) + Me.GroupBox4.Location = New System.Drawing.Point(6, 133) Me.GroupBox4.Name = "GroupBox4" - Me.GroupBox4.Size = New System.Drawing.Size(266, 77) + Me.GroupBox4.Size = New System.Drawing.Size(266, 102) Me.GroupBox4.TabIndex = 3 Me.GroupBox4.TabStop = False Me.GroupBox4.Text = "Air Resistance" ' + 'PnCdATrTr + ' + Me.PnCdATrTr.Controls.Add(Me.LbCdATr) + Me.PnCdATrTr.Controls.Add(Me.TBcdTrTr) + Me.PnCdATrTr.Controls.Add(Me.TBAquersTrTr) + Me.PnCdATrTr.Location = New System.Drawing.Point(97, 20) + Me.PnCdATrTr.Name = "PnCdATrTr" + Me.PnCdATrTr.Size = New System.Drawing.Size(60, 76) + Me.PnCdATrTr.TabIndex = 27 + ' + 'LbCdATr + ' + Me.LbCdATr.AutoSize = True + Me.LbCdATr.Location = New System.Drawing.Point(2, 1) + Me.LbCdATr.Name = "LbCdATr" + Me.LbCdATr.Size = New System.Drawing.Size(58, 13) + Me.LbCdATr.TabIndex = 25 + Me.LbCdATr.Text = "Tr && Trailer" + ' + 'PnCdARig + ' + Me.PnCdARig.Controls.Add(Me.Label8) + Me.PnCdARig.Controls.Add(Me.TBcwRig) + Me.PnCdARig.Controls.Add(Me.TBAquersRig) + Me.PnCdARig.Location = New System.Drawing.Point(157, 18) + Me.PnCdARig.Name = "PnCdARig" + Me.PnCdARig.Size = New System.Drawing.Size(60, 78) + Me.PnCdARig.TabIndex = 26 + ' + 'Label8 + ' + Me.Label8.AutoSize = True + Me.Label8.Location = New System.Drawing.Point(10, 3) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(31, 13) + Me.Label8.TabIndex = 25 + Me.Label8.Text = "Rigid" + ' + 'TBcwRig + ' + Me.TBcwRig.Location = New System.Drawing.Point(3, 26) + Me.TBcwRig.Name = "TBcwRig" + Me.TBcwRig.Size = New System.Drawing.Size(57, 20) + Me.TBcwRig.TabIndex = 0 + ' + 'TBAquersRig + ' + Me.TBAquersRig.Location = New System.Drawing.Point(3, 52) + Me.TBAquersRig.Name = "TBAquersRig" + Me.TBAquersRig.Size = New System.Drawing.Size(57, 20) + Me.TBAquersRig.TabIndex = 1 + ' 'PictureBox1 ' Me.PictureBox1.BackColor = System.Drawing.Color.White @@ -813,10 +883,17 @@ Partial Class F_VEH Me.ShowInFolderToolStripMenuItem.Size = New System.Drawing.Size(174, 22) Me.ShowInFolderToolStripMenuItem.Text = "Show in Folder" ' - 'ColumnHeader2 + 'PnAll ' - Me.ColumnHeader2.Text = "Twin T." - Me.ColumnHeader2.Width = 51 + Me.PnAll.Controls.Add(Me.GroupBox4) + Me.PnAll.Controls.Add(Me.GroupBox1) + Me.PnAll.Controls.Add(Me.GroupBox8) + Me.PnAll.Controls.Add(Me.GroupBox7) + Me.PnAll.Controls.Add(Me.GroupBox6) + Me.PnAll.Location = New System.Drawing.Point(6, 148) + Me.PnAll.Name = "PnAll" + Me.PnAll.Size = New System.Drawing.Size(544, 407) + Me.PnAll.TabIndex = 38 ' 'F_VEH ' @@ -824,21 +901,20 @@ Partial Class F_VEH Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.ButCancel - Me.ClientSize = New System.Drawing.Size(551, 582) + Me.ClientSize = New System.Drawing.Size(551, 609) + Me.Controls.Add(Me.PnAll) Me.Controls.Add(Me.PictureBox1) - Me.Controls.Add(Me.GroupBox4) Me.Controls.Add(Me.Label23) - Me.Controls.Add(Me.GroupBox1) + Me.Controls.Add(Me.Label9) Me.Controls.Add(Me.StatusStrip1) Me.Controls.Add(Me.CbAxleConfig) + Me.Controls.Add(Me.TbMassMass) Me.Controls.Add(Me.CbCat) + Me.Controls.Add(Me.Label5) Me.Controls.Add(Me.Label21) - Me.Controls.Add(Me.GroupBox8) Me.Controls.Add(Me.TbHDVclass) Me.Controls.Add(Me.Label10) - Me.Controls.Add(Me.GroupBox7) Me.Controls.Add(Me.ToolStrip1) - Me.Controls.Add(Me.GroupBox6) Me.Controls.Add(Me.ButCancel) Me.Controls.Add(Me.ButOK) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle @@ -861,10 +937,17 @@ Partial Class F_VEH Me.StatusStrip1.PerformLayout() Me.GroupBox1.ResumeLayout(False) Me.GroupBox1.PerformLayout() + Me.PnLoad.ResumeLayout(False) + Me.PnLoad.PerformLayout() Me.GroupBox4.ResumeLayout(False) Me.GroupBox4.PerformLayout() + Me.PnCdATrTr.ResumeLayout(False) + Me.PnCdATrTr.PerformLayout() + Me.PnCdARig.ResumeLayout(False) + Me.PnCdARig.PerformLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() Me.CmOpenFile.ResumeLayout(False) + Me.PnAll.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -874,9 +957,9 @@ Partial Class F_VEH Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents TbLoad As System.Windows.Forms.TextBox Friend WithEvents Label3 As System.Windows.Forms.Label - Friend WithEvents TBcw As System.Windows.Forms.TextBox + Friend WithEvents TBcdTrTr As System.Windows.Forms.TextBox Friend WithEvents Label4 As System.Windows.Forms.Label - Friend WithEvents TBAquers As System.Windows.Forms.TextBox + Friend WithEvents TBAquersTrTr As System.Windows.Forms.TextBox Friend WithEvents Label7 As System.Windows.Forms.Label Friend WithEvents TbI_wheels As System.Windows.Forms.TextBox Friend WithEvents Label13 As System.Windows.Forms.Label @@ -923,7 +1006,7 @@ Partial Class F_VEH Friend WithEvents CbCat As System.Windows.Forms.ComboBox Friend WithEvents Label5 As System.Windows.Forms.Label Friend WithEvents Label9 As System.Windows.Forms.Label - Friend WithEvents TbMassMax As System.Windows.Forms.TextBox + Friend WithEvents TbMassMass As System.Windows.Forms.TextBox Friend WithEvents ColumnHeader9 As System.Windows.Forms.ColumnHeader Friend WithEvents Label10 As System.Windows.Forms.Label Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip @@ -946,4 +1029,12 @@ Partial Class F_VEH Friend WithEvents BtCdFileOpen As System.Windows.Forms.Button Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader + Friend WithEvents PnLoad As System.Windows.Forms.Panel + Friend WithEvents Label8 As System.Windows.Forms.Label + Friend WithEvents LbCdATr As System.Windows.Forms.Label + Friend WithEvents TBcwRig As System.Windows.Forms.TextBox + Friend WithEvents TBAquersRig As System.Windows.Forms.TextBox + Friend WithEvents PnCdARig As System.Windows.Forms.Panel + Friend WithEvents PnCdATrTr As System.Windows.Forms.Panel + Friend WithEvents PnAll As System.Windows.Forms.Panel End Class diff --git a/VECTO/GUI/F_VEH.vb b/VECTO/GUI/F_VEH.vb index ec26ff4c625b7be54f61bb5a77adba4ce2a72c58..0d9649f69d580fdc70d76a29d78c8a170051fbb9 100644 --- a/VECTO/GUI/F_VEH.vb +++ b/VECTO/GUI/F_VEH.vb @@ -19,12 +19,128 @@ Public Class F_VEH 'Init Private Sub F05_VEH_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load + 'Declaration Mode + If Declaration.Active Then + Me.PnLoad.Enabled = False + Me.TbLoadingMax.Text = "-" + Me.ButAxlAdd.Enabled = False + Me.ButAxlRem.Enabled = False + Me.CbCdMode.Enabled = False + Else + Me.PnCdARig.Enabled = False + Me.LbCdATr.Visible = False + End If + Changed = False newVEH() End Sub + + Private Sub DeclInit() + Dim VehC As tVehCat + Dim AxlC As tAxleConf + Dim MaxMass As Single + Dim HDVclass As String + Dim s0 As cSegmentTableEntry = Nothing + Dim i As Int16 + Dim i0 As Int16 + Dim AxleCount As Int16 + Dim lvi As ListViewItem + Dim RigEnabled As Boolean + Dim TrTrEnabled As Boolean + + If Not Declaration.Active Then Exit Sub + + VehC = CType(Me.CbCat.SelectedIndex, tVehCat) + + AxlC = CType(Me.CbAxleConfig.SelectedIndex, tAxleConf) + + MaxMass = CSng(fTextboxToNumString(Me.TbMassMass.Text)) + + If Declaration.SegmentTable.SetRef(s0, VehC, AxlC, MaxMass) Then + HDVclass = s0.HDVclass + + AxleCount = s0.AxleShares(s0.Missions(0)).Count + i0 = LvRRC.Items.Count + + If AxleCount > i0 Then + For i = 1 To AxleCount - LvRRC.Items.Count + lvi = New ListViewItem + lvi.SubItems(0).Text = (i + i0).ToString + lvi.SubItems.Add("-") + lvi.SubItems.Add("no") + lvi.SubItems.Add("") + lvi.SubItems.Add("") + LvRRC.Items.Add(lvi) + Next + + ElseIf AxleCount < LvRRC.Items.Count Then + For i = AxleCount To LvRRC.Items.Count - 1 + LvRRC.Items.RemoveAt(LvRRC.Items.Count - 1) + 'LvRRC.Items(i).ForeColor = Color.Red + Next + End If + + If s0.LongHaulRigidTrailer Then + + RigEnabled = True + TrTrEnabled = True + + Else + + If s0.VehCat = tVehCat.RigidTruck Then + RigEnabled = True + TrTrEnabled = False + Else + RigEnabled = False + TrTrEnabled = True + End If + + End If + + Me.PnAll.Enabled = True + + Else + Me.PnAll.Enabled = False + HDVclass = "-" + RigEnabled = False + TrTrEnabled = False + End If + + + If RigEnabled Then + Me.PnCdARig.Enabled = True + If Me.TBcwRig.Text = "-" Then Me.TBcwRig.Text = "" + If Me.TBAquersRig.Text = "-" Then Me.TBAquersRig.Text = "" + Else + Me.PnCdARig.Enabled = False + Me.TBcwRig.Text = "-" + Me.TBAquersRig.Text = "-" + End If + + If TrTrEnabled Then + Me.PnCdATrTr.Enabled = True + If Me.TBcdTrTr.Text = "-" Then Me.TBcdTrTr.Text = "" + If Me.TBAquersTrTr.Text = "-" Then Me.TBAquersTrTr.Text = "" + Else + Me.PnCdATrTr.Enabled = False + Me.TBcdTrTr.Text = "-" + Me.TBAquersTrTr.Text = "-" + End If + + Me.TbHDVclass.Text = HDVclass + Me.TbMassExtra.Text = "-" + Me.TbLoad.Text = "-" + Me.CbCdMode.SelectedIndex = 1 + + + + End Sub + + + #Region "Menü / Toolstrip" 'New @@ -61,15 +177,15 @@ Public Class F_VEH End If - If Not F_GEN.Visible Then + If Not F_VECTO.Visible Then GenDir = "" - F_GEN.Show() - F_GEN.GENnew() + F_VECTO.Show() + F_VECTO.GENnew() Else - F_GEN.WindowState = FormWindowState.Normal + F_VECTO.WindowState = FormWindowState.Normal End If - F_GEN.TextBoxVEH.Text = fFileWoDir(VehFile, GenDir) + F_VECTO.TextBoxVEH.Text = fFileWoDir(VehFile, GenDir) End Sub @@ -117,14 +233,10 @@ Public Class F_VEH Me.TbLoad.Text = "" Me.TbI_wheels.Text = "" Me.TBDreifen.Text = "" - Me.TBcw.Text = "" - Me.TBAquers.Text = "" - 'Me.TBlhinauf.Text = "" - 'Me.TBlhinunter.Text = "" - 'Me.TBhinauf.Text = "" - 'Me.TBhinunter.Text = "" - 'Me.TBpspar.Text = "" - 'Me.TBpfast.Text = "" + Me.TBcdTrTr.Text = "" + Me.TBAquersTrTr.Text = "" + Me.TBcwRig.Text = "" + Me.TBAquersRig.Text = "" Me.CbCdMode.SelectedIndex = 0 Me.TbCdFile.Text = "" @@ -137,11 +249,13 @@ Public Class F_VEH Me.LvRRC.Items.Clear() - Me.TbMassMax.Text = "" + Me.TbMassMass.Text = "" Me.TbMassExtra.Text = "" Me.CbAxleConfig.SelectedIndex = 0 - 'TODO: AUTO: Me.TbHDVclass.Text - 'AUTO: Me.TbLoadingMax.Text + + + DeclInit() + VehFile = "" @@ -176,14 +290,8 @@ Public Class F_VEH Me.TbLoad.Text = VEH0.Loading Me.TbI_wheels.Text = VEH0.I_wheels Me.TBDreifen.Text = VEH0.Dreifen - Me.TBcw.Text = VEH0.Cd0 - Me.TBAquers.Text = VEH0.Aquers - 'Me.TBhinauf.Text = VEH0.hinauf - 'Me.TBhinunter.Text = VEH0.hinunter - 'Me.TBlhinauf.Text = VEH0.lhinauf - 'Me.TBlhinunter.Text = VEH0.lhinunter - 'Me.TBpspar.Text = VEH0.pspar - 'Me.TBpfast.Text = 1 - VEH0.pmodell - VEH0.pspar + + Me.CbCdMode.SelectedIndex = CType(VEH0.CdMode, Integer) Me.TbCdFile.Text = VEH0.CdFile.OriginalPath @@ -192,8 +300,11 @@ Public Class F_VEH Me.TbRtRatio.Text = CStr(VEH0.RtRatio) Me.TbRtPath.Text = CStr(VEH0.RtFile.OriginalPath) - - Me.CbCat.SelectedIndex = CType(VEH0.VehCat, Integer) + If VEH0.VehCat = tVehCat.Undef Then + Me.CbCat.SelectedIndex = 0 + Else + Me.CbCat.SelectedIndex = CType(VEH0.VehCat, Integer) + End If Me.LvRRC.Items.Clear() i = 0 @@ -212,11 +323,26 @@ Public Class F_VEH LvRRC.Items.Add(lvi) Next - Me.TbMassMax.Text = VEH0.MassMax + Me.TbMassMass.Text = VEH0.MassMax Me.TbMassExtra.Text = VEH0.MassExtra - Me.CbAxleConfig.SelectedIndex = CType(VEH0.AxleConf, Integer) - 'TODO: AUTO: Me.TbHDVclass.Text - 'AUTO: Me.TbLoadingMax.Text + + + If VEH0.AxleConf = tAxleConf.Undef Then + Me.CbAxleConfig.SelectedIndex = 0 + Else + Me.CbAxleConfig.SelectedIndex = CType(VEH0.AxleConf, Integer) + End If + + Me.TBcdTrTr.Text = VEH0.Cd0Tr + Me.TBAquersTrTr.Text = VEH0.Aquers0Tr + Me.TBcwRig.Text = VEH0.Cd0Rig + Me.TBAquersRig.Text = VEH0.Aquers0Rig + + + + DeclInit() + + fbVEH.UpdateHistory(file) Me.Text = fFILE(file, True) @@ -247,37 +373,15 @@ Public Class F_VEH VEH0.Mass = CSng(fTextboxToNumString(Me.TbMass.Text)) VEH0.MassExtra = CSng(fTextboxToNumString(Me.TbMassExtra.Text)) VEH0.Loading = CSng(fTextboxToNumString(Me.TbLoad.Text)) - VEH0.Cd0 = CSng(fTextboxToNumString(Me.TBcw.Text)) - VEH0.Aquers = CSng(fTextboxToNumString(Me.TBAquers.Text)) + VEH0.Cd0Tr = CSng(fTextboxToNumString(Me.TBcdTrTr.Text)) + VEH0.Aquers0Tr = CSng(fTextboxToNumString(Me.TBAquersTrTr.Text)) + VEH0.Cd0Rig = CSng(fTextboxToNumString(Me.TBcwRig.Text)) + VEH0.Aquers0Rig = CSng(fTextboxToNumString(Me.TBAquersRig.Text)) - 'VEH0.I_mot = CSng(fTextboxToNumString(Me.TBI_mot.Text)) VEH0.I_wheels = CSng(fTextboxToNumString(Me.TbI_wheels.Text)) - 'VEH0.I_Getriebe = CSng(fTextboxToNumString(Me.TBI_getr.Text)) - 'VEH0.Paux0 = CSng(fTextboxToNumString(Me.TbPaux0.Text)) - 'VEH0.Pnenn = CSng(fTextboxToNumString(Me.TBPnenn.Text)) - 'VEH0.nNenn = CSng(fTextboxToNumString(Me.TBnnenn.Text)) - 'VEH0.nLeerl = CSng(fTextboxToNumString(Me.TBnleerl.Text)) - - 'VEH0.fGetr = CSng(fTextboxToNumString(Me.TBfGetr.Text)) - - 'VEH0.AchsI = CSng(Me.LvGears.Items(0).SubItems(1).Text) - 'VEH0.AchsMap = Me.LvGears.Items(0).SubItems(2).Text VEH0.Dreifen = CSng(fTextboxToNumString(Me.TBDreifen.Text)) - 'For i = 1 To 16 - ' VEH0.Igetr(i) = CSng(Me.LvGears.Items(i).SubItems(1).Text) - ' VEH0.GetrMap(i) = Me.LvGears.Items(i).SubItems(2).Text - 'Next - - 'VEH0.hinauf = CSng(fTextboxToNumString(Me.TBhinauf.Text)) - 'VEH0.hinunter = CSng(fTextboxToNumString(Me.TBhinunter.Text)) - 'VEH0.lhinauf = CSng(fTextboxToNumString(Me.TBlhinauf.Text)) - 'VEH0.lhinunter = CSng(fTextboxToNumString(Me.TBlhinunter.Text)) - 'VEH0.pspar = CSng(fTextboxToNumString(Me.TBpspar.Text)) - 'VEH0.pmodell = CSng(1 - CSng(fTextboxToNumString(Me.TBpfast.Text)) - CSng(fTextboxToNumString(Me.TBpspar.Text))) - - 'VEH0.TracIntrSi = fTextboxToNumString(Me.TbTracInt.Text) VEH0.CdMode = CType(Me.CbCdMode.SelectedIndex, tCdMode) VEH0.CdFile.Init(fPATH(file), Me.TbCdFile.Text) @@ -292,7 +396,7 @@ Public Class F_VEH VEH0.RRCs.Add(New Single() {CSng(LV0.SubItems(1).Text), CSng(LV0.SubItems(2).Text = "yes"), CSng(LV0.SubItems(3).Text), CSng(LV0.SubItems(4).Text)}) Next - VEH0.MassMax = CSng(fTextboxToNumString(Me.TbMassMax.Text)) + VEH0.MassMax = CSng(fTextboxToNumString(Me.TbMassMass.Text)) VEH0.MassExtra = CSng(fTextboxToNumString(Me.TbMassExtra.Text)) VEH0.AxleConf = CType(Me.CbAxleConfig.SelectedIndex, tAxleConf) @@ -304,7 +408,7 @@ Public Class F_VEH End If If Not GenDir = "" Or AutoSendTo Then - If F_GEN.Visible And UCase(fFileRepl(F_GEN.TextBoxVEH.Text, GenDir)) <> UCase(file) Then F_GEN.TextBoxVEH.Text = fFileWoDir(file, GenDir) + If F_VECTO.Visible And UCase(fFileRepl(F_VECTO.TextBoxVEH.Text, GenDir)) <> UCase(file) Then F_VECTO.TextBoxVEH.Text = fFileWoDir(file, GenDir) End If fbVEH.UpdateHistory(file) @@ -342,9 +446,11 @@ Public Class F_VEH End Select - Me.TbCdFile.Enabled = bEnabled - Me.BtCdFileBrowse.Enabled = bEnabled - Me.BtCdFileOpen.Enabled = bEnabled + If Not Declaration.Active Then + Me.TbCdFile.Enabled = bEnabled + Me.BtCdFileBrowse.Enabled = bEnabled + Me.BtCdFileOpen.Enabled = bEnabled + End If Change() End Sub @@ -459,11 +565,11 @@ Public Class F_VEH Change() End Sub - Private Sub TBcw_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBcw.TextChanged + Private Sub TBcw_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBcdTrTr.TextChanged, TBcwRig.TextChanged Change() End Sub - Private Sub TBAquers_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBAquers.TextChanged + Private Sub TBAquers_TextChanged(sender As System.Object, e As System.EventArgs) Handles TBAquersTrTr.TextChanged, TBAquersRig.TextChanged Change() End Sub @@ -557,6 +663,7 @@ Public Class F_VEH Private Sub CbCat_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbCat.SelectedIndexChanged Change() + DeclInit() End Sub Private Sub TbMassTrailer_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbMassExtra.TextChanged @@ -564,22 +671,26 @@ Public Class F_VEH Change() End Sub - Private Sub TbMassMax_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbMassMax.TextChanged + Private Sub TbMassMax_TextChanged(sender As System.Object, e As System.EventArgs) Handles TbMassMass.TextChanged SetMaxLoad() Change() + DeclInit() End Sub Private Sub CbAxleConfig_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CbAxleConfig.SelectedIndexChanged Change() + DeclInit() End Sub #End Region Private Sub SetMaxLoad() - If IsNumeric(Me.TbMass.Text) And IsNumeric(Me.TbMassExtra.Text) And IsNumeric(Me.TbMassMax.Text) Then - Me.TbLoadingMax.Text = CStr(CSng(Me.TbMassMax.Text) - CSng(Me.TbMass.Text) - CSng(Me.TbMassExtra.Text)) - Else - Me.TbLoadingMax.Text = "" + If Not Declaration.Active Then + If IsNumeric(Me.TbMass.Text) And IsNumeric(Me.TbMassExtra.Text) And IsNumeric(Me.TbMassMass.Text) Then + Me.TbLoadingMax.Text = CStr(CSng(Me.TbMassMass.Text) - CSng(Me.TbMass.Text) - CSng(Me.TbMassExtra.Text)) + Else + Me.TbLoadingMax.Text = "" + End If End If End Sub @@ -594,7 +705,7 @@ Public Class F_VEH lv0 = New ListViewItem lv0.SubItems(0).Text = Me.LvRRC.Items.Count + 1 - lv0.SubItems.Add(Trim(dlog.TbWeight.Text)) + lv0.SubItems.Add(Trim(dlog.TbAxleShare.Text)) If dlog.CbTwinT.Checked Then lv0.SubItems.Add("yes") Else @@ -623,7 +734,7 @@ Public Class F_VEH Private Sub LvAxle_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles LvRRC.KeyDown Select Case e.KeyCode Case Keys.Delete, Keys.Back - RemoveAxleItem() + If Not Declaration.Active Then RemoveAxleItem() Case Keys.Enter EditAxleItem() End Select @@ -667,13 +778,13 @@ Public Class F_VEH LV0 = LvRRC.SelectedItems(0) - dlog.TbWeight.Text = LV0.SubItems(1).Text + dlog.TbAxleShare.Text = LV0.SubItems(1).Text dlog.CbTwinT.Checked = (LV0.SubItems(2).Text = "yes") dlog.TbRRC.Text = LV0.SubItems(3).Text dlog.TbFzISO.Text = LV0.SubItems(4).Text If dlog.ShowDialog = Windows.Forms.DialogResult.OK Then - LV0.SubItems(1).Text = dlog.TbWeight.Text + LV0.SubItems(1).Text = dlog.TbAxleShare.Text If dlog.CbTwinT.Checked Then LV0.SubItems(2).Text = "yes" Else @@ -681,7 +792,7 @@ Public Class F_VEH End If LV0.SubItems(3).Text = dlog.TbRRC.Text LV0.SubItems(4).Text = dlog.TbFzISO.Text - + Change() @@ -731,4 +842,5 @@ Public Class F_VEH #End Region + End Class diff --git a/VECTO/GUI/F_VEH_Axle.Designer.vb b/VECTO/GUI/F_VEH_Axle.Designer.vb index 1326262621bd7176472c44c39662d867a6a4342a..34d076a451f4f4d537df8694d1a3a712879429f6 100644 --- a/VECTO/GUI/F_VEH_Axle.Designer.vb +++ b/VECTO/GUI/F_VEH_Axle.Designer.vb @@ -26,7 +26,7 @@ Partial Class F_VEH_Axle Me.OK_Button = New System.Windows.Forms.Button() Me.Cancel_Button = New System.Windows.Forms.Button() Me.Label1 = New System.Windows.Forms.Label() - Me.TbWeight = New System.Windows.Forms.TextBox() + Me.TbAxleShare = New System.Windows.Forms.TextBox() Me.Label2 = New System.Windows.Forms.Label() Me.Label3 = New System.Windows.Forms.Label() Me.Label4 = New System.Windows.Forms.Label() @@ -39,7 +39,9 @@ Partial Class F_VEH_Axle Me.Label9 = New System.Windows.Forms.Label() Me.Label10 = New System.Windows.Forms.Label() Me.CbTwinT = New System.Windows.Forms.CheckBox() + Me.PnAxle = New System.Windows.Forms.Panel() Me.TableLayoutPanel1.SuspendLayout() + Me.PnAxle.SuspendLayout() Me.SuspendLayout() ' 'TableLayoutPanel1 @@ -79,23 +81,23 @@ Partial Class F_VEH_Axle 'Label1 ' Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(27, 14) + Me.Label1.Location = New System.Drawing.Point(18, 10) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(96, 13) Me.Label1.TabIndex = 1 Me.Label1.Text = "Relative Axle Load" ' - 'TbWeight + 'TbAxleShare ' - Me.TbWeight.Location = New System.Drawing.Point(129, 12) - Me.TbWeight.Name = "TbWeight" - Me.TbWeight.Size = New System.Drawing.Size(53, 20) - Me.TbWeight.TabIndex = 0 + Me.TbAxleShare.Location = New System.Drawing.Point(120, 8) + Me.TbAxleShare.Name = "TbAxleShare" + Me.TbAxleShare.Size = New System.Drawing.Size(53, 20) + Me.TbAxleShare.TabIndex = 0 ' 'Label2 ' Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(188, 15) + Me.Label2.Location = New System.Drawing.Point(179, 11) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(16, 13) Me.Label2.TabIndex = 1 @@ -199,6 +201,16 @@ Partial Class F_VEH_Axle Me.CbTwinT.Text = "Twin Tyres" Me.CbTwinT.UseVisualStyleBackColor = True ' + 'PnAxle + ' + Me.PnAxle.Controls.Add(Me.Label1) + Me.PnAxle.Controls.Add(Me.Label2) + Me.PnAxle.Controls.Add(Me.TbAxleShare) + Me.PnAxle.Location = New System.Drawing.Point(9, 4) + Me.PnAxle.Name = "PnAxle" + Me.PnAxle.Size = New System.Drawing.Size(204, 42) + Me.PnAxle.TabIndex = 5 + ' 'F_VEH_Axle ' Me.AcceptButton = Me.OK_Button @@ -206,6 +218,7 @@ Partial Class F_VEH_Axle Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.Cancel_Button Me.ClientSize = New System.Drawing.Size(390, 205) + Me.Controls.Add(Me.PnAxle) Me.Controls.Add(Me.CbTwinT) Me.Controls.Add(Me.TbFzISO) Me.Controls.Add(Me.Label6) @@ -214,12 +227,9 @@ Partial Class F_VEH_Axle Me.Controls.Add(Me.Label10) Me.Controls.Add(Me.Label7) Me.Controls.Add(Me.Label5) - Me.Controls.Add(Me.TbWeight) Me.Controls.Add(Me.Label9) Me.Controls.Add(Me.Label8) Me.Controls.Add(Me.Label3) - Me.Controls.Add(Me.Label2) - Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.TableLayoutPanel1) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog Me.MaximizeBox = False @@ -229,6 +239,8 @@ Partial Class F_VEH_Axle Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent Me.Text = "Axle configuration" Me.TableLayoutPanel1.ResumeLayout(False) + Me.PnAxle.ResumeLayout(False) + Me.PnAxle.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -237,7 +249,7 @@ Partial Class F_VEH_Axle Friend WithEvents OK_Button As System.Windows.Forms.Button Friend WithEvents Cancel_Button As System.Windows.Forms.Button Friend WithEvents Label1 As System.Windows.Forms.Label - Friend WithEvents TbWeight As System.Windows.Forms.TextBox + Friend WithEvents TbAxleShare As System.Windows.Forms.TextBox Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents Label4 As System.Windows.Forms.Label @@ -250,5 +262,6 @@ Partial Class F_VEH_Axle Friend WithEvents Label9 As System.Windows.Forms.Label Friend WithEvents Label10 As System.Windows.Forms.Label Friend WithEvents CbTwinT As System.Windows.Forms.CheckBox + Friend WithEvents PnAxle As System.Windows.Forms.Panel End Class diff --git a/VECTO/GUI/F_VEH_Axle.vb b/VECTO/GUI/F_VEH_Axle.vb index 279b9cf4230c496d48bc96518d6248bede5a10c7..7eda3ad31a8d209864d723d515cea550c726893d 100644 --- a/VECTO/GUI/F_VEH_Axle.vb +++ b/VECTO/GUI/F_VEH_Axle.vb @@ -2,13 +2,23 @@ Public Class F_VEH_Axle + Private Sub F_VEH_Axle_Load(sender As Object, e As System.EventArgs) Handles Me.Load + 'Declaration Mode + If Declaration.Active Then + Me.PnAxle.Enabled = False + End If + End Sub + Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click - If Not IsNumeric(Me.TbWeight.Text) OrElse Trim(Me.TbWeight.Text) = "" Then - MsgBox("Weight input is not valid!") - Exit Sub + If Not Declaration.Active Then + If Not IsNumeric(Me.TbAxleShare.Text) OrElse Trim(Me.TbAxleShare.Text) = "" Then + MsgBox("Weight input is not valid!") + Exit Sub + End If End If + If Not IsNumeric(Me.TbRRC.Text) OrElse Trim(Me.TbRRC.Text) = "" Then MsgBox("RRC input is not valid!") Exit Sub @@ -28,4 +38,5 @@ Public Class F_VEH_Axle Me.Close() End Sub + End Class diff --git a/VECTO/Input Files/cDRI.vb b/VECTO/Input Files/cDRI.vb index 810c77f854eb6896969cc597c29ec06dc9b0d4e6..be03263f82994749de3ea3559997fe9978217559 100644 --- a/VECTO/Input Files/cDRI.vb +++ b/VECTO/Input Files/cDRI.vb @@ -19,20 +19,7 @@ Public Class cDRI Public Gvorg As Boolean Public GradVorg As Boolean - Private bEmCompDef As Boolean - Public EmComponents As Dictionary(Of String, cEmComp) - Public EmDefRef As Dictionary(Of tMapComp, cEmComp) - - 'Defaults(Vorgabe) for EXS - Private bExsCompDef As Boolean - Public ExsComponents As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) - - 'Parameters for KF-creation - Public MapUnitsNormed As Dictionary(Of String, Boolean) - Public MapPfak As Dictionary(Of String, tIntpPeCorMode) - Private bCreateMapParDef As Boolean - - 'Defaults(Vorgabe) for AUX + 'Aux-Psupply Private bAuxDef As Boolean Public AuxComponents As Dictionary(Of String, List(Of Single)) @@ -41,11 +28,6 @@ Public Class cDRI Public Scycle As Boolean Public VoglS As List(Of Double) - Public Sub New() - EmComponents = New Dictionary(Of String, cEmComp) - EmDefRef = New Dictionary(Of tMapComp, cEmComp) - End Sub - Private Sub ResetMe() Values = Nothing PaddVorg = False @@ -57,14 +39,6 @@ Public Class cDRI Pvorg = False tDim = -1 t0 = 1 'Ist Standardwert falls Converter nicht verwendet wird - EmComponents.Clear() - bEmCompDef = False - EmDefRef.Clear() - MapUnitsNormed = Nothing - MapPfak = Nothing - bExsCompDef = False - ExsComponents = Nothing - bCreateMapParDef = False bAuxDef = False AuxComponents = Nothing VairVorg = False @@ -78,21 +52,14 @@ Public Class cDRI Dim s As Integer Dim txt As String Dim Comp As tDriComp - Dim ExsComp As tExsComp Dim AuxComp As tAuxComp Dim AuxID As String - Dim MapComp As tMapComp - Dim Em0 As cEmComp - Dim ModNr As Short Dim Svorg As Boolean = False Dim DRIcheck As Dictionary(Of tDriComp, Boolean) Dim Spalten As Dictionary(Of tDriComp, Integer) Dim sKV As KeyValuePair(Of tDriComp, Integer) - Dim ExsSpalten As Dictionary(Of Integer, List(Of Single)) = Nothing - Dim ExsKV As KeyValuePair(Of Integer, List(Of Single)) - Dim AuxSpalten As Dictionary(Of String, Integer) = Nothing Dim Mvorg As Boolean = False @@ -100,10 +67,8 @@ Public Class cDRI Dim MsgSrc As String - MsgSrc = "Main/ReadInp/DRI" - bCreateMapParDef = False 'Reset ResetMe() @@ -139,41 +104,6 @@ Public Class cDRI DRIcheck.Add(tDriComp.StopTime, False) DRIcheck.Add(tDriComp.Torque, False) - ''*** - ''*** First line: Version - 'line = file.ReadLine - 'txt = Trim(UCase(line(0))) - 'If Microsoft.VisualBasic.Left(txt, 1) = "V" Then - ' ' "V" entfernen => Zahl bleibt übrig - ' txt = txt.Replace("V", "") - ' If Not IsNumeric(txt) Then - ' 'If invalid Version: Abort - ' WorkerMsg(tMsgID.Err, "File Version invalid!", MsgSrc) - ' GoTo lbEr - ' Else - ' 'Version specified - ' FileVersion = CInt(txt) - ' End If - 'Else - ' 'If no version information: Old Format - ' file.Close() - ' Return ReadOldFormat() - 'End If - - ''Version Check: Abort if input file format is newer than PHEM-version - 'If FileVersion > FormatVersion Then - ' WorkerMsg(tMsgID.Err, "File Version not supported!", MsgSrc) - ' GoTo lbEr - 'End If - - ''Column 2: added option "+" = parameter for KF-creation - 'If UBound(line) > 0 Then - ' If Trim(line(1)) = "+" Then - ' bCreateMapParDef = True - ' WorkerMsg(tMsgID.Normal, "MAP-Creation settings found.", MsgSrc) - ' End If - 'End If - If file.EndOfFile Then WorkerMsg(tMsgID.Err, "Driving cycle invalid!", MsgSrc) Return False @@ -196,99 +126,37 @@ Public Class cDRI 'Falls DRIcomp = Undefined dann wirds als EXS-Comp oder als Emission für KF-Erstellung / Eng-Analysis verwendet |@@| If used DRIcomp = Undefined it will get as EXS-Comp or Emission for KF-Creation / Eng-Analysis If Comp = tDriComp.Undefined Then - ExsComp = fExsComp(line(s)) - - If ExsComp = tExsComp.Undefined Then - - AuxComp = fAuxComp(line(s)) - - If AuxComp = tAuxComp.Undefined Then - - MapComp = fMapComp(line(s)) - - txt = UCase(Trim(line(s))) - - If EmComponents.ContainsKey(txt) Then - WorkerMsg(tMsgID.Err, "Multiple definitions of '" & line(s) & "'! Column " & s + 1, MsgSrc) - GoTo lbEr - End If - - Em0 = New cEmComp - Em0.Col = s - Em0.Name = line(s) 'wird bei Def-Komp noch geändert - Em0.IDstring = txt - Em0.MapCompID = MapComp - - If MapComp <> tMapComp.Undefined Then - Em0.Name = fMapCompName(MapComp) - EmDefRef.Add(MapComp, Em0) - End If - - EmComponents.Add(Em0.IDstring, Em0) - - bEmCompDef = True - - 'ERROR when component in angle brackets is unknown - If MapComp = tMapComp.Undefined And Em0.IDstring.Length > 1 Then - If Left(Em0.IDstring, 1) = "<" And Right(Em0.IDstring, 1) = ">" Then - WorkerMsg(tMsgID.Err, "'" & Em0.Name & "' is no valid Default Map, Cycle or EXS Component!", MsgSrc) - End If - End If - - Else - - txt = fCompSubStr(line(s)) - - If Not bAuxDef Then - AuxComponents = New Dictionary(Of String, List(Of Single)) - AuxSpalten = New Dictionary(Of String, Integer) - End If - - If AuxComponents.ContainsKey(txt) Then - WorkerMsg(tMsgID.Err, "Multiple definitions of auxiliary '" & txt & "' in driving cycle! Column " & s + 1, MsgSrc) - GoTo lbEr - End If + AuxComp = fAuxComp(line(s)) - AuxComponents.Add(txt, New List(Of Single)) - AuxSpalten.Add(txt, s) + If AuxComp = tAuxComp.Undefined Then - bAuxDef = True - - End If + 'ERROR when component is unknown + WorkerMsg(tMsgID.Err, "'" & line(s) & "' is no valid cycle input parameter!", MsgSrc) + GoTo lbEr Else - 'if first EXS-column, then create Dictionary - If Not bExsCompDef Then - ExsSpalten = New Dictionary(Of Integer, List(Of Single)) - ExsComponents = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) - End If - - 'If EXS-Component not yet in Dictionary, create - If Not ExsComponents.ContainsKey(ExsComp) Then ExsComponents.Add(ExsComp, New Dictionary(Of Short, List(Of Single))) - txt = fCompSubStr(line(s)) - If Not IsNumeric(txt) Then - WorkerMsg(tMsgID.Err, "Component ID String '" & line(s) & "' is invalid! Column " & s + 1, MsgSrc) - GoTo lbEr - Else - ModNr = CShort(txt) + If Not bAuxDef Then + AuxComponents = New Dictionary(Of String, List(Of Single)) + AuxSpalten = New Dictionary(Of String, Integer) End If - 'Check whether ExsComp/Module-combination already exists => ERROR - If ExsComponents(ExsComp).ContainsKey(ModNr) Then - WorkerMsg(tMsgID.Err, "Component '" & line(s) & "' already defined! Column " & s + 1, MsgSrc) + If AuxComponents.ContainsKey(txt) Then + WorkerMsg(tMsgID.Err, "Multiple definitions of auxiliary '" & txt & "' in driving cycle! Column " & s + 1, MsgSrc) GoTo lbEr End If - ExsComponents(ExsComp).Add(ModNr, New List(Of Single)) - ExsSpalten.Add(s, ExsComponents(ExsComp)(ModNr)) + AuxComponents.Add(txt, New List(Of Single)) + AuxSpalten.Add(txt, s) - bExsCompDef = True + bAuxDef = True End If + + Else If DRIcheck(Comp) Then @@ -321,88 +189,7 @@ Public Class cDRI Mvorg = False End If - '*** - '*** Third row: Units/Normalization - 'VECTO: nothing read. Fixed Units (line = file.ReadLine) - - 'VECTO MAP-components: Always [g/h]! - For Each Em0 In EmComponents.Values - - ''Store Unit in String for further checks - 'txt = Trim(line(Em0.Col)) - - ''Remove brackets - 'txt = txt.Replace("[", "") - 'txt = txt.Replace("]", "") - - ''Set Scaling and Unit - 'If txt.Contains("/") Then - - - ' Select Case UCase(Right(txt, txt.Length - txt.IndexOf("/") - 1)) - ' Case "KWH", "H" & sKey.Normed - ' WorkerMsg(tMsgID.Warn, "Unit of component " & line(s) & " is not valid! Check Output!", MsgSrc) - ' Em0.NormID = tEmNorm.x - ' Em0.Unit = "Unit-ERROR!" - - ' Case "H" - ' Em0.NormID = tEmNorm.x_h - ' Em0.Unit = "[" & Left(txt, txt.IndexOf("/")) & "/h]" - ' Case Else - ' Em0.NormID = tEmNorm.x - ' Em0.Unit = "[" & txt & "]" - - ' End Select - - 'Else - ' Em0.NormID = tEmNorm.x - ' Em0.Unit = "[" & txt & "]" - 'End If - - Em0.NormID = tEmNorm.x_h - Em0.Unit = "[g/h]" - - Next - - '*** - '*** Line 4, 5: (optional when "+"): Settings for KF-creation - - 'If "+" enabled - If bCreateMapParDef Then - - 'Creating instances - MapUnitsNormed = New Dictionary(Of String, Boolean) - MapPfak = New Dictionary(Of String, tIntpPeCorMode) - - '1. Option "Map normalized by Pnom" - line = file.ReadLine - For Each Em0 In EmComponents.Values - MapUnitsNormed.Add(Em0.IDstring, CBool(line(Em0.Col))) - Next - - '2. Option "PfAK apply" - line = file.ReadLine - For Each Em0 In EmComponents.Values - - Select Case CShort(line(Em0.Col)) - Case 0 - MapPfak.Add(Em0.IDstring, tIntpPeCorMode.PeCorOff) - Case 1 - MapPfak.Add(Em0.IDstring, tIntpPeCorMode.PeCorNull) - Case 2 - MapPfak.Add(Em0.IDstring, tIntpPeCorMode.PeCorEmDrag) - Case Else - WorkerMsg(tMsgID.Err, "Power Correction Mode Nr. " & line(Em0.Col) & " is invalid!", MsgSrc) - GoTo lbEr - End Select - - Next - - End If - - '*** - '*** Ab 4.Zeile bzw. Ab 6.Zeile: Werte (derzeit keine unterschiedlichen Einheiten/Normierungen unterstützt) |@@| From 4th line or From 6th line: values (no different units/normalizations support) Try Do While Not file.EndOfFile tDim += 1 'wird in ResetMe zurück gesetzt @@ -411,22 +198,12 @@ Public Class cDRI For Each sKV In Spalten If sKV.Key = tDriComp.Pe Or sKV.Key = tDriComp.Torque Then - If Trim(line(sKV.Value)) = sKey.MAP.Drag Then line(sKV.Value) = -999999 + If Trim(line(sKV.Value)) = sKey.EngDrag Then line(sKV.Value) = -999999 End If Values(sKV.Key).Add(CDbl(line(sKV.Value))) Next - For Each Em0 In EmComponents.Values - Em0.RawVals.Add(CSng(line(Em0.Col))) - Next - - If bExsCompDef Then - For Each ExsKV In ExsSpalten - ExsKV.Value.Add(CSng(line(ExsKV.Key))) - Next - End If - If bAuxDef Then For Each AuxID In AuxSpalten.Keys AuxComponents(AuxID).Add(CSng(line(AuxSpalten(AuxID)))) @@ -447,7 +224,8 @@ Public Class cDRI If Vvorg Then For s = 0 To tDim - If Values(tDriComp.V)(s) < 0.09 Then Values(tDriComp.V)(s) = 0 + Values(tDriComp.V)(s) /= 3.6 + If Values(tDriComp.V)(s) < 0.025 Then Values(tDriComp.V)(s) = 0 Next End If @@ -468,44 +246,6 @@ lbEr: End Function - Public Function ExsCompDef() As Boolean - Return bExsCompDef - End Function - - Public Function ExsCompDef(ByVal ExsComp As tExsComp, Optional ByVal ModNr As Short = -1) As Boolean - - If bExsCompDef Then - If ExsComponents.ContainsKey(ExsComp) Then - If ModNr = -1 Then - Return True - Else - Return ExsComponents(ExsComp).ContainsKey(ModNr) - End If - Else - Return False - End If - Else - Return False - End If - - End Function - - Public Sub DeNorm() - Dim s As Integer - - 'Convert Speed to m/s - If Vvorg Then - For s = 0 To tDim - Values(tDriComp.V)(s) /= 3.6 - If Values(tDriComp.V)(s) < 0 Then Values(tDriComp.V)(s) = 0 - Next - End If - - - '!!!!!!!! Emissions are only accepted in x/h or x (see ReadFile)!!!!!!!! - - End Sub - Public Sub GradToAlt() Dim i As Integer Dim v0 As New List(Of Double) @@ -594,11 +334,6 @@ lbEr: Dim ValKV As KeyValuePair(Of tDriComp, List(Of Double)) Dim tmax As Integer - Dim tExsValues As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) = Nothing - Dim hzExsValues As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) = Nothing - Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single))) - Dim ExsKVsub As KeyValuePair(Of Short, List(Of Single)) - Dim tAuxValues As Dictionary(Of String, List(Of Single)) = Nothing Dim hzAuxValues As Dictionary(Of String, List(Of Single)) = Nothing Dim AuxKV As KeyValuePair(Of String, List(Of Single)) @@ -626,8 +361,8 @@ lbEr: Dist = Values(tDriComp.s) Speed = New List(Of Double) For i = 0 To tDim - Speed.Add(Values(tDriComp.V)(i) / 3.6) - SpeedOgl.Add(Values(tDriComp.V)(i) / 3.6) + Speed.Add(Values(tDriComp.V)(i)) + SpeedOgl.Add(Values(tDriComp.V)(i)) Next StopTime = Values(tDriComp.StopTime) @@ -650,19 +385,6 @@ lbEr: End If Next - If bExsCompDef Then - tExsValues = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) - hzExsValues = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) - For Each ExsKV In ExsComponents - tExsValues.Add(ExsKV.Key, New Dictionary(Of Short, List(Of Single))) - hzExsValues.Add(ExsKV.Key, New Dictionary(Of Short, List(Of Single))) - For Each ExsKVsub In ExsKV.Value - tExsValues(ExsKV.Key).Add(ExsKVsub.Key, New List(Of Single)) - hzExsValues(ExsKV.Key).Add(ExsKVsub.Key, New List(Of Single)) - Next - Next - End If - If bAuxDef Then tAuxValues = New Dictionary(Of String, List(Of Single)) hzAuxValues = New Dictionary(Of String, List(Of Single)) @@ -690,7 +412,7 @@ lbEr: a = vm * dv / ds - am = GEN.aDesMin(vm) + am = VEC.aDesMin(vm) Do While a < am @@ -701,7 +423,7 @@ lbEr: a = vm * dv / ds - am = GEN.aDesMin(vm) + am = VEC.aDesMin(vm) Loop @@ -716,16 +438,9 @@ lbEr: For Each ValKV In tValues If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(0)) Next - tValues(tDriComp.V).Add(Speed(0) * 3.6) - tSpeedOgl.Add(SpeedOgl(0) * 3.6) + tValues(tDriComp.V).Add(Speed(0)) + tSpeedOgl.Add(SpeedOgl(0)) tDist.Add(s) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(0)) - Next - Next - End If If bAuxDef Then For Each AuxKV In AuxComponents tAuxValues(AuxKV.Key).Add(AuxKV.Value(0)) @@ -745,16 +460,9 @@ lbEr: For Each ValKV In tValues If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(0)) Next - tValues(tDriComp.V).Add(Speed(0) * 3.6) - tSpeedOgl.Add(SpeedOgl(0) * 3.6) + tValues(tDriComp.V).Add(Speed(0)) + tSpeedOgl.Add(SpeedOgl(0)) tDist.Add(s) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(0)) - Next - Next - End If If bAuxDef Then For Each AuxKV In AuxComponents tAuxValues(AuxKV.Key).Add(AuxKV.Value(0)) @@ -781,16 +489,9 @@ lbEr: For Each ValKV In tValues If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(i + 1)) Next - tValues(tDriComp.V).Add(Speed(i + 1) * 3.6) - tSpeedOgl.Add(SpeedOgl(i + 1) * 3.6) + tValues(tDriComp.V).Add(Speed(i + 1)) + tSpeedOgl.Add(SpeedOgl(i + 1)) tDist.Add(s) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(i + 1)) - Next - Next - End If If bAuxDef Then For Each AuxKV In AuxComponents tAuxValues(AuxKV.Key).Add(AuxKV.Value(i + 1)) @@ -810,16 +511,10 @@ lbEr: For Each ValKV In tValues If ValKV.Key <> tDriComp.V Then tValues(ValKV.Key).Add(Values(ValKV.Key)(i + 1)) Next - tValues(tDriComp.V).Add(Speed(i + 1) * 3.6) - tSpeedOgl.Add(SpeedOgl(i + 1) * 3.6) + tValues(tDriComp.V).Add(Speed(i + 1)) + tSpeedOgl.Add(SpeedOgl(i + 1)) tDist.Add(s) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - tExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(i + 1)) - Next - Next - End If + If bAuxDef Then For Each AuxKV In AuxComponents tAuxValues(AuxKV.Key).Add(AuxKV.Value(i + 1)) @@ -868,14 +563,6 @@ lbEr: Next hzSpeedOgl.Add(0) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - 'WRONG!! => hzExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsKVsub.Value(i - 1)) - hzExsValues(ExsKV.Key)(ExsKVsub.Key).Add(tExsValues(ExsKV.Key)(ExsKVsub.Key)(i - 1)) - Next - Next - End If If bAuxDef Then For Each AuxKV In AuxComponents 'WRONG!! => hzAuxValues(AuxKV.Key).Add(AuxKV.Value(i - 1)) @@ -890,13 +577,6 @@ lbEr: Next hzSpeedOgl.Add((hzDist(j) - tDist(i - 1)) * (tSpeedOgl(i) - tSpeedOgl(i - 1)) / (tDist(i) - tDist(i - 1)) + tSpeedOgl(i - 1)) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - hzExsValues(ExsKV.Key)(ExsKVsub.Key).Add((hzDist(j) - tDist(i - 1)) * (tExsValues(ExsKV.Key)(ExsKVsub.Key)(i) - tExsValues(ExsKV.Key)(ExsKVsub.Key)(i - 1)) / (tDist(i) - tDist(i - 1)) + tExsValues(ExsKV.Key)(ExsKVsub.Key)(i - 1)) - Next - Next - End If If bAuxDef Then For Each AuxKV In AuxComponents hzAuxValues(AuxKV.Key).Add((hzDist(j) - tDist(i - 1)) * (tAuxValues(AuxKV.Key)(i) - tAuxValues(AuxKV.Key)(i - 1)) / (tDist(i) - tDist(i - 1)) + tAuxValues(AuxKV.Key)(i - 1)) @@ -910,7 +590,6 @@ lbEr: Values = hzValues VoglS = hzSpeedOgl MODdata.Vh.Weg = hzDist - If bExsCompDef Then ExsComponents = hzExsValues If bAuxDef Then AuxComponents = hzAuxValues tDim = Values(tDriComp.V).Count - 1 @@ -934,15 +613,6 @@ lbEr: Dim fTime As List(Of Double) Dim Summe As Dictionary(Of tDriComp, Double) - Dim NewMapValues As Dictionary(Of String, List(Of Double)) - Dim EmKV As KeyValuePair(Of String, cEmComp) - Dim MapSumme As Dictionary(Of String, Double) - - Dim NewExsValues As Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) = Nothing - Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single))) - Dim ExsKVsub As KeyValuePair(Of Short, List(Of Single)) - Dim ExsSumme As Dictionary(Of tExsComp, Dictionary(Of Short, Single)) = Nothing - Dim NewAuxValues As Dictionary(Of String, List(Of Single)) = Nothing Dim AuxKV As KeyValuePair(Of String, List(Of Single)) Dim AuxSumme As Dictionary(Of String, Single) = Nothing @@ -974,27 +644,6 @@ lbEr: If KV.Key <> tDriComp.t Then Summe.Add(KV.Key, 0) Next - NewMapValues = New Dictionary(Of String, List(Of Double)) - MapSumme = New Dictionary(Of String, Double) - - For Each EmKV In EmComponents - NewMapValues.Add(EmKV.Key, New List(Of Double)) - MapSumme.Add(EmKV.Key, 0) - Next - - If bExsCompDef Then - NewExsValues = New Dictionary(Of tExsComp, Dictionary(Of Short, List(Of Single))) - ExsSumme = New Dictionary(Of tExsComp, Dictionary(Of Short, Single)) - For Each ExsKV In ExsComponents - NewExsValues.Add(ExsKV.Key, New Dictionary(Of Short, List(Of Single))) - ExsSumme.Add(ExsKV.Key, New Dictionary(Of Short, Single)) - For Each ExsKVsub In ExsKV.Value - NewExsValues(ExsKV.Key).Add(ExsKVsub.Key, New List(Of Single)) - ExsSumme(ExsKV.Key).Add(ExsKVsub.Key, 0) - Next - Next - End If - If bAuxDef Then NewAuxValues = New Dictionary(Of String, List(Of Single)) AuxSumme = New Dictionary(Of String, Single) @@ -1039,18 +688,6 @@ lb10: NewValues(KVd.Key).Add((tMid - fTime(z - 1)) * (Values(KVd.Key)(z) - Values(KVd.Key)(z - 1)) / (fTime(z) - fTime(z - 1)) + Values(KVd.Key)(z - 1)) Next - For Each EmKV In EmComponents - NewMapValues(EmKV.Key).Add((tMid - fTime(z - 1)) * (EmKV.Value.RawVals(z) - EmKV.Value.RawVals(z - 1)) / (fTime(z) - fTime(z - 1)) + EmKV.Value.RawVals(z - 1)) - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((tMid - fTime(z - 1)) * (ExsKVsub.Value(z) - ExsKVsub.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + ExsKVsub.Value(z - 1)) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents NewAuxValues(AuxKV.Key).Add((tMid - fTime(z - 1)) * (AuxKV.Value(z) - AuxKV.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + AuxKV.Value(z - 1)) @@ -1065,18 +702,6 @@ lb10: NewValues(KVd.Key).Add((Summe(KVd.Key) + Values(KVd.Key)(z)) / (Anz + 1)) Next - For Each EmKV In EmComponents - NewMapValues(EmKV.Key).Add((MapSumme(EmKV.Key) + EmKV.Value.RawVals(z)) / (Anz + 1)) - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((ExsSumme(ExsKV.Key)(ExsKVsub.Key) + ExsKVsub.Value(z)) / (Anz + 1)) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents NewAuxValues(AuxKV.Key).Add((AuxSumme(AuxKV.Key) + AuxKV.Value(z)) / (Anz + 1)) @@ -1093,18 +718,6 @@ lb10: NewValues(KVd.Key).Add((tMid - fTime(z - 1)) * (Values(KVd.Key)(z) - Values(KVd.Key)(z - 1)) / (fTime(z) - fTime(z - 1)) + Values(KVd.Key)(z - 1)) Next - For Each EmKV In EmComponents - NewMapValues(EmKV.Key).Add((tMid - fTime(z - 1)) * (EmKV.Value.RawVals(z) - EmKV.Value.RawVals(z - 1)) / (fTime(z) - fTime(z - 1)) + EmKV.Value.RawVals(z - 1)) - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((tMid - fTime(z - 1)) * (ExsKVsub.Value(z) - ExsKVsub.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + ExsKVsub.Value(z - 1)) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents NewAuxValues(AuxKV.Key).Add((tMid - fTime(z - 1)) * (AuxKV.Value(z) - AuxKV.Value(z - 1)) / (fTime(z) - fTime(z - 1)) + AuxKV.Value(z - 1)) @@ -1117,18 +730,6 @@ lb10: NewValues(KVd.Key).Add((tMid - fTime(z - 2)) * (Values(KVd.Key)(z - 1) - Values(KVd.Key)(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + Values(KVd.Key)(z - 2)) Next - For Each EmKV In EmComponents - NewMapValues(EmKV.Key).Add((tMid - fTime(z - 2)) * (EmKV.Value.RawVals(z - 1) - EmKV.Value.RawVals(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + EmKV.Value.RawVals(z - 2)) - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add((tMid - fTime(z - 2)) * (ExsKVsub.Value(z - 1) - ExsKVsub.Value(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + ExsKVsub.Value(z - 2)) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents NewAuxValues(AuxKV.Key).Add((tMid - fTime(z - 2)) * (AuxKV.Value(z - 1) - AuxKV.Value(z - 2)) / (fTime(z - 1) - fTime(z - 2)) + AuxKV.Value(z - 2)) @@ -1143,18 +744,6 @@ lb10: NewValues(KVd.Key).Add(Summe(KVd.Key) / Anz) Next - For Each EmKV In EmComponents - NewMapValues(EmKV.Key).Add(MapSumme(EmKV.Key) / Anz) - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - NewExsValues(ExsKV.Key)(ExsKVsub.Key).Add(ExsSumme(ExsKV.Key)(ExsKVsub.Key) / Anz) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents NewAuxValues(AuxKV.Key).Add(AuxSumme(AuxKV.Key) / Anz) @@ -1183,18 +772,6 @@ lb10: If KV.Key <> tDriComp.t Then Summe(KV.Key) = 0 Next - For Each EmKV In EmComponents - MapSumme(EmKV.Key) = 0 - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - ExsSumme(ExsKV.Key)(ExsKVsub.Key) = 0 - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents AuxSumme(AuxKV.Key) = 0 @@ -1213,18 +790,6 @@ lb10: If KV.Key <> tDriComp.t Then Summe(KV.Key) += Values(KV.Key)(z) Next - For Each EmKV In EmComponents - MapSumme(EmKV.Key) += EmKV.Value.RawVals(z) - Next - - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - ExsSumme(ExsKV.Key)(ExsKVsub.Key) += ExsKVsub.Value(z) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents AuxSumme(AuxKV.Key) += AuxKV.Value(z) @@ -1239,23 +804,13 @@ lb10: Values = NewValues tDim = Values(tDriComp.t).Count - 1 - For Each EmKV In EmComponents - EmKV.Value.RawVals.Clear() - For z = 0 To tDim - EmKV.Value.RawVals.Add(NewMapValues(EmKV.Key)(z)) - Next - Next - Return True End Function Public Sub FirstZero() - Dim EmKV As KeyValuePair(Of String, cEmComp) - Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single))) Dim AuxKV As KeyValuePair(Of String, List(Of Single)) Dim ValKV As KeyValuePair(Of tDriComp, List(Of Double)) - Dim ExsKVsub As KeyValuePair(Of Short, List(Of Single)) tDim += 1 @@ -1265,27 +820,12 @@ lb10: If Scycle Then VoglS.Insert(0, VoglS(0)) - If bExsCompDef Then - For Each ExsKV In ExsComponents - For Each ExsKVsub In ExsKV.Value - ExsKVsub.Value.Insert(0, ExsKVsub.Value(0)) - Next - Next - End If - If bAuxDef Then For Each AuxKV In AuxComponents AuxKV.Value.Insert(0, AuxKV.Value(0)) Next End If - If bEmCompDef Then - For Each EmKV In EmComponents - EmKV.Value.RawVals.Insert(0, EmKV.Value.RawVals(0)) - Next - End If - - End Sub Public Property FilePath() As String @@ -1297,18 +837,6 @@ lb10: End Set End Property - Public ReadOnly Property EmCompDef As Boolean - Get - Return bEmCompDef - End Get - End Property - - Public ReadOnly Property CreateMapParDef As Boolean - Get - Return bCreateMapParDef - End Get - End Property - Public ReadOnly Property AuxDef As Boolean Get Return bAuxDef diff --git a/VECTO/Input Files/cENG.vb b/VECTO/Input Files/cENG.vb index ed0e81c05e40972ab770b41c9aaf34b77a68eca2..191d722110b63a8aa878dfd0e7e2fa9c0ac29f8f 100644 --- a/VECTO/Input Files/cENG.vb +++ b/VECTO/Input Files/cENG.vb @@ -7,12 +7,11 @@ Public Class cENG Public ModelName As String Public Displ As Single - Public nleerl As Single + Public Nidle As Single Public I_mot As Single Public fFLD As List(Of cSubPath) Private fMAP As cSubPath - Private fWHTC As cSubPath Public FLDgears As List(Of String) Private MyPath As String @@ -21,13 +20,20 @@ Public Class cENG Public NoJSON As Boolean Private MyFileList As List(Of String) + Public WHTCurban As Single + Public WHTCrural As Single + Public WHTCmw As Single + + Public Nrated As Single + Public Nlo As Single + Public Npref As Single + Public N95h As Single + Public Nhi As Single Public Function CreateFileList() As Boolean Dim sb As cSubPath - If Not Me.ReadFile Then Return False - MyFileList = New List(Of String) For Each sb In Me.fFLD @@ -46,69 +52,27 @@ Public Class cENG MyPath = "" sFilePath = "" fMAP = New cSubPath - fWHTC = New cSubPath SetDefault() End Sub Private Sub SetDefault() ModelName = "Undefined" Displ = 0 - nleerl = 0 + Nidle = 0 I_mot = 0 + Nrated = 0 fFLD = New List(Of cSubPath) FLDgears = New List(Of String) fMAP.Clear() - fWHTC.Clear() - End Sub - - Private Function SaveFileOld() As Boolean - Dim file As cFile_V3 - Dim i As Integer - - If sFilePath = "" Then Return False - - file = New cFile_V3 - - If Not file.OpenWrite(sFilePath) Then Return False - - file.WriteLine("c VECTO Engine Input File") - file.WriteLine("c VECTO " & VECTOvers) - file.WriteLine("c " & Now.ToString) - - If Trim(ModelName) = "" Then ModelName = "Undefined" - - file.WriteLine("c Make & Model") - file.WriteLine(ModelName.Replace(",", "\c\")) - file.WriteLine("c NOT USED") - file.WriteLine("0") - file.WriteLine("c Displacement [ccm]") - file.WriteLine(Displ.ToString) - file.WriteLine("c NOT USED") - file.WriteLine("0") - file.WriteLine("c Idling speed [rpm]") - file.WriteLine(nleerl.ToString) - file.WriteLine("c Inertia [kgm2]") - file.WriteLine(I_mot.ToString) - file.WriteLine("c Full load curves") - For i = 0 To fFLD.Count - 1 - file.WriteLine(fFLD(i).PathOrDummy, FLDgears(i)) - Next - - file.WriteLine(sKey.Break) - - file.WriteLine("c Fuel map") - file.WriteLine(fMAP.PathOrDummy) - file.WriteLine("c WHTC test results") - file.WriteLine(fWHTC.PathOrDummy) + WHTCurban = 0 + WHTCrural = 0 + WHTCmw = 0 - file.Close() - - Return True - End Function + End Sub Private Function ReadFileOld() As Boolean Dim MsgSrc As String @@ -140,7 +104,7 @@ Public Class cENG file.ReadLine() 'NOT USED (Pnenn) Displ = CSng(file.ReadLine(0)) file.ReadLine() 'NOT USED (nnenn) - nleerl = CSng(file.ReadLine(0)) + Nidle = CSng(file.ReadLine(0)) I_mot = CSng(file.ReadLine(0)) @@ -168,7 +132,6 @@ Public Class cENG Loop fMAP.Init(MyPath, file.ReadLine(0)) - fWHTC.Init(MyPath, file.ReadLine(0)) Catch ex As Exception WorkerMsg(tMsgID.Err, ex.Message, MsgSrc) file.Close() @@ -188,8 +151,6 @@ Public Class cENG Dim dic0 As Dictionary(Of String, Object) Dim ls As List(Of Object) - If Not Cfg.JSON Then Return SaveFileOld() - 'Header dic = New Dictionary(Of String, Object) dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")") @@ -204,7 +165,7 @@ Public Class cENG dic.Add("ModelName", ModelName) dic.Add("Displacement", Displ) - dic.Add("IdlingSpeed", nleerl) + dic.Add("IdlingSpeed", Nidle) dic.Add("Inertia", I_mot) ls = New List(Of Object) @@ -217,10 +178,15 @@ Public Class cENG dic.Add("FullLoadCurves", ls) dic.Add("FuelMap", fMAP.PathOrDummy) - dic.Add("WHTCresults", fWHTC.PathOrDummy) + + dic.Add("WHTC-Urban", WHTCurban) + dic.Add("WHTC-Rural", WHTCrural) + dic.Add("WHTC-Motorway", WHTCmw) + JSON.Content.Add("Body", dic) - + + Return JSON.WriteFile(sFilePath) @@ -239,16 +205,9 @@ Public Class cENG SetDefault() - If Cfg.JSON Then - If Not JSON.ReadFile(sFilePath) Then - NoJSON = True - Try - Return ReadFileOld() - Catch ex As Exception - Return False - End Try - End If - Else + + If Not JSON.ReadFile(sFilePath) Then + NoJSON = True Try Return ReadFileOld() Catch ex As Exception @@ -263,7 +222,7 @@ Public Class cENG ModelName = JSON.Content("Body")("ModelName") Displ = JSON.Content("Body")("Displacement") - nleerl = JSON.Content("Body")("IdlingSpeed") + Nidle = JSON.Content("Body")("IdlingSpeed") I_mot = JSON.Content("Body")("Inertia") i = -1 @@ -275,7 +234,12 @@ Public Class cENG Next fMAP.Init(MyPath, JSON.Content("Body")("FuelMap")) - fWHTC.Init(MyPath, JSON.Content("Body")("WHTCresults")) + + If Not JSON.Content("Body")("WHTC-Urban") Is Nothing Then + WHTCurban = CSng(JSON.Content("Body")("WHTC-Urban")) + WHTCrural = CSng(JSON.Content("Body")("WHTC-Rural")) + WHTCmw = CSng(JSON.Content("Body")("WHTC-Motorway")) + End If Catch ex As Exception WorkerMsg(tMsgID.Err, "Failed to read VECTO file! " & ex.Message, MsgSrc) @@ -286,7 +250,127 @@ Public Class cENG End Function + Public Function Init() As Boolean + Dim Pmax As Single + Dim fl As cFLD + Dim fldgear As Dictionary(Of Integer, String) + Dim fldgFromTo As String() + Dim str As String + Dim i As Integer + Dim j As Integer + Dim nr As Single + Dim MsgSrc As String + MsgSrc = "ENG/Init" + + 'Read FLDs and MAP + FLD = New List(Of cFLD) + + If FLDgears.Count = 0 Then + WorkerMsg(tMsgID.Err, "No .vfld file defined in Engine file!", MsgSrc, "<GUI>" & sFilePath) + Return False + End If + + fldgear = New Dictionary(Of Integer, String) + + Try + j = -1 + For Each str In FLDgears + + j += 1 + If str.Contains("-") Then + fldgFromTo = str.Replace(" ", "").Split("-") + Else + fldgFromTo = New String() {str, str} + End If + + For i = CInt(fldgFromTo(0)) To CInt(fldgFromTo(1)) + + If i > GBX.GearCount Then Exit For + + If i < 0 Or i > 99 Then + WorkerMsg(tMsgID.Err, "Cannot assign .vfld file to gear " & i & "!", MsgSrc, "<GUI>" & sFilePath) + Return False + End If + + If fldgear.ContainsKey(i) Then + WorkerMsg(tMsgID.Err, "Multiple .vfld files are assigned to gear " & i & "!", MsgSrc, "<GUI>" & sFilePath) + Return False + End If + + fldgear.Add(i, PathFLD(j)) + + Next + + Next + Catch ex As Exception + WorkerMsg(tMsgID.Err, "Failed to process engine file '" & sFilePath & "'!", MsgSrc) + Return False + End Try + + + For i = 0 To GBX.GearCount + + If Not fldgear.ContainsKey(i) Then + WorkerMsg(tMsgID.Err, "No .vfld file assigned to gear " & i & "!", MsgSrc, "<GUI>" & sFilePath) + Return False + End If + + FLD.Add(New cFLD) + FLD(i).FilePath = fldgear(i) + + Try + If Not FLD(i).ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & fldgear(i) & ")", MsgSrc, fldgear(i)) + Return False + End Try + + Next + + 'Kennfeld read + MAP = New cMAP + MAP.FilePath = PathMAP + + Try + If Not MAP.ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & PathMAP & ")", MsgSrc, PathMAP) + Return False + End Try + + 'Normalize + MAP.Norm() + + Nrated = 0 + For Each fl In FLD + nr = fl.fnUrated + If Nrated < nr Then Nrated = nr + Next + + 'Special rpms for Shift Model + fl = FLD(FLD.Count - 1) + + Pmax = fl.Pfull(fl.fnUrated) + + Nlo = fl.fnUofPfull(0.55 * Pmax, True) + + N95h = fl.fnUofPfull(0.95 * Pmax, False) + + Npref = fl.Npref + + Nhi = fl.fnUofPfull(0.7 * Pmax, False) + + + Return True + + End Function + + Public Sub DeclInit() + + I_mot = Declaration.GetEngInertia(Displ) + + End Sub Public ReadOnly Property FileList As List(Of String) Get @@ -330,18 +414,4 @@ Public Class cENG End Set End Property - Public Property PathWHTC(Optional ByVal Original As Boolean = False) As String - Get - If Original Then - Return fWHTC.OriginalPath - Else - Return fWHTC.FullPath - End If - End Get - Set(ByVal value As String) - fWHTC.Init(MyPath, value) - End Set - End Property - - End Class diff --git a/VECTO/Input Files/cFLD.vb b/VECTO/Input Files/cFLD.vb index 10abcfbc222c1ea50211aaaf35bb2b521f8236d1..d24b8c4673f28a4976b8ec899c664ab902ece56d 100644 --- a/VECTO/Input Files/cFLD.vb +++ b/VECTO/Input Files/cFLD.vb @@ -7,8 +7,8 @@ Public Class cFLD Private sFilePath As String - Private LPfull As List(Of Single) - Private LPdrag As List(Of Single) + Private LTq As List(Of Single) + Private LTqDrag As List(Of Single) Private LnU As List(Of Single) Private LPT1 As List(Of Single) @@ -16,9 +16,11 @@ Public Class cFLD Private iDim As Integer + + Private Sub ResetMe() - LPfull = Nothing - LPdrag = Nothing + LTq = Nothing + LTqDrag = Nothing LnU = Nothing LPT1 = Nothing iDim = -1 @@ -56,8 +58,8 @@ Public Class cFLD End If 'Initialize Lists - LPfull = New System.Collections.Generic.List(Of Single) - LPdrag = New System.Collections.Generic.List(Of Single) + LTq = New System.Collections.Generic.List(Of Single) + LTqDrag = New System.Collections.Generic.List(Of Single) LnU = New System.Collections.Generic.List(Of Single) LPT1 = New System.Collections.Generic.List(Of Single) @@ -78,8 +80,8 @@ Public Class cFLD nU = CDbl(line(0)) LnU.Add(nU) - LPfull.Add(nMtoPe(nU, CDbl(line(1)))) - LPdrag.Add(nMtoPe(nU, CDbl(line(2)))) + LTq.Add(CDbl(line(1))) + LTqDrag.Add(CDbl(line(2))) 'If PT1 not given, use default value (see above) If sPT1 > -1 Then @@ -145,7 +147,7 @@ lbEr: lbInt: 'Interpolation - Return (nU - LnU(i - 1)) * (LPdrag(i) - LPdrag(i - 1)) / (LnU(i) - LnU(i - 1)) + LPdrag(i - 1) + Return nMtoPe(nU, (nU - LnU(i - 1)) * (LTqDrag(i) - LTqDrag(i - 1)) / (LnU(i) - LnU(i - 1)) + LTqDrag(i - 1)) End Function @@ -173,7 +175,7 @@ lbInt: lbInt: 'Interpolation - PfullStat = (nU - LnU(i - 1)) * (LPfull(i) - LPfull(i - 1)) / (LnU(i) - LnU(i - 1)) + LPfull(i - 1) + PfullStat = nMtoPe(nU, (nU - LnU(i - 1)) * (LTq(i) - LTq(i - 1)) / (LnU(i) - LnU(i - 1)) + LTq(i - 1)) PT1 = (nU - LnU(i - 1)) * (LPT1(i) - LPT1(i - 1)) / (LnU(i) - LnU(i - 1)) + LPT1(i - 1) 'Dynamic Full-load @@ -203,24 +205,221 @@ lbInt: lbInt: 'Interpolation - Return (nU - LnU(i - 1)) * (LPfull(i) - LPfull(i - 1)) / (LnU(i) - LnU(i - 1)) + LPfull(i - 1) + Return nMtoPe(nU, (nU - LnU(i - 1)) * (LTq(i) - LTq(i - 1)) / (LnU(i) - LnU(i - 1)) + LTq(i - 1)) End Function - Public Function nRated() As Single - Dim i As Int16 + Public Function Tq(ByVal nU As Single) As Single + Dim i As Int32 + + 'Extrapolation for x < x(1) + If LnU(0) >= nU Then + If LnU(0) > nU Then MODdata.ModErrors.FLDextrapol = "n= " & nU & " [1/min]" + i = 1 + GoTo lbInt + End If + + i = 0 + Do While LnU(i) < nU And i < iDim + i += 1 + Loop + + 'Extrapolation for x > x(imax) + If LnU(i) < nU Then + MODdata.ModErrors.FLDextrapol = "n= " & nU & " [1/min]" + End If + +lbInt: + 'Interpolation + Return (nU - LnU(i - 1)) * (LTq(i) - LTq(i - 1)) / (LnU(i) - LnU(i - 1)) + LTq(i - 1) + End Function + + Public Function Npref() As Single + Dim i As Integer + Dim Amax As Single + Dim N95h As Single + Dim n As Single + Dim T0 As Single + Dim dn As Single + Dim A As Single + Dim k As Single + + + dn = 0.001 + + N95h = fnUofPfull(0.95 * Pfull(fnUrated), False) + + Amax = Area(ENG.Nidle, N95h) + + For i = 0 To iDim - 1 + + If Area(ENG.Nidle, LnU(i + 1)) > 0.51 * Amax Then + + n = LnU(i) + T0 = LTq(i) + A = Area(ENG.Nidle, n) + + k = (LTq(i + 1) - LTq(i)) / (LnU(i + 1) - LnU(i)) + + Do While A < 0.51 * Amax + n += dn + A += dn * (2 * T0 + k * dn) / 2 + Loop + + Exit For + + End If + + Next + + Return n + + End Function + + + Private Function Area(ByVal nFrom As Single, ByVal nTo As Single) As Single + Dim A As Single + Dim i As Integer + + + A = 0 + For i = 1 To iDim + + If LnU(i - 1) >= nTo Then Exit For + + If LnU(i - 1) >= nFrom Then + + + If LnU(i) <= nTo Then + + 'Add full segment + A += (LnU(i) - LnU(i - 1)) * (LTq(i) + LTq(i - 1)) / 2 + + Else + + 'Add segment till nTo + A += (nTo - LnU(i - 1)) * (Tq(nTo) + LTq(i - 1)) / 2 + + End If + + Else + + If LnU(i) > nFrom Then + + 'Add segment starting from nFrom + A += (LnU(i) - nFrom) * (LTq(i) + Tq(nFrom)) / 2 + + End If + + End If + + Next + + Return A + + + End Function + + + Public Function fnUrated() As Single Dim PeMax As Single Dim nU As Single + Dim nUmax As Single + Dim nUrated As Single + Dim dnU As Single + Dim P As Single - PeMax = LPfull(0) + dnU = 1 + PeMax = 0 nU = LnU(0) - For i = 1 To iDim - If LPfull(i) >= PeMax Then - PeMax = LPfull(i) - nU = LnU(i) + nUmax = LnU(iDim) + nUrated = nU + + Do + P = nMtoPe(nU, Tq(nU)) + If P > PeMax Then + PeMax = P + nUrated = nU End If + nU += dnU + Loop Until nU > nUmax + + Return nUrated + + End Function + + + Public Function fnUofPfull(ByVal PeTarget As Single, ByVal FromLeft As Boolean) As Single + Dim Pe As Single + Dim LastPe As Single + Dim nU As Single + Dim nUmin As Single + Dim nUmax As Single + Dim nUtarget As Single + Dim dnU As Single + + dnU = 1 + nUmin = LnU(0) + nUmax = LnU(iDim) + + If FromLeft Then + + nU = nUmin + LastPe = nMtoPe(nU, Tq(nU)) + nUtarget = nU + + Do + Pe = nMtoPe(nU, Tq(nU)) + + If Pe > PeTarget Then + If Math.Abs(LastPe - PeTarget) < Math.Abs(Pe - PeTarget) Then + Return nU - dnU + Else + Return nU + End If + End If + + LastPe = Pe + nU += dnU + Loop Until nU > nUmax + + Else + + nU = nUmax + LastPe = nMtoPe(nU, Tq(nU)) + nUtarget = nU + + Do + Pe = nMtoPe(nU, Tq(nU)) + + If Pe > PeTarget Then + If Math.Abs(LastPe - PeTarget) < Math.Abs(Pe - PeTarget) Then + Return nU + dnU + Else + Return nU + End If + End If + + LastPe = Pe + nU -= dnU + Loop Until nU < nUmin + + End If + + Return nUtarget + + End Function + + + Public Function Tmax() As Single + Dim i As Int16 + Dim Tm As Single + + Tm = LTq(0) + For i = 1 To iDim + If LTq(i) > Tm Then Tm = LTq(i) Next - Return nU + Return Tm End Function @@ -234,4 +433,6 @@ lbInt: End Property + + End Class diff --git a/VECTO/Input Files/cGBX.vb b/VECTO/Input Files/cGBX.vb index d6e56e05bde29f358afb5307367861d5cb18795f..f78b47f263340afb18baac27da96481bd5d69f42 100644 --- a/VECTO/Input Files/cGBX.vb +++ b/VECTO/Input Files/cGBX.vb @@ -20,10 +20,12 @@ Public Class cGBX 'Gear shift polygons Private gs_file As New cSubPath - Private gs_M As New List(Of Single) + Private gs_Mup As New List(Of Single) + Private gs_Mdown As New List(Of Single) Private gs_nUup As New List(Of Single) Private gs_nUdown As New List(Of Single) - Private gs_Dim As Integer + Private gs_Dup As Integer + Private gs_Ddown As Integer Public gs_TorqueResv As Single Public gs_SkipGears As Boolean Public gs_ShiftTime As Integer @@ -62,9 +64,6 @@ Public Class cGBX Public Function CreateFileList() As Boolean Dim i As Integer - If Not Me.ReadFile Then Return False - - MyFileList = New List(Of String) '.vgbs @@ -102,11 +101,13 @@ Public Class cGBX IsTCgear = New List(Of Boolean) iganganz = 0 - gs_M.Clear() + gs_Mup.Clear() + gs_Mdown.Clear() gs_nUdown.Clear() gs_nUup.Clear() gs_file.Clear() - gs_Dim = -1 + gs_Dup = -1 + gs_Ddown = -1 gs_TorqueResv = 0 gs_SkipGears = False gs_ShiftTime = 0 @@ -123,71 +124,6 @@ Public Class cGBX End Sub - Private Function SaveFileOld() As Boolean - Dim file As cFile_V3 - Dim i As Integer - file = New cFile_V3 - - If sFilePath = "" Then Return False - - If Not file.OpenWrite(sFilePath) Then Return False - - file.WriteLine("c VECTO Gearbox Input File") - file.WriteLine("c VECTO " & VECTOvers) - file.WriteLine("c " & Now.ToString) - - If Trim(ModelName) = "" Then ModelName = "Undefined" - - file.WriteLine("c Make & Model") - file.WriteLine(ModelName.Replace(",", "\c\")) - file.WriteLine("c Gearbox rotational inertia [kgm2]") - file.WriteLine(CStr(I_Getriebe)) - file.WriteLine("c Traction Interruption") - file.WriteLine(CStr(TracIntrSi)) - - file.WriteLine("c Gears (0=axle)") - file.WriteLine("c Ratio [-], Loss Map or Efficiency, Is TC gear") - For i = 0 To GetrI.Count - 1 - file.WriteLine("c Gear " & i) - file.WriteLine(CStr(GetrI(i)), GetrMaps(i).PathOrDummy, CStr(Math.Abs(CInt(IsTCgear(i))))) - Next - file.WriteLine(sKey.Break) - - file.WriteLine("c Gear shift polygons file") - file.WriteLine(gs_file.PathOrDummy) - file.WriteLine("c Torque Reserve [%]") - file.WriteLine(CStr(gs_TorqueResv)) - file.WriteLine("c Skip gears") - file.WriteLine(CStr(Math.Abs(CInt(gs_SkipGears)))) - file.WriteLine("c Minimum time between two gear shifts [s]") - file.WriteLine(CStr(gs_ShiftTime)) - file.WriteLine("c Start Torque Reserve [%]") - file.WriteLine(CStr(gs_TorqueResvStart)) - file.WriteLine("c Vehicle speed with clutch fully closed [m/s]") - file.WriteLine(CStr(gs_StartSpeed)) - file.WriteLine("c Acceleration during start [m/s2]") - file.WriteLine(CStr(gs_StartAcc)) - file.WriteLine("c Shift inside polygons") - file.WriteLine(CStr(Math.Abs(CInt(gs_ShiftInside)))) - - file.WriteLine("c Gearbox Type") - file.WriteLine(CStr(CType(gs_Type, Integer))) - - file.WriteLine("c TC On/Off") - file.WriteLine(CStr(Math.Abs(CInt(TCon)))) - file.WriteLine("c TC characteristics file") - file.WriteLine(TC_file.PathOrDummy) - file.WriteLine("c TC reference rpm") - file.WriteLine(CStr(TCrefrpm)) - - - file.Close() - file = Nothing - - Return True - - End Function - Private Function ReadFileOld() As Boolean Dim line() As String Dim file As cFile_V3 @@ -200,7 +136,7 @@ Public Class cGBX SetDefault() If sFilePath = "" Or Not IO.File.Exists(sFilePath) Then - WorkerMsg(tMsgID.Err, "Vehicle file not found (" & sFilePath & ") !", MsgSrc) + WorkerMsg(tMsgID.Err, "Gearbox file not found (" & sFilePath & ") !", MsgSrc) Return False End If @@ -288,8 +224,6 @@ Public Class cGBX Dim dic0 As Dictionary(Of String, Object) Dim ls As List(Of Object) - If Not Cfg.JSON Then Return SaveFileOld() - 'Header dic = New Dictionary(Of String, Object) dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")") @@ -357,16 +291,8 @@ Public Class cGBX SetDefault() - If Cfg.JSON Then - If Not JSON.ReadFile(sFilePath) Then - NoJSON = True - Try - Return ReadFileOld() - Catch ex As Exception - Return False - End Try - End If - Else + If Not JSON.ReadFile(sFilePath) Then + NoJSON = True Try Return ReadFileOld() Catch ex As Exception @@ -430,8 +356,27 @@ Public Class cGBX End Function + Public Function DeclInit() As Boolean + + If gs_Type = tGearbox.Custom Or gs_Type = tGearbox.Automatic Then Return False + + I_Getriebe = cDeclaration.GbInertia + TracIntrSi = Declaration.TracInt(gs_Type) + gs_SkipGears = Declaration.SkipGears(gs_Type) + gs_ShiftTime = Declaration.ShiftTime(gs_Type) + gs_ShiftInside = Declaration.ShiftInside(gs_Type) + gs_TorqueResv = cDeclaration.TqResv + gs_TorqueResvStart = cDeclaration.TqResvStart + gs_StartSpeed = cDeclaration.StartSpeed + gs_StartAcc = cDeclaration.StartAcc + TCon = (gs_Type = tGearbox.Automatic) + SetGenericShiftPoly() + + Return True + + End Function Public Function TCinit() As Boolean Dim file As New cFile_V3 @@ -569,9 +514,9 @@ Public Class cGBX nUdown = GBX.fGSnUdown(Min) 'If nUin > 1.05 * nUup - 0.0001 Then - If nUin > VEH.nNenn - 0.0001 Then + If nUin > ENG.Nrated - 0.0001 Then 'nUin = 1.05 * nUup - nUin = VEH.nNenn + nUin = ENG.Nrated nUstep /= 2 VZ *= -1 Continue Do @@ -594,13 +539,11 @@ Public Class cGBX 'Calc nu again because nUin might have changed nu = nUout / nUin - MODdata.ModErrors.GSextrapol = "" - - If nUin < VEH.nLeerl Then + If nUin < ENG.Nidle Then MODdata.ModErrors.TCextrapol = "" - nUin = VEH.nLeerl + nUin = ENG.Nidle nu = nUout / nUin If nu > TCnu(TCdim) Then @@ -771,17 +714,19 @@ lbInt: End If 'Clear lists - gs_M.Clear() + gs_Mup.Clear() + gs_Mdown.Clear() gs_nUdown.Clear() gs_nUup.Clear() - gs_Dim = -1 + gs_Dup = -1 'Read file Try Do While Not file.EndOfFile line = file.ReadLine - gs_Dim += 1 - gs_M.Add(CSng(line(0))) + gs_Dup += 1 + gs_Mup.Add(CSng(line(0))) + gs_Mdown.Add(CSng(line(0))) gs_nUdown.Add(CSng(line(1))) gs_nUup.Add(CSng(line(2))) Loop @@ -791,38 +736,68 @@ lbInt: End Try 'Check if more then one point - If gs_Dim < 1 Then + If gs_Dup < 1 Then WorkerMsg(tMsgID.Err, "More points in Gear Shift Polygon File needed!", MsgSrc) Return False End If + gs_Ddown = gs_Dup + Return True End Function + Public Sub SetGenericShiftPoly() + + Dim Tmax As Single + + 'Clear lists + gs_Mup.Clear() + gs_Mdown.Clear() + gs_nUdown.Clear() + gs_nUup.Clear() + + Tmax = FLD(FLD.Count - 1).Tmax + + gs_nUdown.Add(ENG.Nidle) + gs_nUdown.Add(ENG.Nidle) + gs_nUdown.Add((ENG.Npref + ENG.Nlo) / 2) + + gs_Mdown.Add(0) + gs_Mdown.Add(Tmax * ENG.Nidle / (ENG.Npref + ENG.Nlo - ENG.Nidle)) + gs_Mdown.Add(Tmax) + + gs_nUup.Add(ENG.Npref) + gs_nUup.Add(ENG.Npref) + gs_nUup.Add(ENG.N95h) + + gs_Mup.Add(0) + gs_Mup.Add(Tmax * (ENG.Npref - ENG.Nidle) / (ENG.N95h - ENG.Nidle)) + gs_Mup.Add(Tmax) + + gs_Ddown = 2 + gs_Dup = 2 + + End Sub + Public Function fGSnUdown(ByVal Md As Single) As Single Dim i As Int32 'Extrapolation for x < x(1) - If gs_M(0) >= Md Then - If gs_M(0) > Md Then MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]" + If gs_Mdown(0) >= Md Then i = 1 GoTo lbInt End If i = 0 - Do While gs_M(i) < Md And i < gs_Dim + Do While gs_Mdown(i) < Md And i < gs_Ddown i += 1 Loop - 'Extrapolation for x > x(imax) - If gs_M(i) < Md Then - MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]" - End If lbInt: 'Interpolation - Return (Md - gs_M(i - 1)) * (gs_nUdown(i) - gs_nUdown(i - 1)) / (gs_M(i) - gs_M(i - 1)) + gs_nUdown(i - 1) + Return (Md - gs_Mdown(i - 1)) * (gs_nUdown(i) - gs_nUdown(i - 1)) / (gs_Mdown(i) - gs_Mdown(i - 1)) + gs_nUdown(i - 1) End Function @@ -830,26 +805,25 @@ lbInt: Dim i As Int32 'Extrapolation for x < x(1) - If gs_M(0) >= Md Then - If gs_M(0) > Md Then MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]" + If gs_Mup(0) >= Md Then i = 1 GoTo lbInt End If i = 0 - Do While gs_M(i) < Md And i < gs_Dim + Do While gs_Mup(i) < Md And i < gs_Dup i += 1 Loop - 'Extrapolation for x > x(imax) - If gs_M(i) < Md Then - MODdata.ModErrors.GSextrapol = "Md= " & Md & " [Nm]" - End If lbInt: 'Interpolation - Return (Md - gs_M(i - 1)) * (gs_nUup(i) - gs_nUup(i - 1)) / (gs_M(i) - gs_M(i - 1)) + gs_nUup(i - 1) + Return (Md - gs_Mup(i - 1)) * (gs_nUup(i) - gs_nUup(i - 1)) / (gs_Mup(i) - gs_Mup(i - 1)) + gs_nUup(i - 1) + + End Function + Public Function GearCount() As Integer + Return GBX.GetrI.Count - 1 End Function Public ReadOnly Property FileList As List(Of String) diff --git a/VECTO/Input Files/cMAP.vb b/VECTO/Input Files/cMAP.vb index 7a708d9df3be000aeb7be46e51421d84b13f7457..776f5f9f6be63825aa221b9ca418b250a188f0fd 100644 --- a/VECTO/Input Files/cMAP.vb +++ b/VECTO/Input Files/cMAP.vb @@ -5,9 +5,7 @@ Public Class cMAP 'Private Const FormatVersion As Integer = 1 'Private FileVersion As Integer - Public EmComponents As Dictionary(Of String, cEmComp) - Public EmDefRef As Dictionary(Of tMapComp, cEmComp) - Private MyEmList As List(Of String) + Public lFC As List(Of Single) Public LPe As List(Of Single) Public LnU As List(Of Single) @@ -21,11 +19,9 @@ Public Class cMAP Private Sub ResetMe() MapIntp = Nothing - EmComponents = Nothing - MyEmList = Nothing + lFC = Nothing LPe = Nothing LnU = Nothing - EmDefRef = Nothing iMapDim = -1 FuelMap = New cDelaunayMap End Sub @@ -33,11 +29,6 @@ Public Class cMAP Public Function ReadFile(Optional ByVal MsgOutput As Boolean = True) As Boolean Dim file As cFile_V3 Dim line As String() - Dim s1 As Integer - Dim s As Integer - 'Dim txt As String - Dim Em0 As cEmComp - Dim EmKV As System.Collections.Generic.KeyValuePair(Of String, cEmComp) Dim nU As Double Dim MsgSrc As String @@ -62,35 +53,10 @@ Public Class cMAP End If 'Initi Lists (before version check so ReadOldFormat works) - MyEmList = New List(Of String) - EmComponents = New System.Collections.Generic.Dictionary(Of String, cEmComp) - EmDefRef = New System.Collections.Generic.Dictionary(Of tMapComp, cEmComp) + lFC = New System.Collections.Generic.List(Of Single) LPe = New System.Collections.Generic.List(Of Single) LnU = New System.Collections.Generic.List(Of Single) - s1 = 2 - - 'Column 3: fuel consumption - s = 2 - Em0 = New cEmComp - Em0.Col = s - Em0.Name = "FC" 'wird bei Default-Komponenten noch geändert - Em0.Unit = "[g/h]" - Em0.IDstring = "<FC>" - Em0.MapCompID = tMapComp.FC - Em0.NormID = tEmNorm.x_h - If EmComponents.ContainsKey(UCase(Em0.Name)) Then - 'Abort if already defined - WorkerMsg(tMsgID.Err, "Component '" & Em0.Name & "' already defined! Col. " & s + 1, MsgSrc) - GoTo lbEr - Else - Em0.Name = fMapCompName(Em0.MapCompID) - EmComponents.Add(Em0.IDstring, Em0) - MyEmList.Add(Em0.IDstring) - EmDefRef.Add(Em0.MapCompID, Em0) - End If - - 'From line 4 (or 6): Values Try Do While Not file.EndOfFile @@ -109,9 +75,16 @@ Public Class cMAP LPe.Add(nMtoPe(nU, CDbl(line(1)))) 'FC - For Each EmKV In EmComponents - EmKV.Value.RawVals.Add(CSng(line(EmKV.Value.Col))) - Next + 'Check sign + If CSng(line(2)) < 0 Then + file.Close() + WorkerMsg(tMsgID.Err, "FC < 0 in map at " & nU & " [1/min], " & line(1) & " [Nm]", MsgSrc) + Return False + End If + + lFC.Add(CSng(line(2))) + + Loop Catch ex As Exception @@ -127,8 +100,6 @@ Public Class cMAP file.Close() file = Nothing - EmKV = Nothing - Em0 = Nothing Return True @@ -137,8 +108,6 @@ Public Class cMAP lbEr: file.Close() file = Nothing - EmKV = Nothing - Em0 = Nothing Return False @@ -146,22 +115,14 @@ lbEr: Public Sub Norm() Dim i As Integer - Dim Em0 As cEmComp - - Dim nleerl As Single - Dim nnenn As Single Dim MsgSrc As String MsgSrc = "MAP/Norm" - nleerl = VEH.nLeerl - nnenn = VEH.nNenn - 'FC Delauney - Em0 = EmDefRef(tMapComp.FC) For i = 0 To iMapDim - FuelMap.AddPoints(LnU(i), LPe(i), Em0.RawVals(i)) + FuelMap.AddPoints(LnU(i), LPe(i), lFC(i)) Next FuelMap.Triangulate() @@ -225,13 +186,6 @@ lbEr: End Set End Property - Public ReadOnly Property EmList As List(Of String) - Get - Return MyEmList - End Get - End Property - - #End Region diff --git a/VECTO/Input Files/cGEN.vb b/VECTO/Input Files/cVECTO.vb similarity index 66% rename from VECTO/Input Files/cGEN.vb rename to VECTO/Input Files/cVECTO.vb index fbbe9181d3ba2d2ef58e97ccc779122508be4a5e..ad73d3d2b305c08f162f66e4385c94d558e8a17f 100644 --- a/VECTO/Input Files/cGEN.vb +++ b/VECTO/Input Files/cVECTO.vb @@ -1,6 +1,6 @@ Imports System.Collections.Generic -Public Class cGEN +Public Class cVECTO Private Const FormatVersion As String = "1.0" Private FileVersion As String @@ -25,9 +25,11 @@ Public Class cGEN Private laDesMin As List(Of Single) Private DesMaxDim As Integer - Public AuxPaths As Dictionary(Of String, cVEH.cAuxEntry) + Public AuxPaths As Dictionary(Of String, cAuxEntry) + Public AuxRefs As Dictionary(Of String, cAux) 'Alle Nebenverbraucher die in der Veh-Datei UND im Zyklus definiert sind Public AuxDef As Boolean 'True wenn ein oder mehrere Nebenverbraucher definiert sind + Public CycleFiles As List(Of cSubPath) Public EngOnly As Boolean @@ -45,16 +47,20 @@ Public Class cGEN Private MyFileList As List(Of String) + + Public Class cAuxEntry + Public Type As String + Public Path As cSubPath + Public Sub New() + Path = New cSubPath + End Sub + End Class + Public Function CreateFileList() As Boolean - Dim Aux0 As cVEH.cAuxEntry + Dim Aux0 As cAuxEntry Dim sb As cSubPath - Dim VEH0 As cVEH - Dim ENG0 As cENG - Dim GBX0 As cGBX Dim str As String - If Not Me.ReadFile Then Return False - MyFileList = New List(Of String) '.vecto @@ -64,10 +70,8 @@ Public Class cGEN If Not Me.EngOnly Then MyFileList.Add(Me.PathVEH) - VEH0 = New cVEH - VEH0.FilePath = Me.PathVEH - If Not VEH0.CreateFileList Then Return False - For Each str In VEH0.FileList + If Not VEH.CreateFileList Then Return False + For Each str In VEH.FileList MyFileList.Add(str) Next End If @@ -75,10 +79,8 @@ Public Class cGEN 'Eng MyFileList.Add(Me.PathENG) - ENG0 = New cENG - ENG0.FilePath = Me.PathENG - If Not ENG0.CreateFileList Then Return False - For Each str In ENG0.FileList + If Not ENG.CreateFileList Then Return False + For Each str In ENG.FileList MyFileList.Add(str) Next @@ -87,10 +89,8 @@ Public Class cGEN 'Gbx MyFileList.Add(Me.PathGBX) - GBX0 = New cGBX - GBX0.FilePath = Me.PathGBX - If Not GBX0.CreateFileList Then Return False - For Each str In GBX0.FileList + If Not GBX.CreateFileList Then Return False + For Each str In GBX.FileList MyFileList.Add(str) Next @@ -131,7 +131,8 @@ Public Class cGEN laDesMax = New List(Of Single) laDesMin = New List(Of Single) - AuxPaths = New Dictionary(Of String, cVEH.cAuxEntry) + AuxPaths = New Dictionary(Of String, cAuxEntry) + AuxRefs = New Dictionary(Of String, cAux) AuxDef = False CycleFiles = New List(Of cSubPath) @@ -142,7 +143,7 @@ Public Class cGEN Dim file As cFile_V3 Dim line As String() 'Dim txt As String - Dim AuxEntry As cVEH.cAuxEntry + Dim AuxEntry As cAuxEntry Dim AuxID As String Dim MsgSrc As String Dim SubPath As cSubPath @@ -314,7 +315,7 @@ Public Class cGEN Return False End If - AuxEntry = New cVEH.cAuxEntry + AuxEntry = New cAuxEntry AuxEntry.Type = line(1) AuxEntry.Path.Init(MyPath, line(2)) @@ -390,243 +391,8 @@ lbEr: End Function - Private Function SaveFileOld() As Boolean - Dim fGEN As New cFile_V3 - Dim AuxEntryKV As KeyValuePair(Of String, cVEH.cAuxEntry) - 'Dim s As String - Dim sb As cSubPath - - If Not fGEN.OpenWrite(sFilePath) Then Return False - - 'fGEN.WriteLine("V" & FormatVersion) - - fGEN.WriteLine("c VECTO Input File") - fGEN.WriteLine("c VECTO " & VECTOvers) - fGEN.WriteLine("c " & Now.ToString) - - 'fGEN.WriteLine("c Heavy Duty (0) or Passenger Car (1)") - 'fGEN.WriteLine(Math.Abs(CInt(boPKWja))) - - 'fGEN.WriteLine("c Transient emission correction (1/0)") - 'fGEN.WriteLine(Math.Abs(CInt(bodynkorja))) - - 'fGEN.WriteLine("c Emission Class (EURO ..)") - 'fGEN.WriteLine(ineklasse) - - 'fGEN.WriteLine("c Gear Shift Mode: NEDC (0), FTP (1), Model - MT (2)") - 'fGEN.WriteLine(inizykwael) - - 'fGEN.WriteLine("c Calculation Mode, EngAnalysis, CreateMap") - 'Select Case VehMode - ' Case tVehMode.StandardMode - ' s = "0" - ' Case tVehMode.EngineOnly - ' s = "1" - ' Case tVehMode.HEV - ' s = "2" - ' Case Else 'tVehMode.EV - ' s = "3" - 'End Select - 's &= "," & Math.Abs(CInt(EngAnalysis)) - 's &= "," & Math.Abs(CInt(CreateMap)) - 'fGEN.WriteLine(s) - - 'Map creation ------------------------------------------------ ------ - 'fGEN.WriteLine("c Settings for Emission Map Creation Mode:") - 'fGEN.WriteLine("c Increment Pe, n:") - 'fGEN.WriteLine(inPschrit & "," & innschrit) - - 'fGEN.WriteLine("c CutFull,CutDrag,InsertDrag,DragIntp:") - 'fGEN.WriteLine(Math.Abs(CInt(bKFcutFull)) & "," & Math.Abs(CInt(bKFcutDrag)) & "," & Math.Abs(CInt(bKFinsertDrag)) & "," & Math.Abs(CInt(bKFDragIntp))) - - 'fGEN.WriteLine("c Include Gear Shifts (1/0, Standard = 1)") - 'fGEN.WriteLine(Math.Abs(CInt(boMapSchaltja))) - - 'fGEN.WriteLine("c Averageing Period for Modal Values") - 'fGEN.WriteLine(iniMsek) - - 'fGEN.WriteLine("c ICE Type (Otto = 1, Diesel = 0") - 'fGEN.WriteLine(Math.Abs(CInt(boottoJa))) - - 'Kalt Start--------------------------------------------------------------- - 'fGEN.WriteLine("c Cold Start (1/0)") - 'fGEN.WriteLine(Math.Abs(CInt(bokaltst1))) - - 'fGEN.WriteLine("c t cat start [°C]") - 'fGEN.WriteLine(sitkat1) - - 'fGEN.WriteLine("c t coolant start [°C]") - 'fGEN.WriteLine(sitkw1) - - 'fGEN.WriteLine("c time of start [h.sec]") - 'fGEN.WriteLine(sihsstart) - - 'Dateien------------------------------------------------------------------ - fGEN.WriteLine("c Vehicle (.vveh):") - fGEN.WriteLine(stPathVEH.PathOrDummy) - - fGEN.WriteLine("c Engine (.veng):") - fGEN.WriteLine(stPathENG.PathOrDummy) - - fGEN.WriteLine("c Gearbox (*.vgbx):") - fGEN.WriteLine(stPathGBX.PathOrDummy) - - fGEN.WriteLine("c Driving Cycles (.vdri):") - For Each sb In CycleFiles - fGEN.WriteLine(sb.PathOrDummy) - Next - fGEN.WriteLine(sKey.Break) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing transient correction parameters (*.trs):") - 'fGEN.WriteLine(stdynspez.PathOrDummy) - - 'Kalt Start - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the catalyst map (*.maa):") - 'fGEN.WriteLine(stkatmap.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the map of cooling water (*.mac):") - 'fGEN.WriteLine(stkwmap.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the catalyst warm-up (*.wua):") - 'fGEN.WriteLine(stkatkurv.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the engine coolant warm-up (*.wuc):") - 'fGEN.WriteLine(stkwkurv.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the cooling parameters for catalyst and engine coolant (*.cdw):") - 'fGEN.WriteLine(stcooldown.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the ambient parameters (*.atc)") - 'fGEN.WriteLine(sttumgebung.PathOrDummy) - - 'HEV - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing battery specifications for HEV (*.bat)") - 'fGEN.WriteLine(stBatfile.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing specifications of the E-motor for HEV (*emo)") - 'fGEN.WriteLine(stEmospez.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the pattern of E-motor on/off for HEV (*ean)") - 'fGEN.WriteLine(stEANfile.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the efficiency of additional gearbox for HEV (*get)") - 'fGEN.WriteLine(stGetspez.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the control efficiency-File for HEV (*.ste)") - 'fGEN.WriteLine(stSTEnam.PathOrDummy) - - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c File containing the efficiency-maps for HEV-strategy control (*.ekf)") - 'fGEN.WriteLine(stEKFnam.PathOrDummy) - - 'EXS - 'fGEN.WriteLine("c ") - 'fGEN.WriteLine("c Exhaust System Simulation (1/0)") - 'fGEN.WriteLine(Math.Abs(CInt(boEXSja))) - - 'fGEN.WriteLine("c Exhaust System Simulation Configuration File") - 'fGEN.WriteLine(stPathExs.PathOrDummy) - - 'SOC-Start Iteration - 'fGEN.WriteLine("c SOC Start Iteration (1/0) - HEV only") - 'fGEN.WriteLine(Math.Abs(CInt(boSOCnJa))) - - ''SOC-Start - 'fGEN.WriteLine("c SOC Start - (H)EV only") - 'fGEN.WriteLine(siSOCstart) - - ''Getriebe-Verluste-Modell - 'fGEN.WriteLine("c Transmission Loss Model") - 'fGEN.WriteLine(CStr(GetrMod)) - - 'Coolantsim - 'fGEN.WriteLine("c Coolant System Simulation (1/0)") - 'fGEN.WriteLine(Math.Abs(CInt(CoolantsimJa))) - 'fGEN.WriteLine("c Coolant System Simulation Configuration File") - 'fGEN.WriteLine(stCoolantSimPath.PathOrDummy) - - fGEN.WriteLine("c Auxiliaries (.vaux)") - For Each AuxEntryKV In AuxPaths - fGEN.WriteLine(Trim(UCase(AuxEntryKV.Key)) & "," & AuxEntryKV.Value.Type & "," & AuxEntryKV.Value.Path.PathOrDummy) - Next - fGEN.WriteLine(sKey.Break) - - 'a_DesMax - fGEN.WriteLine("c Speed Dependent Desired Acceleration and Braking (.vacc)") - 'fGEN.WriteLine(Math.Abs(CInt(DesMaxJa))) - fGEN.WriteLine(stDesMaxFile.PathOrDummy) - - 'fGEN.WriteLine("c Gear shift behaviour:") - 'fGEN.WriteLine("c Gearshift model (Version fast driver)") - 'fGEN.WriteLine("c shift up at ratio rpm/rated rpm in actual gear greater than") - 'fGEN.WriteLine(CStr(hinauf)) - 'fGEN.WriteLine("c shift down when rpm/rated rpm in lower gear is higher than") - 'fGEN.WriteLine(CStr(hinunter)) - 'fGEN.WriteLine("c Gearshift model (Version economic driver)") - 'fGEN.WriteLine("c shift up at ratio rpm/rated rpm in higher gear greater than") - 'fGEN.WriteLine(CStr(lhinauf)) - 'fGEN.WriteLine("c Shift down when ratio rpm/rated rpm in actual gear is lower than") - 'fGEN.WriteLine(CStr(lhinunter)) - 'fGEN.WriteLine("c Share of version economic driver (0 to 1)") - 'fGEN.WriteLine(CStr(pspar)) - 'fGEN.WriteLine("c Share of version mixed model (0 to 1)") - 'fGEN.WriteLine(CStr(pmodell)) - - fGEN.WriteLine("c Engine Only Mode (1/0)") - fGEN.WriteLine(CStr(Math.Abs(CInt(EngOnly)))) - - 'Start/Stop - fGEN.WriteLine("c ICE Auto-Start/Stop (1/0)") - fGEN.WriteLine(Math.Abs(CInt(boStartStop))) - fGEN.WriteLine("c Start/Stop Max Speed [km/h]") - fGEN.WriteLine(siStStV) - fGEN.WriteLine("c Start/Stop Min ICE-On Time [s]") - fGEN.WriteLine(siStStT) - - - fGEN.WriteLine("c Look Ahead reference deceleration [m/s²]") - fGEN.WriteLine(CStr(a_lookahead)) - fGEN.WriteLine("c Minimum target speed for Overspeed/Eco-Roll [km/h]") - fGEN.WriteLine(CStr(vMin)) - fGEN.WriteLine("c Look-Ahead Coasting 1/0") - fGEN.WriteLine(CStr(Math.Abs(CInt(LookAheadOn)))) - fGEN.WriteLine("c Overspeed 1/0") - fGEN.WriteLine(CStr(Math.Abs(CInt(OverSpeedOn)))) - fGEN.WriteLine("c Eco-Roll 1/0") - fGEN.WriteLine(CStr(Math.Abs(CInt(EcoRollOn)))) - fGEN.WriteLine("c Allowed OverSpeed [km/h]") - fGEN.WriteLine(CStr(OverSpeed)) - fGEN.WriteLine("c Allowed UnderSpeed [km/h]") - fGEN.WriteLine(CStr(UnderSpeed)) - fGEN.WriteLine("c Minimum target speed for Look-Ahead with Coasting [km/h]") - fGEN.WriteLine(CStr(vMinLA)) - - - fGEN.WriteLine("c Start/Stop activation delay time [s]") - fGEN.WriteLine(StStDelay) - - - fGEN.Close() - fGEN = Nothing - - Return True - - End Function - Public Function SaveFile() As Boolean - Dim AuxEntryKV As KeyValuePair(Of String, cVEH.cAuxEntry) + Dim AuxEntryKV As KeyValuePair(Of String, cAuxEntry) 'Dim s As String Dim sb As cSubPath Dim JSON As New cJSON @@ -634,8 +400,6 @@ lbEr: Dim dic As Dictionary(Of String, Object) Dim dic0 As Dictionary(Of String, Object) - If Not Cfg.JSON Then Return SaveFileOld() - 'Header dic = New Dictionary(Of String, Object) dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")") @@ -717,7 +481,7 @@ lbEr: End Function Public Function ReadFile() As Boolean - Dim AuxEntry As cVEH.cAuxEntry + Dim AuxEntry As cAuxEntry Dim AuxID As String Dim MsgSrc As String Dim SubPath As cSubPath @@ -732,16 +496,8 @@ lbEr: SetDefault() - If Cfg.JSON Then - If Not JSON.ReadFile(sFilePath) Then - NoJSON = True - Try - Return ReadFileOld() - Catch ex As Exception - Return False - End Try - End If - Else + If Not JSON.ReadFile(sFilePath) Then + NoJSON = True Try Return ReadFileOld() Catch ex As Exception @@ -777,7 +533,7 @@ lbEr: Return False End If - AuxEntry = New cVEH.cAuxEntry + AuxEntry = New cAuxEntry AuxEntry.Type = dic("Type") AuxEntry.Path.Init(MyPath, dic("Path")) @@ -873,6 +629,7 @@ lbEr: DesMaxDim = -1 AuxPaths.Clear() + AuxRefs.Clear() AuxDef = False EngOnly = False @@ -886,6 +643,42 @@ lbEr: UnderSpeed = 0 vMinLA = 0 + End Sub + + Public Sub DeclInit() + Dim cl As List(Of String) + Dim s As String + Dim SubPath As cSubPath + + EngOnly = False + + CycleFiles.Clear() + + cl = Declaration.SegRef.GetCycles + + For Each s In cl + SubPath = New cSubPath + SubPath.Init(MyPath, s) + CycleFiles.Add(SubPath) + Next + + stDesMaxFile.Init(MyPath, Declaration.SegRef.VACCfile) + + siStStV = cDeclaration.SSspeed + siStStT = cDeclaration.SStime + StStDelay = cDeclaration.SSdelay + + If Not EcoRollOn Then OverSpeedOn = True + + LookAheadOn = True + a_lookahead = cDeclaration.LACa + vMinLA = cDeclaration.LACvmin + + 'TODO: Aux + AuxDef = False 'TEST ONLY!!! + + + End Sub 'This Sub reads those Input-files that do not have their own class, etc. @@ -936,12 +729,144 @@ lbEr: End If + Return True + + End Function +#Region "Aux" + + Public Function AuxInit() As Boolean + + Dim Aux0 As cAux + Dim AuxPathKV As KeyValuePair(Of String, cAuxEntry) + Dim DRIauxcheck As New Dictionary(Of String, Boolean) + Dim AuxID As String + + Dim MsgSrc As String + + MsgSrc = "VEH/AuxInit" + + AuxRefs = New Dictionary(Of String, cAux) + + If DRI.AuxDef Xor AuxDef Then + + If AuxDef Then + WorkerMsg(tMsgID.Err, "No auxiliary input defined in driving cycle!", MsgSrc) + Return False + Else + WorkerMsg(tMsgID.Warn, "No auxiliary defined in vehicle file! Psupply input will be ignored!", MsgSrc) + Return True + End If + + End If + + If Not (DRI.AuxDef Or AuxDef) Then Return True + + + For Each AuxID In DRI.AuxComponents.Keys + DRIauxcheck.Add(AuxID, False) + Next + + For Each AuxPathKV In AuxPaths + + MsgSrc = "VEH/AuxInit/" & AuxPathKV.Key + + If Not DRI.AuxComponents.ContainsKey(AuxPathKV.Key) Then + WorkerMsg(tMsgID.Err, "No Psupply input defined in driving cycle for auxiliary '" & AuxPathKV.Key & "'!", MsgSrc) + Return False + End If + + Aux0 = New cAux + Aux0.Filepath = AuxPathKV.Value.Path.FullPath + + If Not Aux0.Readfile Then + 'Notificationin ReadFile() + Return False + End If + + AuxRefs.Add(AuxPathKV.Key, Aux0) + + DRIauxcheck(AuxPathKV.Key) = True + + Next + + MsgSrc = "VEH/AuxInit" + + For Each AuxID In DRI.AuxComponents.Keys + If Not DRIauxcheck(AuxID) Then WorkerMsg(tMsgID.Warn, "Auxiliary '" & AuxID & "' not found! Psupply input will be ignored!", MsgSrc) + Next Return True End Function + Public Function Paux(ByVal AuxID As String, ByVal t As Integer, ByVal nU As Single) As Single + Dim Psupply As Single + Dim Px As Single + Dim Aux0 As cAux + + Dim MsgSrc As String + + MsgSrc = "VEH/Paux" + + If AuxDef Then + + Aux0 = AuxRefs(AuxID) + + Psupply = DRI.AuxComponents(AuxID)(t) + + If Psupply < 0 Then GoTo lbAuxError + + Px = Aux0.Paux(nU, Psupply) + + If Px < 0 Then GoTo lbAuxError + + Return Px + + Else + + Return 0 + + End If + + +lbAuxError: + MODdata.ModErrors.AuxNegative = AuxID + Return 0 + + + End Function + + Public Function PauxSum(ByVal t As Integer, ByVal nU As Single) As Single + Dim sum As Single + Dim AuxID As String + + Dim MsgSrc As String + + MsgSrc = "VEH/Paux" + + If AuxDef Then + + sum = 0 + + For Each AuxID In AuxRefs.Keys + + sum += Paux(AuxID, t, nU) + + Next + + Return sum + + Else + + Return 0 + + End If + + End Function + +#End Region + #Region "Properties" diff --git a/VECTO/Input Files/cVEH.vb b/VECTO/Input Files/cVEH.vb index 444e860de5e4c74dad2423f022a7b2e757fa03a6..b4b78209cb6fa7c2325ad8fc8e813c93fdbeb5b6 100644 --- a/VECTO/Input Files/cVEH.vb +++ b/VECTO/Input Files/cVEH.vb @@ -2,24 +2,30 @@ Public Class cVEH - Private Const FormatVersion As String = "1.0" + 'V1.1 MassMax is now saved in [t] instead of [kg] + + Private Const FormatVersion As String = "1.1" Private FileVersion As String Private sFilePath As String Private MyPath As String - Private siMass As Single - Private siLoading As Single - Private siAquers As Single - Private siI_mot As Single + Public Mass As Single + Public Loading As Single Private siI_wheels As Single - Private siI_Getriebe As Single - Private sinNenn As Single - Private sinLeerl As Single Private siFr0 As Single '<= wird aus Achs-RRC-Werten berechnet Private siDreifen As Single - Private siCd0 As Single + Public Cd0Tr As Single + Public Aquers0Tr As Single + + Public Cd0Rig As Single + Public Aquers0Rig As Single + + Private Cd0Act As Single + Private AquersAct As Single + + Public CdMode As tCdMode Public CdFile As cSubPath Private CdX As List(Of Single) @@ -32,14 +38,6 @@ Public Class cVEH Public GetrEffDef As List(Of Boolean) Public GetrEff As List(Of Single) - Private iganganz As Short - - Public AuxPaths As Dictionary(Of String, cAuxEntry) 'Alle Nebenverbraucher der Veh-Datei - Public AuxRefs As Dictionary(Of String, cAux) 'Alle Nebenverbraucher die in der Veh-Datei UND im Zyklus definiert sind - Public AuxDef As Boolean 'True wenn ein oder mehrere Nebenverbraucher definiert sind - - Public TracIntrSi As Single - Public RtType As tRtType '0=None, 1=Primary, 2=Secondary Public RtRatio As Single = 0 Public RtFile As cSubPath @@ -58,9 +56,10 @@ Public Class cVEH Private MyFileList As List(Of String) - Public Function CreateFileList() As Boolean - If Not Me.ReadFile Then Return False + + + Public Function CreateFileList() As Boolean MyFileList = New List(Of String) @@ -75,13 +74,6 @@ Public Class cVEH End Function - Public Class cAuxEntry - Public Type As String - Public Path As cSubPath - Public Sub New() - Path = New cSubPath - End Sub - End Class Public Sub New() MyPath = "" @@ -97,21 +89,22 @@ Public Class cVEH End Sub Private Sub SetDefault() - siMass = 0 + Mass = 0 MassExtra = 0 - siLoading = 0 - siCd0 = 0 + Loading = 0 + Cd0Tr = 0 + Aquers0Tr = 0 + Cd0Act = Cd0Tr + AquersAct = Aquers0Tr + Cd0Rig = 0 + Aquers0Rig = 0 CdFile.Clear() CdMode = tCdMode.ConstCd0 CdX.Clear() CdY.Clear() CdDim = -1 - siAquers = 0 - siI_mot = 0 siI_wheels = 0 - siI_Getriebe = 0 - sinNenn = 0 - sinLeerl = 0 + siFr0 = 0 siDreifen = 0 @@ -121,18 +114,14 @@ Public Class cVEH GetrMap = New List(Of cSubPath) MyGBmaps = Nothing - iganganz = 0 - AuxPaths = New Dictionary(Of String, cAuxEntry) - AuxRefs = New Dictionary(Of String, cAux) - AuxDef = False - TracIntrSi = 0 + RtType = tRtType.None RtRatio = 0 RtnU.Clear() RtM.Clear() RtFile.Clear() RRCs.Clear() - VehCat = tVehCat.Rigid + VehCat = tVehCat.RigidTruck MassMax = 0 AxleConf = tAxleConf.a4x2 End Sub @@ -159,93 +148,18 @@ Public Class cVEH Return False End If - siMass = CSng(file.ReadLine(0)) + Mass = CSng(file.ReadLine(0)) MassExtra = CSng(file.ReadLine(0)) - siLoading = CSng(file.ReadLine(0)) - siCd0 = CSng(file.ReadLine(0)) - siAquers = CSng(file.ReadLine(0)) - 'siI_mot = CSng(file.ReadLine(0)) - siI_wheels = CSng(file.ReadLine(0)) - 'siI_Getriebe = CSng(file.ReadLine(0)) - 'siPaux0 = CSng(file.ReadLine(0)) - 'siPnenn = CSng(file.ReadLine(0)) - 'sinNenn = CSng(file.ReadLine(0)) - 'sinLeerl = CSng(file.ReadLine(0)) - 'file.ReadLine() 'Früher: Getr-Verl Kennfeld - 'siFr0 = CSng(file.ReadLine(0)) - 'file.ReadLine() 'Früher: Getr-Verl Kennfeld verwenden Ja/Nein - 'sifGetr = CSng(file.ReadLine(0)) - 'Achs-Übersetzung-TransLoss Parameter - 'line = file.ReadLine - 'siGetrI(0) = CSng(line(0)) - 'If UBound(line) > 0 Then sGetrMaps(0).Init(MyPath, line(1)) + Loading = CSng(file.ReadLine(0)) - siDreifen = CSng(file.ReadLine(0)) - 'iganganz = 0 - 'For i = 1 To 16 - ' line = file.ReadLine - ' siGetrI(i) = CSng(line(0)) - ' 'Falls keine GetrModell-Parameter vorhanden Dummy-Belegung durch SetDefault - ' If UBound(line) > 0 Then sGetrMaps(i).Init(MyPath, line(1)) - ' If Igetr(i) > 0.0001 Then iganganz = i - 'Next - 'sihinauf = CSng(file.ReadLine(0)) - 'sihinunter = CSng(file.ReadLine(0)) - 'silhinauf = CSng(file.ReadLine(0)) - 'silhinunter = CSng(file.ReadLine(0)) - 'sipspar = CSng(file.ReadLine(0)) - 'sipmodell = CSng(file.ReadLine(0)) - - ''Schaltmodell-Verteilung - 'If (sipspar > 1) Then - ' sipspar = 1 - 'ElseIf (sipspar < 0) Then - ' sipspar = 0 - 'End If - 'If (sipmodell > 1) Then - ' sipmodell = 1 - 'ElseIf (sipmodell < 0) Then - ' sipmodell = 0 - 'End If - 'If ((sipspar + sipmodell) > 1.0) Then sipmodell = 1.0 - sipspar - - 'Update 07.08.2012 (CO2 Demo) - 'Einzelne Nebenverbraucher |@@| Individual next consumer - 'Do While Not file.EndOfFile - - ' line = file.ReadLine - - ' If line(0) = sKey.Break Then Exit Do - - ' AuxID = UCase(Trim(line(0))) - - ' If AuxPaths.ContainsKey(AuxID) Then - ' WorkerMsg(tMsgID.Err, "Multiple definitions of the same auxiliary type (" & line(0) & ")!", MsgSrc) - ' file.Close() - ' Return False - ' End If - - ' AuxEntry = New cAuxEntry - - ' AuxEntry.Type = line(1) - ' AuxEntry.Path.Init(MyPath, line(2)) - - ' AuxPaths.Add(AuxID, AuxEntry) - - ' AuxDef = True - - 'Loop + Cd0Tr = CSng(file.ReadLine(0)) + Aquers0Tr = CSng(file.ReadLine(0)) - If file.EndOfFile Then GoTo lbError + Cd0Act = Cd0Tr + AquersAct = Aquers0Tr - 'Zugkraftunterbrechung - Update 09.08.2012 (CO2 Demo) |@@| Interruption of Traction - Update 09/08/2012 (CO2 demo) - 'Try - ' TracIntrSi = CSng(file.ReadLine(0)) - 'Catch ex As Exception - ' WorkerMsg(tMsgID.Err, ex.Message, MsgSrc) - ' file.Close() - ' Return False - 'End Try + siI_wheels = CSng(file.ReadLine(0)) + siDreifen = CSng(file.ReadLine(0)) If file.EndOfFile Then GoTo lbError @@ -300,7 +214,7 @@ Public Class cVEH Try VehCat = CType(CInt(file.ReadLine(0)), tVehCat) MassExtra = CSng(file.ReadLine(0)) - MassMax = CSng(file.ReadLine(0)) + MassMax = CSng(file.ReadLine(0)) / 1000 AxleConf = CType(CInt(file.ReadLine(0)), tAxleConf) Catch ex As Exception WorkerMsg(tMsgID.Err, ex.Message, MsgSrc) @@ -308,7 +222,6 @@ Public Class cVEH Return False End Try - '************************ End reading **************************** file.Close() @@ -322,120 +235,6 @@ lbError: End Function - Private Function SaveFileOld() As Boolean - Dim file As cFile_V3 - Dim sl As Single() - - file = New cFile_V3 - - If sFilePath = "" Then Return False - - If Not file.OpenWrite(sFilePath) Then Return False - - file.WriteLine("c VECTO Vehicle Input File") - file.WriteLine("c VECTO " & VECTOvers) - file.WriteLine("c " & Now.ToString) - - file.WriteLine("c Curb weight vehicle [kg]") - file.WriteLine(CStr(siMass)) - file.WriteLine("c Curb weight extra trailer/body [kg]") - file.WriteLine(CStr(MassExtra)) - file.WriteLine("c Vehicle loading [kg]") - file.WriteLine(CStr(siLoading)) - file.WriteLine("c Cd value [-]") - file.WriteLine(CStr(siCd0)) - file.WriteLine("c Cross sectional area [m^2]") - file.WriteLine(CStr(siAquers)) - 'file.WriteLine("c Engine rotational inertia [kg*m^2]") - 'file.WriteLine(CStr(siI_mot)) - file.WriteLine("c Wheels inertia [kgm^2]") - file.WriteLine(CStr(siI_wheels)) - 'file.WriteLine("c Gearbox rotational inertia [kg*m^2]") - 'file.WriteLine(CStr(siI_Getriebe)) - 'file.WriteLine("c Auxiliaries base power demand (normalized) [-]") - 'file.WriteLine(CStr(siPaux0)) - 'file.WriteLine("c Engine rated power [kW]") - 'file.WriteLine(CStr(siPnenn)) - 'file.WriteLine("c Engine rated speed [rpm]") - 'file.WriteLine(CStr(sinNenn)) - 'file.WriteLine("c Engine idling speed [rpm]") - 'file.WriteLine(CStr(sinLeerl)) - 'file.WriteLine("c Transmission loss factor") - 'file.WriteLine(CStr(sifGetr)) - 'file.WriteLine("c Transmission") - 'file.WriteLine("c Axle ratio [-], path to efficiency map file (optional)") - 'file.WriteLine(CStr(siGetrI(0)), sGetrMaps(0).PathOrDummy) - file.WriteLine("c Wheel effective diameter [m]") - file.WriteLine(CStr(siDreifen)) - 'file.WriteLine("c Transmission gears: Ratio [-], path to efficiency map file (optional)") - 'For i = 1 To 16 - ' file.WriteLine("c Gear " & i) - ' file.WriteLine(CStr(siGetrI(i)), sGetrMaps(i).PathOrDummy) - 'Next - 'file.WriteLine("c Gear shift behaviour:") - 'file.WriteLine("c Gearshift model (Version fast driver)") - 'file.WriteLine("c shift up at ratio rpm/rated rpm in actual gear greater than") - 'file.WriteLine(CStr(sihinauf)) - 'file.WriteLine("c shift down when rpm/rated rpm in lower gear is higher than") - 'file.WriteLine(CStr(sihinunter)) - 'file.WriteLine("c Gearshift model (Version economic driver)") - 'file.WriteLine("c shift up at ratio rpm/rated rpm in higher gear greater than") - 'file.WriteLine(CStr(silhinauf)) - 'file.WriteLine("c Shift down when ratio rpm/rated rpm in actual gear is lower than") - 'file.WriteLine(CStr(silhinunter)) - 'file.WriteLine("c Share of version economic driver (0 to 1)") - 'file.WriteLine(CStr(sipspar)) - 'file.WriteLine("c Share of version mixed model (0 to 1)") - 'file.WriteLine(CStr(sipmodell)) - - 'file.WriteLine("c Auxiliaries") - 'For Each AuxEntryKV In AuxPaths - ' file.WriteLine(Trim(UCase(AuxEntryKV.Key)) & "," & AuxEntryKV.Value.Type & "," & AuxEntryKV.Value.Path.PathOrDummy) - 'Next - 'file.WriteLine(sKey.Break) - - 'Interruption of traction (Update 09.08.2012 - CO2 demo) - 'file.WriteLine("c Traction Interruption") - 'file.WriteLine(CStr(TracIntrSi)) - - 'Cd Modus / Input Datei (Update 14.08.2012 - CO2 Demo) - file.WriteLine("c Cd Mode, Input File") - file.WriteLine(CStr(CType(CdMode, Integer)), CdFile.PathOrDummy) - - 'Retarder (Update 02.10.2012 - CO2 Demo) - file.WriteLine("c Retarder Type (0=None, 1=Primary, 2=Secondary)") - file.WriteLine(CStr(CType(RtType, Integer))) - file.WriteLine("c Retarder Ratio") - file.WriteLine(CStr(RtRatio)) - file.WriteLine("c Retarder File") - file.WriteLine(CStr(RtFile.PathOrDummy)) - - 'Axle configuration - Update 16.10.2012 - file.WriteLine("c Axle configurations") - file.WriteLine("c Axle weight share [-], Twin Tyres [1/0], RRC [N/N], Fz ISO [N]") - For Each sl In RRCs - file.WriteLine(CStr(sl(0)), CStr(sl(1)), CStr(sl(2)), CStr(sl(3))) - Next - - file.WriteLine(sKey.Break) - - file.WriteLine("c VehCat") - file.WriteLine(CStr(CType(VehCat, Integer))) - file.WriteLine("c MassExtra") - file.WriteLine(CStr(MassExtra)) - file.WriteLine("c MassMax") - file.WriteLine(CStr(MassMax)) - file.WriteLine("c Axle Configuration") - file.WriteLine(CStr(CType(AxleConf, Integer))) - - file.Close() - file = Nothing - - Return True - - End Function - - Public Function ReadFile() As Boolean Dim JSON As New cJSON Dim dic As Object @@ -450,16 +249,8 @@ lbError: SetDefault() - If Cfg.JSON Then - If Not JSON.ReadFile(sFilePath) Then - NoJSON = True - Try - Return ReadFileOld() - Catch ex As Exception - Return False - End Try - End If - Else + If Not JSON.ReadFile(sFilePath) Then + NoJSON = True Try Return ReadFileOld() Catch ex As Exception @@ -471,13 +262,20 @@ lbError: FileVersion = JSON.Content("Header")("FileVersion") - siMass = JSON.Content("Body")("CurbWeight") + Mass = JSON.Content("Body")("CurbWeight") MassExtra = JSON.Content("Body")("CurbWeightExtra") - siLoading = JSON.Content("Body")("Loading") + Loading = JSON.Content("Body")("Loading") MassMax = JSON.Content("Body")("MassMax") + If FileVersion = "1.0" Then MassMax /= 1000 + + Cd0Tr = JSON.Content("Body")("Cd") + Aquers0Tr = JSON.Content("Body")("CrossSecArea") - siCd0 = JSON.Content("Body")("Cd") - siAquers = JSON.Content("Body")("CrossSecArea") + If Not JSON.Content("Body")("CdRigid") Is Nothing Then Cd0Rig = JSON.Content("Body")("CdRigid") + If Not JSON.Content("Body")("CrossSecAreaRigid") Is Nothing Then Aquers0Rig = JSON.Content("Body")("CrossSecAreaRigid") + + Cd0Act = Cd0Tr + AquersAct = Aquers0Tr siI_wheels = JSON.Content("Body")("WheelsInertia") siDreifen = JSON.Content("Body")("WheelsDiaEff") @@ -493,12 +291,12 @@ lbError: If Not JSON.Content("Body")("Retarder")("File") Is Nothing Then RtFile.Init(MyPath, JSON.Content("Body")("Retarder")("File")) End If - AxleConf = AxleConfConv(JSON.Content("Body")("AxleConfig")("Type").ToString) + AxleConf = ConvAxleConf(JSON.Content("Body")("AxleConfig")("Type").ToString) For Each dic In JSON.Content("Body")("AxleConfig")("Axles") RRCs.Add(New Single() {dic("AxleWeightShare"), CSng(dic("TwinTyres")), dic("RRCISO"), dic("FzISO")}) Next - VehCat = VehCatConv(JSON.Content("Body")("VehCat").ToString) + VehCat = ConvVehCat(JSON.Content("Body")("VehCat").ToString) Catch ex As Exception WorkerMsg(tMsgID.Err, "Failed to read Vehicle file! " & ex.Message, MsgSrc) @@ -511,6 +309,121 @@ lbError: End Function + Public Function DeclInit() As Boolean + Dim al As List(Of Single) + Dim i As Integer + Dim a As Single + Dim MissionID As tMission + Dim MsgSrc As String + + MsgSrc = "VEH/DeclInit" + + MissionID = Declaration.CurrentMission.MissionID + + MassExtra = Declaration.SegRef.GetBodyTrWeight(MissionID) + + + al = Declaration.SegRef.AxleShares(MissionID) + + If al.Count > RRCs.Count Then + WorkerMsg(tMsgID.Err, "Invalid number of axles! Defined: " & RRCs.Count & ", required: " & al.Count, MsgSrc) + Return False + End If + + i = -1 + For Each a In al + i += 1 + RRCs(i)(0) = a / 100 + Next + + 'Remove non-Truck axles + Do While RRCs.Count > al.Count + RRCs.RemoveAt(RRCs.Count - 1) + Loop + + + '(Semi-) Trailer + If Not Declaration.SegRef.LongHaulRigidTrailer OrElse MissionID = tMission.LongHaul Then + al = Declaration.SegRef.AxleSharesTr(MissionID) + For Each a In al + RRCs.Add(New Single() {a / 100, 0, cDeclaration.RRCTr, cDeclaration.FzISOTr}) + Next + End If + + + + CdMode = tCdMode.CdOfV + + CdFile.Init(MyPath, Declaration.SegRef.VCDVfile) + + If Declaration.SegRef.LongHaulRigidTrailer Then + + If MissionID = tMission.LongHaul Then + Cd0Act = Cd0Tr + AquersAct = Aquers0Tr + Else + Cd0Act = Cd0Rig + AquersAct = Aquers0Rig + End If + + Else + + If Declaration.SegRef.VehCat = tVehCat.RigidTruck Then + Cd0Act = Cd0Rig + AquersAct = Aquers0Rig + Else + Cd0Act = Cd0Tr + AquersAct = Aquers0Tr + End If + + End If + + Return True + + End Function + + Public Function DeclInitLoad(ByVal LoadingID As tLoading) As Boolean + Dim lmax As Single + Dim MissionID As tMission + Dim MsgSrc As String + + MsgSrc = "VEH/DeclInit" + + MissionID = Declaration.CurrentMission.MissionID + + + lmax = MassMax * 1000 - Mass - MassExtra + + Select Case LoadingID + Case tLoading.FullLoaded + Loading = lmax + + Case tLoading.RefLoaded + Loading = Declaration.SegRef.GetLoading(MissionID, MassMax) + If Loading < 0 Then + WorkerMsg(tMsgID.Err, "Invalid loading in segement table!", MsgSrc) + Return False + End If + + If Loading > lmax Then + WorkerMsg(tMsgID.Warn, "Reference loading > Max. loading! Using max. loading.", MsgSrc) + Loading = lmax + End If + + Case tLoading.EmptyLoaded + Loading = 0 + + Case Else ' tLoading.EmptyLoaded + WorkerMsg(tMsgID.Err, "tLoading.UserDefLoaded not allowed!", MsgSrc) + Return False + + End Select + + Return True + + End Function + + Public Function SaveFile() As Boolean Dim sl As Single() Dim dic As Dictionary(Of String, Object) @@ -519,8 +432,6 @@ lbError: Dim JSON As New cJSON - If Not Cfg.JSON Then Return SaveFileOld() - 'Header dic = New Dictionary(Of String, Object) dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")") @@ -532,15 +443,18 @@ lbError: 'Body dic = New Dictionary(Of String, Object) - dic.Add("VehCat", VehCatConv(VehCat)) + dic.Add("VehCat", ConvVehCat(VehCat)) - dic.Add("CurbWeight", siMass) + dic.Add("CurbWeight", Mass) dic.Add("CurbWeightExtra", MassExtra) - dic.Add("Loading", siLoading) + dic.Add("Loading", Loading) dic.Add("MassMax", MassMax) - dic.Add("Cd", siCd0) - dic.Add("CrossSecArea", siAquers) + dic.Add("Cd", Cd0Tr) + dic.Add("CrossSecArea", Aquers0Tr) + + dic.Add("CdRigid", Cd0Rig) + dic.Add("CrossSecAreaRigid", Aquers0Rig) dic.Add("WheelsInertia", siI_wheels) dic.Add("WheelsDiaEff", siDreifen) @@ -565,7 +479,7 @@ lbError: Next dic0 = New Dictionary(Of String, Object) - dic0.Add("Type", AxleConfConv(AxleConf)) + dic0.Add("Type", ConvAxleConf(AxleConf)) dic0.Add("Axles", ls) dic.Add("AxleConfig", dic0) @@ -586,10 +500,8 @@ lbError: Dim nrwheels As Single - MsgSrc = "VEH/Init" - 'Error-message within AuxInit - If Not AuxInit() Then Return False + MsgSrc = "VEH/Init" 'Cd-Init If Not CdInit() Then Return False @@ -638,24 +550,18 @@ lbError: Else nrwheels = 2 End If - RRC += sl(0) * (sl(2) * ((siLoading + siMass + MassExtra) * sl(0) * 9.81 / (sl(3) * nrwheels)) ^ (0.9 - 1)) 'Beta=0.9 + RRC += sl(0) * (sl(2) * ((Loading + Mass + MassExtra) * sl(0) * 9.81 / (sl(3) * nrwheels)) ^ (0.9 - 1)) 'Beta=0.9 Next siFr0 = RRC + + Return True End Function - Public Sub nRatedInit() - Dim fl As cFLD - - nNenn = 0 - For Each fl In FLD - If nNenn < fl.nRated Then nNenn = fl.nRated - Next - - End Sub + #Region "Transmission Loss Maps" @@ -691,7 +597,7 @@ lbError: MyGBmaps = New List(Of cDelaunayMap) file = New cFile_V3 - For i = 0 To iganganz + For i = 0 To GBX.GearCount MsgSrc = "VEH/TrLossMapInit/G" & i @@ -776,10 +682,10 @@ lbError: EffSum = 0 Anz = 0 - dnU = (2 / 3) * (VEH.nNenn - VEH.nLeerl) / 10 - nU = VEH.nLeerl + dnU + dnU = (2 / 3) * (ENG.Nrated - ENG.Nidle) / 10 + nU = ENG.Nidle + dnU - Do While nU <= nNenn + Do While nU <= ENG.Nrated dM = nPeToM(nU, (2 / 3) * FLD(i).Pfull(nU) / 10) M_in = nPeToM(nU, (1 / 3) * FLD(i).Pfull(nU)) @@ -859,6 +765,7 @@ lbError: Dim iMin As Integer Dim PeOutX As Double Dim GrTxt As String + Dim Ploss As Single Dim MsgSrc As String @@ -877,6 +784,7 @@ lbError: Else PeIn = PeOut * GetrEff(Gear) End If + Ploss = PeIn - PeOut Else @@ -885,6 +793,7 @@ lbError: Try 'Interpolate with Original Values PeIn = nMtoPe(nU, GBmap.Intpol(nU, nPeToM(nU, PeOut))) + Ploss = PeIn - PeOut Catch ex As Exception @@ -908,40 +817,59 @@ lbError: If PeOutX > 0 Then If PeIn > 0 Then - 'Drivetrain=> Drivetrain - If PeIn = 0 Then Return 0 - WG = PeOutX / PeIn + PeIn = PeOut / WG + Ploss = PeIn - PeOut Else - 'Drag => Drivetrain: ERROR! + 'Drag => Drive: ERROR! WorkerMsg(tMsgID.Err, "Transmission Loss Map invalid! Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], PeIn=" & PeIn.ToString("0.0") & " [kW], PeOut=" & PeOutX.ToString("0.0") & " [kW]", MsgSrc) WorkerAbort() Return 0 End If - Else + ElseIf PeOutX < 0 Then + If PeIn > 0 Then - 'WorkerMsg(tMsgID.Warn, "Change of sign in Transmission Loss Map! Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], PeIn=" & PeIn.ToString("0.00") & " [kW], PeOut=" & PeOutX.ToString("0.00") & " [kW]", MsgSrc) - 'WorkerAbort() WG = (PeIn - (PeIn - PeOutX)) / PeIn + PeIn = PeOut / WG + Ploss = PeIn - PeOut - Else - - 'Drag => Drag - If PeOutX = 0 Then Return 0 + ElseIf PeIn < 0 Then WG = PeIn / PeOutX + PeIn = PeOut * WG + Ploss = PeIn - PeOut + + Else + + Ploss = Math.Abs(PeOut) End If - End If - 'Calculate efficiency with PeIn for original PeOut - PeIn = PeOut / WG + Else + + If PeIn > 0 Then + + Ploss = PeIn + + ElseIf PeIn < 0 Then + + 'Drag => Zero: ERROR! + WorkerMsg(tMsgID.Err, "Transmission Loss Map invalid! Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], PeIn=" & PeIn.ToString("0.0") & " [kW], PeOut=" & PeOutX.ToString("0.0") & " [kW]", MsgSrc) + WorkerAbort() + Return 0 + Else + + Ploss = Math.Abs(PeOut) + + End If + + End If MODdata.ModErrors.TrLossMapExtr = "Gear= " & GrTxt & ", nU= " & nU.ToString("0.00") & " [1/min], MeOut=" & nPeToM(nU, PeOut).ToString("0.00") & " [Nm]" @@ -949,7 +877,7 @@ lbError: End If - Return Math.Max(PeIn - PeOut, 0) + Return Math.Max(Ploss, 0) End Function @@ -1057,140 +985,6 @@ lbError: -#End Region - -#Region "Aux" - - Private Function AuxInit() As Boolean - - Dim Aux0 As cAux - Dim AuxPathKV As KeyValuePair(Of String, cAuxEntry) - Dim DRIauxcheck As New Dictionary(Of String, Boolean) - Dim AuxID As String - - Dim MsgSrc As String - - MsgSrc = "VEH/AuxInit" - - AuxRefs = New Dictionary(Of String, cAux) - - If DRI.AuxDef Xor AuxDef Then - - If AuxDef Then - WorkerMsg(tMsgID.Err, "No auxiliary input defined in driving cycle!", MsgSrc) - Return False - Else - WorkerMsg(tMsgID.Warn, "No auxiliary defined in vehicle file! Psupply input will be ignored!", MsgSrc) - Return True - End If - - End If - - If Not (DRI.AuxDef Or AuxDef) Then Return True - - - For Each AuxID In DRI.AuxComponents.Keys - DRIauxcheck.Add(AuxID, False) - Next - - For Each AuxPathKV In AuxPaths - - MsgSrc = "VEH/AuxInit/" & AuxPathKV.Key - - If Not DRI.AuxComponents.ContainsKey(AuxPathKV.Key) Then - WorkerMsg(tMsgID.Err, "No Psupply input defined in driving cycle for auxiliary '" & AuxPathKV.Key & "'!", MsgSrc) - Return False - End If - - Aux0 = New cAux - Aux0.Filepath = AuxPathKV.Value.Path.FullPath - - If Not Aux0.Readfile Then - 'Notificationin ReadFile() - Return False - End If - - AuxRefs.Add(AuxPathKV.Key, Aux0) - - DRIauxcheck(AuxPathKV.Key) = True - - Next - - MsgSrc = "VEH/AuxInit" - - For Each AuxID In DRI.AuxComponents.Keys - If Not DRIauxcheck(AuxID) Then WorkerMsg(tMsgID.Warn, "Auxiliary '" & AuxID & "' not found! Psupply input will be ignored!", MsgSrc) - Next - - Return True - - End Function - - Public Function Paux(ByVal AuxID As String, ByVal t As Integer, ByVal nU As Single) As Single - Dim Psupply As Single - Dim Px As Single - Dim Aux0 As cAux - - Dim MsgSrc As String - - MsgSrc = "VEH/Paux" - - If AuxDef Then - - Aux0 = AuxRefs(AuxID) - - Psupply = DRI.AuxComponents(AuxID)(t) - - If Psupply < 0 Then GoTo lbAuxError - - Px = Aux0.Paux(nU, Psupply) - - If Px < 0 Then GoTo lbAuxError - - Return Px - - Else - - Return 0 - - End If - - -lbAuxError: - MODdata.ModErrors.AuxNegative = AuxID - Return 0 - - - End Function - - Public Function PauxSum(ByVal t As Integer, ByVal nU As Single) As Single - Dim sum As Single - Dim AuxID As String - - Dim MsgSrc As String - - MsgSrc = "VEH/Paux" - - If AuxDef Then - - sum = 0 - - For Each AuxID In AuxRefs.Keys - - sum += Paux(AuxID, t, nU) - - Next - - Return sum - - Else - - Return 0 - - End If - - End Function - #End Region #Region "Cd Funktionen" @@ -1254,11 +1048,15 @@ lbAuxError: End Function Public Function Cd(ByVal x As Single) As Single - Return CdIntpol(x) * siCd0 + Return CdIntpol(x) * Cd0Act End Function Public Function Cd() As Single - Return siCd0 + Return Cd0Act + End Function + + Public Function Aquers() As Single + Return AquersAct End Function Private Function CdIntpol(ByVal x As Single) As Single @@ -1412,69 +1210,12 @@ lbInt: End Set End Property - Public Property ganganz As Short - Get - Return iganganz - End Get - Set(value As Short) - iganganz = value - End Set - End Property - Public ReadOnly Property Igetr(ByVal x As Short) As Single Get Return siGetrI(x) End Get End Property - Public Property Mass As Single - Get - Return siMass - End Get - Set(ByVal value As Single) - siMass = value - End Set - End Property - - - Public Property Loading As Single - Get - Return siLoading - End Get - Set(ByVal value As Single) - siLoading = value - End Set - End Property - - Public Property Cd0 As Single - Get - Return siCd0 - End Get - Set(ByVal value As Single) - siCd0 = value - End Set - End Property - - - Public Property Aquers As Single - Get - Return siAquers - End Get - Set(ByVal value As Single) - siAquers = value - End Set - End Property - - Public Property I_mot As Single - Get - Return siI_mot - End Get - Set(ByVal value As Single) - siI_mot = value - End Set - End Property - - Public ReadOnly Property m_raeder_red As Single Get Return siI_wheels / ((siDreifen / 2) ^ 2) @@ -1491,34 +1232,6 @@ lbInt: End Property - Public Property I_Getriebe As Single - Get - Return siI_Getriebe - End Get - Set(ByVal value As Single) - siI_Getriebe = value - End Set - End Property - - Public Property nNenn As Single - Get - Return sinNenn - End Get - Set(ByVal value As Single) - sinNenn = value - End Set - End Property - - - Public Property nLeerl As Single - Get - Return sinLeerl - End Get - Set(ByVal value As Single) - sinLeerl = value - End Set - End Property - Public Property Fr0 As Single Get Return siFr0 @@ -1550,126 +1263,6 @@ lbInt: - Public Function VehCatConv(ByVal VehCat As tVehCat) As String - Select Case VehCat - Case tVehCat.Citybus - Return "Citybus" - Case tVehCat.Coach - Return "Coach" - Case tVehCat.InterurbanBus - Return "InterurbanBus" - Case tVehCat.Rigid - Return "Rigid" - Case Else 'tVehCat.Tractor - Return "Tractor" - End Select - End Function - - Public Function VehCatConv(ByVal VehCat As String) As tVehCat - Select Case UCase(Trim(VehCat)) - Case "CITYBUS" - Return tVehCat.Citybus - Case "COACH" - Return tVehCat.Coach - Case "INTERURBANBUS" - Return tVehCat.InterurbanBus - Case "RIGID" - Return tVehCat.Rigid - Case Else '"TRACTOR" - Return tVehCat.Tractor - End Select - End Function - - - Public Function CdModeConv(ByVal CdMode As tCdMode) As String - Select Case CdMode - Case tCdMode.CdOfBeta - Return "CdOfBeta" - Case tCdMode.CdOfV - Return "CdOfV" - Case Else 'tCdMode.ConstCd0 - Return "Off" - End Select - End Function - - Public Function CdModeConv(ByVal CdMode As String) As tCdMode - Select Case UCase(Trim(CdMode)) - Case "CDOFBETA" - Return tCdMode.CdOfBeta - Case "CDOFV" - Return tCdMode.CdOfV - Case Else '"OFF" - Return tCdMode.ConstCd0 - End Select - End Function - - Public Function AxleConfConv(ByVal AxleConf As tAxleConf) As String - Select Case AxleConf - Case tAxleConf.a4x2 - Return "4x2" - Case tAxleConf.a4x4 - Return "4x4" - Case tAxleConf.a6x2 - Return "6x2" - Case tAxleConf.a6x4 - Return "6x4" - Case tAxleConf.a6x6 - Return "6x6" - Case tAxleConf.a8x2 - Return "8x2" - Case tAxleConf.a8x4 - Return "8x4" - Case tAxleConf.a8x6 - Return "8x6" - Case Else 'tAxleConf.a8x8 - Return "8x8" - End Select - End Function - - Public Function AxleConfConv(ByVal AxleConf As String) As tAxleConf - Select Case UCase(Trim(AxleConf)) - Case "4X2" - Return tAxleConf.a4x2 - Case "4X4" - Return tAxleConf.a4x4 - Case "6X2" - Return tAxleConf.a6x2 - Case "6X4" - Return tAxleConf.a6x4 - Case "6X6" - Return tAxleConf.a6x6 - Case "8X2" - Return tAxleConf.a8x2 - Case "8X4" - Return tAxleConf.a8x4 - Case "8X6" - Return tAxleConf.a8x6 - Case Else '"8X8" - Return tAxleConf.a8x8 - End Select - End Function - - Public Function RtTypeConv(ByVal RtType As tRtType) As String - Select Case RtType - Case tRtType.Primary - Return "Primary" - Case tRtType.Secondary - Return "Secondary" - Case Else 'tRtType.None - Return "None" - End Select - End Function - - Public Function RtTypeConv(ByVal RtType As String) As tRtType - Select Case UCase(Trim(RtType)) - Case "PRIMARY" - Return tRtType.Primary - Case "SECONDARY" - Return tRtType.Secondary - Case Else '"NONE" - Return tRtType.None - End Select - End Function diff --git a/VECTO/MODcalc/Em Calc.vb b/VECTO/MODcalc/Em Calc.vb deleted file mode 100644 index 6fc83693c7df963f0668ae9fc218c7e4c4fd693a..0000000000000000000000000000000000000000 --- a/VECTO/MODcalc/Em Calc.vb +++ /dev/null @@ -1,98 +0,0 @@ -Imports System.Collections.Generic - -Public Class cEm - - Public EmComp As Dictionary(Of String, cEmComp) - Public EmDefComp As Dictionary(Of tMapComp, cEmComp) - - - Public Sub Init() - EmComp = New Dictionary(Of String, cEmComp) - EmDefComp = New Dictionary(Of tMapComp, cEmComp) - End Sub - - Public Sub CleanUp() - EmComp = Nothing - EmDefComp = Nothing - End Sub - - Public Function Raw_Calc() As Boolean - Dim v As Single - Dim i As Integer - Dim KV As KeyValuePair(Of String, cEmComp) - Dim Em0 As cEmComp - Dim Result As Boolean - Dim MsgSrc As String - - MsgSrc = "" - - Result = True - - For Each KV In MAP.EmComponents - Em0 = New cEmComp - Em0.Name = KV.Value.Name - Em0.IDstring = KV.Value.IDstring - Em0.MapCompID = KV.Value.MapCompID - Em0.Unit = KV.Value.Unit - Em0.NormID = KV.Value.NormID - Em0.WriteOutput = KV.Value.WriteOutput - EmComp.Add(KV.Key, Em0) - Next - - For i = 0 To MODdata.tDim - - For Each KV In MAP.EmComponents - - Select Case MODdata.EngState(i) - - Case tEngState.Stopped - - EmComp(KV.Key).RawVals.Add(0) '<= Soll das so bleiben? - - Case Else '<= Idle / Drag / FullLoad-Unterscheidung...? - - - 'Delaunay - v = MAP.fFCdelaunay_Intp(MODdata.nU(i), MODdata.Pe(i)) - - If v < 0 And v > -999 Then - If v < -0.1 Then - WorkerMsg(tMsgID.Err, "FC= " & v & " at " & MODdata.nU(i) & " [1/min], " & MODdata.Pe(i) & " [kW]!", "MAP/FC_Intp") - Result = False - Else - v = 0 - End If - End If - - If Result Then - If v < -999 Then Result = False - End If - EmComp(KV.Key).RawVals.Add(v) - - - End Select - - Next - Next - - For Each KV In EmComp - If KV.Value.MapCompID <> tMapComp.Undefined Then - EmDefComp.Add(KV.Value.MapCompID, KV.Value) - End If - Next - - KV = Nothing - - Return Result - - End Function - - Public Sub SumCalc() - Dim KV As KeyValuePair(Of String, cEmComp) - For Each KV In EmComp - KV.Value.SumCalc() - Next - End Sub - - -End Class diff --git a/VECTO/MODcalc/cMOD.vb b/VECTO/MODcalc/cMOD.vb index 318d4ff91c746235f3270cb86c752d59766016c2..458aaaeb8fa04a44836f6826f0bd12658784803c 100644 --- a/VECTO/MODcalc/cMOD.vb +++ b/VECTO/MODcalc/cMOD.vb @@ -7,7 +7,6 @@ Public Class cMOD Public dnUvorg As List(Of Single) Public tDim As Integer Public tDimOgl As Integer - Public Em As cEm Public Px As cPower Public Vh As cVh Public CylceKin As cCycleKin @@ -28,6 +27,7 @@ Public Class cMOD Public PaEng As List(Of Single) Public PaGB As List(Of Single) Public Paux As Dictionary(Of String, List(Of Single)) + Public Pclutch As List(Of Single) Public Grad As List(Of Single) Public EngState As List(Of tEngState) @@ -41,6 +41,14 @@ Public Class cMOD Public TCMout As List(Of Single) Public TCnOut As List(Of Single) + 'FC + Public FCerror As Boolean + Public lFC As List(Of Single) + Public FCavg As Single + + Public CorrFactor As Single + + Private bInit As Boolean @@ -51,7 +59,6 @@ Public Class cMOD Public Sub Init() Pe = New List(Of Single) nU = New List(Of Single) - Em = New cEm Px = New cPower Vh = New cVh CylceKin = New cCycleKin @@ -69,6 +76,7 @@ Public Class cMOD PaEng = New List(Of Single) PaGB = New List(Of Single) Paux = New Dictionary(Of String, List(Of Single)) + Pclutch = New List(Of Single) Grad = New List(Of Single) EngState = New List(Of tEngState) @@ -81,17 +89,23 @@ Public Class cMOD TCMout = New List(Of Single) TCnOut = New List(Of Single) - Em.Init() + lFC = New List(Of Single) + + FCerror = False + + Vh.Init() ModErrors = New cModErrors + + bInit = True End Sub Public Sub CleanUp() If bInit Then - Em.CleanUp() + lFC = Nothing + Vh.CleanUp() - Em = Nothing Px = Nothing Vh = Nothing Pe = Nothing @@ -110,6 +124,7 @@ Public Class cMOD PaEng = Nothing PaGB = Nothing Paux = Nothing + Pclutch = Nothing Grad = Nothing EngState = Nothing @@ -129,7 +144,6 @@ Public Class cMOD End Sub Public Sub Duplicate(ByVal t As Integer) - Dim EmKV As KeyValuePair(Of String, cEmComp) Dim AuxKV As KeyValuePair(Of String, List(Of Single)) If DRI.Nvorg Then @@ -137,12 +151,6 @@ Public Class cMOD dnUvorg.Insert(t, dnUvorg(t)) End If - If DRI.EmCompDef Then - For Each EmKV In DRI.EmComponents - EmKV.Value.RawVals.Insert(t, EmKV.Value.RawVals(t)) - Next - End If - If DRI.AuxDef Then For Each AuxKV In DRI.AuxComponents AuxKV.Value.Insert(t, AuxKV.Value(t)) @@ -152,7 +160,6 @@ Public Class cMOD End Sub Public Sub Cut(ByVal t As Integer) - Dim EmKV As KeyValuePair(Of String, cEmComp) Dim AuxKV As KeyValuePair(Of String, List(Of Single)) If DRI.Nvorg Then @@ -160,12 +167,6 @@ Public Class cMOD dnUvorg.RemoveAt(t) End If - If DRI.EmCompDef Then - For Each EmKV In DRI.EmComponents - EmKV.Value.RawVals.RemoveAt(t) - Next - End If - If DRI.AuxDef Then For Each AuxKV In DRI.AuxComponents AuxKV.Value.RemoveAt(t) @@ -178,7 +179,7 @@ Public Class cMOD Public Sub CycleInit() - If GEN.EngOnly Then + If VEC.EngOnly Then EngCycleInit() Else VehCycleInit() @@ -191,9 +192,6 @@ Public Class cMOD Private Sub VehCycleInit() Dim s As Integer Dim L As List(Of Double) - Dim EmKV As KeyValuePair(Of String, cEmComp) - Dim ExsKV As KeyValuePair(Of tExsComp, Dictionary(Of Short, List(Of Single))) - Dim Exs0 As List(Of Single) Dim AuxKV As KeyValuePair(Of String, List(Of Single)) 'Define Cycle-length (shorter by 1sec than original because of Interim-seconds) @@ -222,26 +220,6 @@ Public Class cMOD End If - 'Average EM-components (between-seconds) for KF-creation or Eng-Analysis - If DRI.EmCompDef Then - For Each EmKV In DRI.EmComponents - For s = 0 To tDim - EmKV.Value.RawVals(s) = (EmKV.Value.RawVals(s + 1) + EmKV.Value.RawVals(s)) / 2 - Next - Next - End If - - 'Specify average EXS - If DRI.ExsCompDef Then - For Each ExsKV In DRI.ExsComponents - For Each Exs0 In ExsKV.Value.Values - For s = 0 To tDim - Exs0(s) = (Exs0(s + 1) + Exs0(s)) / 2 - Next - Next - Next - End If - 'Specify average Aux and Aux-lists, when Au8x present in DRI and VEH If DRI.AuxDef Then For Each AuxKV In DRI.AuxComponents @@ -250,7 +228,7 @@ Public Class cMOD AuxKV.Value(s) = (AuxKV.Value(s + 1) + AuxKV.Value(s)) / 2 Next - If VEH.AuxPaths.ContainsKey(AuxKV.Key) Then MODdata.Paux.Add(AuxKV.Key, New List(Of Single)) + If VEC.AuxPaths.ContainsKey(AuxKV.Key) Then MODdata.Paux.Add(AuxKV.Key, New List(Of Single)) Next End If @@ -292,6 +270,143 @@ Public Class cMOD End Sub + + + Public Sub FCcalc(ByVal WHTCcorrection As Boolean) + Dim v As Single + Dim i As Integer + Dim Result As Boolean + Dim x As Single + Dim sum As Double + Dim LostEnergy As Double + Dim EngOnTime As Integer + Dim AddEngLoad As Single + Dim info As cRegression.RegressionProcessInfo + Dim reg As cRegression + Dim rx As List(Of Double) + Dim ry As List(Of Double) + Dim rR2 As Single + Dim rA As Double + Dim rB As Double + Dim rSE As Double + Dim FCadd As Double + Dim PeAdd As Double + + Dim MsgSrc As String + + MsgSrc = "MAP/FC_Intp" + + FCerror = False + Result = True + LostEnergy = 0 + EngOnTime = 0 + rx = New List(Of Double) + ry = New List(Of Double) + + For i = 0 To MODdata.tDim + + Select Case MODdata.EngState(i) + + Case tEngState.Stopped + + lFC.Add(0) + LostEnergy += MODdata.PauxSum(i) / 3600 + + Case Else '<= Idle / Drag / FullLoad-Unterscheidung...? + + + 'Delaunay + v = MAP.fFCdelaunay_Intp(MODdata.nU(i), MODdata.Pe(i)) + + If v < 0 And v > -999 Then v = 0 + + If Result Then + If v < -999 Then Result = False + End If + lFC.Add(v) + + EngOnTime += 1 + rx.Add(MODdata.Pe(i)) + ry.Add(v) + + End Select + + Next + + 'Calc average FC + sum = 0 + For Each x In lFC + sum += x + Next + FCavg = CSng(sum / lFC.Count) + + + 'WHTC Correction + If Declaration.Active AndAlso WHTCcorrection Then + CorrFactor = Declaration.SegRef.WHTCWF(Declaration.CurrentMission.MissionID)(tWHTCpart.Urban) * ENG.WHTCurban / Declaration.WHTCresults(tWHTCpart.Urban) _ + + Declaration.SegRef.WHTCWF(Declaration.CurrentMission.MissionID)(tWHTCpart.Rural) * ENG.WHTCrural / Declaration.WHTCresults(tWHTCpart.Rural) _ + + Declaration.SegRef.WHTCWF(Declaration.CurrentMission.MissionID)(tWHTCpart.Motorway) * ENG.WHTCmw / Declaration.WHTCresults(tWHTCpart.Motorway) + End If + + + 'Start/Stop-Aux - Correction + If Result AndAlso LostEnergy > 0 Then + + WorkerMsg(tMsgID.Normal, "Correcting FC due to wrong aux energy balance during engine stop times", MsgSrc) + WorkerMsg(tMsgID.Normal, " > Error in aux energy balance: " & LostEnergy.ToString("0.000") & " [kWh]", MsgSrc) + + If EngOnTime < 1 Then + WorkerMsg(tMsgID.Err, " > ERROR: Engine-On Time = 0!", MsgSrc) + FCerror = True + Exit Sub + End If + + 'Linear regression of FC=f(Pe) + reg = New cRegression + + info = reg.Regress(rx.ToArray, ry.ToArray) + rR2 = info.PearsonsR ^ 2 + rA = info.a + rB = info.b + rSE = info.StandardError + + If rB <= 0 Then + WorkerMsg(tMsgID.Err, " > ERROR in linear regression ( b=" & rB & ")!", MsgSrc) + FCerror = True + Exit Sub + End If + + 'Additional engine load due to lost Aux energy: [kW] = [kWh]/[h] + AddEngLoad = LostEnergy / (EngOnTime / 3600) + + WorkerMsg(tMsgID.Normal, " > Additional engine load: " & AddEngLoad.ToString("0.000") & " [kW]", MsgSrc) + + FCadd = 0 + For i = 0 To MODdata.tDim + If MODdata.EngState(i) <> tEngState.Stopped Then + PeAdd = AddEngLoad + MODdata.Pbrake(i) + If PeAdd > 0 Then + FCadd += rB * PeAdd + End If + End If + Next + + FCadd /= EngOnTime '[g/h] + + WorkerMsg(tMsgID.Normal, " > FC corrected from: " & FCavg.ToString("0.0") & " [g/h] to " & (FCavg + FCadd).ToString("0.0") & " [g/h]", MsgSrc) + + 'Correct FC to higher load + FCavg += FCadd + + + End If + + If Not Result Then FCerror = True + + End Sub + + + Public Function Output() As Boolean Dim f As cFile_V3 @@ -306,8 +421,6 @@ Public Class cMOD Dim MsgSrc As String Dim tdelta As Single - Dim EmList As New List(Of String) - Dim Em0 As cEmComp Dim StrKey As String Dim AuxList As New List(Of String) @@ -337,19 +450,15 @@ Public Class cMOD '*********** Settings ************** Sepp = "," t1 = MODdata.tDim - If GEN.EngOnly Then + If VEC.EngOnly Then tdelta = 0 Else tdelta = 0.5 End If - '********** Key-Listen ************ - For Each StrKey In Em.EmComp.Keys - EmList.Add(StrKey) - Next - - For Each StrKey In VEH.AuxRefs.Keys 'Wenn Engine Only dann wird das garnicht verwendet + '********** Aux-List ************ + For Each StrKey In VEC.AuxRefs.Keys 'Wenn Engine Only dann wird das garnicht verwendet AuxList.Add(StrKey) Next @@ -369,10 +478,10 @@ Public Class cMOD s.Append("time") sU.Append("[s]") - If Not GEN.EngOnly Then + If Not VEC.EngOnly Then s.Append(",dist,v_act,v_targ,acc,grad") - sU.Append(",[km],[km/h],[km/h],[m/s^2],[%]") + sU.Append(",[m],[km/h],[km/h],[m/s^2],[%]") dist = 0 End If @@ -380,7 +489,7 @@ Public Class cMOD s.Append(",n,Tq_eng,Tq_clutch,Tq_full,Tq_drag,Pe_eng,Pe_full,Pe_drag,Pe_clutch,Pa Eng,Paux") sU.Append(",[1/min],[Nm],[Nm],[Nm],[Nm],[kW],[kW],[kW],[kW],[kW],[kW]") - If Not GEN.EngOnly Then + If Not VEC.EngOnly Then s.Append(",Gear,Ploss GB,Ploss Diff,Ploss Retarder,Pa GB,Pa Veh,Proll,Pair,Pgrad,Pwheel,Pbrake") sU.Append(",[-],[kW],[kW],[kW],[kW],[kW],[kW],[kW],[kW],[kW],[kW]") @@ -399,25 +508,14 @@ Public Class cMOD End If - For Each StrKey In EmList - - Em0 = Em.EmComp(StrKey) + 'FC + s.Append(Sepp & "FC") + sU.Append(Sepp & "[g/h]") - If Em0.WriteOutput Then - s.Append(Sepp & Em0.Name) - sU.Append(Sepp & Em0.Unit) - End If - - Next - - - 'Berechnete Dynamikparameter (Diff zu Kennfeld) |@@| Calculated dynamics parameters (Diff to Map) - 'If TC.Calculated Then - ' For Each TcKey In TcList - ' s.Append(Sepp & fMapCompName(TcKey)) - ' sU.Append(Sepp & "-") - ' Next - 'End If + If Declaration.Active Then + s.Append(Sepp & "FC corrected") + sU.Append(Sepp & "[g/h]") + End If 'Write to File @@ -436,7 +534,7 @@ Public Class cMOD For t = 0 To t1 'Predefine Gear for FLD assignment - If GEN.EngOnly Then + If VEC.EngOnly Then Gear = 0 Else Gear = .Gear(t) @@ -448,10 +546,10 @@ Public Class cMOD 'Time s.Append(t + DRI.t0 + tdelta) - If Not GEN.EngOnly Then + If Not VEC.EngOnly Then - 'Strecke |@@| Route - dist += .Vh.V(t) / 1000 + 'distance + dist += .Vh.V(t) s.Append(Sepp & dist) 'Actual-speed. @@ -472,23 +570,23 @@ Public Class cMOD s.Append(Sepp & .nU(t)) If Math.Abs(2 * Math.PI * .nU(t) / 60) < 0.00001 Then - s.Append(Sepp & "-" & Sepp & "-" & Sepp & "-" & Sepp & "-") + s.Append(Sepp & "0" & Sepp & "0" & Sepp & "0" & Sepp & "0") Else 'Torque - s.Append(Sepp & 1000 * .Pe(t) / (2 * Math.PI * .nU(t) / 60)) + s.Append(Sepp & nPeToM(.nU(t), .Pe(t))) 'Torque at clutch - s.Append(Sepp & 1000 * (.Pe(t) - .PaEng(t) - .PauxSum(t)) / (2 * Math.PI * .nU(t) / 60)) + s.Append(Sepp & nPeToM(.nU(t), .Pclutch(t))) 'Full-load and Drag torque If .EngState(t) = tEngState.Stopped Then - s.Append(Sepp & "-" & Sepp & "-") + s.Append(Sepp & "0" & Sepp & "0") Else If t = 0 Then - s.Append(Sepp & 1000 * FLD(Gear).Pfull(.nU(t)) / (2 * Math.PI * .nU(t) / 60) & Sepp & 1000 * FLD(Gear).Pdrag(.nU(t)) / (2 * Math.PI * .nU(t) / 60)) + s.Append(Sepp & nPeToM(.nU(t), FLD(Gear).Pfull(.nU(t))) & Sepp & nPeToM(.nU(t), FLD(Gear).Pdrag(.nU(t)))) Else - s.Append(Sepp & 1000 * FLD(Gear).Pfull(.nU(t), .Pe(t - 1)) / (2 * Math.PI * .nU(t) / 60) & Sepp & 1000 * FLD(Gear).Pdrag(.nU(t)) / (2 * Math.PI * .nU(t) / 60)) + s.Append(Sepp & nPeToM(.nU(t), FLD(Gear).Pfull(.nU(t), .Pe(t - 1))) & Sepp & nPeToM(.nU(t), FLD(Gear).Pdrag(.nU(t)))) End If End If @@ -515,7 +613,7 @@ Public Class cMOD End If 'Power at Clutch - s.Append(Sepp & .Pe(t) - .PaEng(t) - .PauxSum(t)) + s.Append(Sepp & .Pclutch(t)) 'PaEng s.Append(Sepp & .PaEng(t)) @@ -525,7 +623,7 @@ Public Class cMOD - If Not GEN.EngOnly Then + If Not VEC.EngOnly Then 'Gear s.Append(Sepp & .Gear(t)) @@ -570,31 +668,20 @@ Public Class cMOD End If - 'Final-emissions (tailpipe) - For Each StrKey In EmList - - Em0 = .Em.EmComp(StrKey) - - If Em0.WriteOutput Then - - If Em0.FinalVals(t) > -0.0001 Then - s.Append(Sepp & Em0.FinalVals(t)) - Else - s.Append(Sepp & "ERROR") - End If + 'FC + If .lFC(t) > -0.0001 Then + s.Append(Sepp & .lFC(t)) + Else + s.Append(Sepp & "ERROR") + End If + If Declaration.Active Then + If .lFC(t) > -0.0001 Then + s.Append(Sepp & .lFC(t) * .CorrFactor) + Else + s.Append(Sepp & "ERROR") End If - - Next - - - 'Calculated Dynamics-parameters (Diff from(zu) Map) - 'If TC.Calculated Then - ' For Each TcKey In TcList - ' TC0 = MODdata.TC.TCcomponents(TcKey) - ' s.Append(Sepp & TC0(t)) - ' Next - 'End If + End If 'Write to File f.WriteLine(s.ToString) @@ -621,7 +708,6 @@ Public Class cMOD Public CdExtrapol As String Public RtExtrapol As String Public DesMaxExtr As String - Public GSextrapol As String Public TCextrapol As String Public Sub New() @@ -650,7 +736,6 @@ Public Class cMOD Public Sub GeschRedReset() CdExtrapol = "" RtExtrapol = "" - GSextrapol = "" TCextrapol = "" PxReset() End Sub @@ -698,10 +783,6 @@ Public Class cMOD WorkerMsg(tMsgID.Warn, "Extrapolation in Retarder input file (" & RtExtrapol & ")!", MsgSrc & "/t= " & Second) End If - If GSextrapol <> "" Then - WorkerMsg(tMsgID.Warn, "Extrapolation in Gear Shift Polygon file (" & GSextrapol & ")!", MsgSrc & "/t= " & Second) - End If - If TCextrapol <> "" Then WorkerMsg(tMsgID.Warn, "Extrapolation in Torque Converter file (" & TCextrapol & ")!", MsgSrc & "/t= " & Second) End If diff --git a/VECTO/MODcalc/cPower.vb b/VECTO/MODcalc/cPower.vb index 1e733e3b5c14759a6f77e95f1eb718f84a9e1805..71b10e3ccfadd2c0394342310fdeb904ba5f9404 100644 --- a/VECTO/MODcalc/cPower.vb +++ b/VECTO/MODcalc/cPower.vb @@ -75,12 +75,12 @@ Public Class cPower MsgSrc = "Power/PreRun" 'Check Input - If GEN.LookAheadOn AndAlso GEN.a_lookahead >= 0 Then + If VEC.LookAheadOn AndAlso VEC.a_lookahead >= 0 Then WorkerMsg(tMsgID.Err, "Lookahead deceleration invalid! Value must be below zero.", MsgSrc) Return False End If - If GEN.OverSpeedOn And GEN.EcoRollOn Then + If VEC.OverSpeedOn And VEC.EcoRollOn Then WorkerMsg(tMsgID.Err, "Overrun and Ecoroll can't be enabled both at the same time!", MsgSrc) Return False End If @@ -90,8 +90,8 @@ Public Class cPower Gvorg = DRI.Gvorg Nvorg = DRI.Nvorg - If GEN.EcoRollOn Or GEN.OverSpeedOn Then - If GEN.LookAheadOn Then + If VEC.EcoRollOn Or VEC.OverSpeedOn Then + If VEC.LookAheadOn Then ProgBarShare = 4 ProgBarLACpart = 2 Else @@ -99,7 +99,7 @@ Public Class cPower ProgBarLACpart = 0 '0=OFF End If Else - If GEN.LookAheadOn Then + If VEC.LookAheadOn Then ProgBarShare = 2 ProgBarLACpart = 1 Else @@ -172,7 +172,7 @@ Public Class cPower Gear = 0 Else If Gvorg Then - Gear = Math.Min(Vh.GearVorg(i), VEH.ganganz) + Gear = Math.Min(Vh.GearVorg(i), GBX.GearCount) Else Gear = fFastGearCalc(Vist, PvorD) End If @@ -182,10 +182,10 @@ Public Class cPower 'ICE-inertia If Nvorg Then nU = MODdata.nUvorg(i) - PaMot = (VEH.I_mot * MODdata.dnUvorg(i) * 0.01096 * MODdata.nUvorg(i)) * 0.001 + PaMot = (ENG.I_mot * MODdata.dnUvorg(i) * 0.01096 * MODdata.nUvorg(i)) * 0.001 Else nU = fnU(Vist, Gear, False) - PaMot = ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001 + PaMot = ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001 End If 'Aux Demand @@ -212,17 +212,17 @@ Public Class cPower 'Full load / motoring Pmin = FLD(Gear).Pdrag(nU) - If Vist >= GEN.vMin / 3.6 Then + If Vist >= VEC.vMin / 3.6 Then - If GEN.EcoRollOn Then + If VEC.EcoRollOn Then 'Secondary Progressbar ProgBarCtrl.ProgJobInt = CInt((100 / ProgBarShare) * i / MODdata.tDim) If PvorD < 0 Or (i > 0 AndAlso Vh.EcoRoll(i - 1)) Then - Vmax = MODdata.Vh.Vsoll(i) + GEN.OverSpeed / 3.6 - Vmin = Math.Max(0, MODdata.Vh.Vsoll(i) - GEN.UnderSpeed / 3.6) + Vmax = MODdata.Vh.Vsoll(i) + VEC.OverSpeed / 3.6 + Vmin = Math.Max(0, MODdata.Vh.Vsoll(i) - VEC.UnderSpeed / 3.6) vRollout = fRolloutSpeed(i, 1, Vh.fGrad(dist(i))) aRollout = (2 * vRollout - Vh.V0(i)) - Vh.V0(i) @@ -268,13 +268,13 @@ Public Class cPower If P < Pmin Then - If GEN.OverSpeedOn Then + If VEC.OverSpeedOn Then 'Secondary Progressbar ProgBarCtrl.ProgJobInt = CInt((100 / ProgBarShare) * i / MODdata.tDim) vCoasting = fCoastingSpeed(i, dist(i), Gear) - Vmax = MODdata.Vh.Vsoll(i) + GEN.OverSpeed / 3.6 + Vmax = MODdata.Vh.Vsoll(i) + VEC.OverSpeed / 3.6 If vCoasting <= Vmax Then @@ -336,8 +336,8 @@ Public Class cPower Next 'Calc Coasting-Start time step - If GEN.LookAheadOn Then - Tlookahead = CInt((vset2 - vset1) / GEN.a_lookahead) + If VEC.LookAheadOn Then + Tlookahead = CInt((vset2 - vset1) / VEC.a_lookahead) t = Math.Max(0, i - Tlookahead) End If @@ -353,13 +353,13 @@ Public Class cPower LookAheadDone = False 'Limit deceleration - adec = GEN.aDesMin(Vist) + adec = VEC.aDesMin(Vist) If Vh.a(i) < adec Then Vh.SetMinAccBackw(i) i0 = i 'If vehicle stops too early reduce coasting time, i.e. set Coasting-Start later - If GEN.LookAheadOn Then + If VEC.LookAheadOn Then Do While i0 > t AndAlso fCoastingSpeed(t, dist(t), Gears(t), i0 - t) < Vh.V(i0) t += 1 Loop @@ -370,20 +370,20 @@ Public Class cPower i -= 1 aist = Vh.a(i) Vist = Vh.V(i) - adec = GEN.aDesMin(Vist) + adec = VEC.aDesMin(Vist) If aist < adec Then Vh.SetMinAccBackw(i) Positions(i) = 2 Else 'Coasting (Forward) - If GEN.LookAheadOn And Vist >= GEN.vMinLA / 3.6 Then + If VEC.LookAheadOn And Vist >= VEC.vMinLA / 3.6 Then For j = t To i0 Vist = Vh.V(j) vCoasting = fCoastingSpeed(j, dist(j), Gears(j)) aCoasting = (2 * vCoasting - Vh.V0(j)) - Vh.V0(j) - If vCoasting < Vist And aCoasting >= GEN.aDesMin(Vist) Then + If vCoasting < Vist And aCoasting >= VEC.aDesMin(Vist) Then 'If Vrollout < Vist Then Vh.SetSpeed(j, vCoasting) Positions(j) = 3 @@ -455,7 +455,6 @@ Public Class cPower Dim StdMode As Boolean Dim ProgBarShare As Int16 - Dim LastPmax As Single Dim dist As Double Dim dist0 As Double @@ -478,7 +477,7 @@ Public Class cPower ' Initialize Vh = MODdata.Vh - If GEN.EcoRollOn Or GEN.OverSpeedOn Or GEN.LookAheadOn Then + If VEC.EcoRollOn Or VEC.OverSpeedOn Or VEC.LookAheadOn Then ProgBarShare = 2 Else ProgBarShare = 1 @@ -502,10 +501,10 @@ Public Class cPower StStDelayTx = 0 SecSpeedRed = 0 - If VEH.TracIntrSi < 0.001 Then + If GBX.TracIntrSi < 0.001 Then TracIntrI = 0 Else - TracIntrI = CInt(Math.Max(1, Math.Round(VEH.TracIntrSi, 0, MidpointRounding.AwayFromZero))) + TracIntrI = CInt(Math.Max(1, Math.Round(GBX.TracIntrSi, 0, MidpointRounding.AwayFromZero))) End If TracIntrIx = 0 TracIntrOn = False @@ -518,7 +517,7 @@ Public Class cPower LastClutch = tEngClutch.Opened 'Theoretical maximum speed [m/s] - set to Speed ​​at 1.2 x Nominal-Revolutions in top-Gear - GVmax = 1.2 * VEH.nNenn * VEH.Dreifen * Math.PI / (VEH.AchsI * VEH.Igetr(VEH.ganganz) * 60) + GVmax = 1.2 * ENG.Nrated * VEH.Dreifen * Math.PI / (VEH.AchsI * VEH.Igetr(GBX.GearCount) * 60) dist = 0 dist0 = 0 @@ -556,6 +555,7 @@ lbGschw: dist = dist0 + Vist StStPossible = False + EngState0 = tEngState.Undef 'If Speed over Top theoretical Speed => Reduce If Vist > GVmax + 0.0001 And Not GVset Then @@ -565,7 +565,7 @@ lbGschw: End If 'Check if Acceleration is too high - amax = GEN.aDesMax(Vist) + amax = VEC.aDesMax(Vist) If amax < 0.0001 Then WorkerMsg(tMsgID.Err, "aDesMax(acc) invalid! v= " & Vist & ", aDesMax(acc) =" & amax, MsgSrc) @@ -583,7 +583,7 @@ lbGschw: ElseIf FirstSecItar Then 'this is necessary to avoid speed reduction failure 'Check whether Deceleration too high - amax = GEN.aDesMin(Vist) + amax = VEC.aDesMin(Vist) If amax > -0.001 Then WorkerMsg(tMsgID.Err, "aDesMax(dec) invalid! v= " & Vist & ", aDesMax(dec) =" & amax, MsgSrc) Return False @@ -677,11 +677,11 @@ lbGschw: If Gvorg Then 'Gear-settings - Gear = Math.Min(Vh.GearVorg(jz), VEH.ganganz) + Gear = Math.Min(Vh.GearVorg(jz), GBX.GearCount) ElseIf Nvorg Then 'Revolutions-setting Gear = fGearByU(MODdata.nUvorg(jz), Vist) - ElseIf VEH.ganganz = 1 Then + ElseIf GBX.GearCount = 1 Then Gear = 1 Else @@ -733,15 +733,6 @@ lbGschw: ' Important checks lbCheck: - 'Check whether to reduce speed - ''If GeschwRed Then GoTo lbGeschwRed - - 'Check whether Clutch is open: - ''bKupplOffen = (bStehen Or Gear(jz) = 0) <= Already known by Clutch - - 'If conventionall then ICE-clutch = master clutch - ''bICEKupOffen = bKupplOffen <= i need nothing more - 'Falls vor Gangwahl festgestellt wurde, dass nicht KupplSchleif, dann bei zu niedriger Drehzahl runterschalten: |@@| If before?(vor) Gear-shift is detected that Clutch does not Lock, then Downshift at too low Revolutions: If Not GBX.TCon Then If Clutch = tEngClutch.Closed Then @@ -781,16 +772,16 @@ lbCheck: nU = MODdata.nUvorg(jz) 'If Start/Stop then it will be set at the same nn < -0.05 to nU = 0 - If GEN.StartStop And nU < VEH.nLeerl - 100 Then + If VEC.StartStop And nU < ENG.Nidle - 100 Then If Pplus Then - nU = VEH.nLeerl + nU = ENG.Nidle If FirstSecItar Then WorkerMsg(tMsgID.Warn, "target rpm < rpm_idle while power demand > 0", MsgSrc & "/t= " & jz + 1) Else nU = 0 End If End If - If nU < VEH.nLeerl - 100 And Not GEN.StartStop Then + If nU < ENG.Nidle - 100 And Not VEC.StartStop Then If FirstSecItar Then WorkerMsg(tMsgID.Warn, "target rpm < rpm_idle (Start/Stop disabled)", MsgSrc & "/t= " & jz + 1) End If @@ -801,10 +792,10 @@ lbCheck: 'Revolutions drop when decoupling If Clutch = tEngClutch.Opened Then If jz = 0 Then - nU = VEH.nLeerl + nU = ENG.Nidle Else - If MODdata.nU(jz - 1) <= VEH.nLeerl + 0.00001 Then + If MODdata.nU(jz - 1) <= ENG.Nidle + 0.00001 Then nU = MODdata.nU(jz - 1) GoTo lb_nOK End If @@ -826,7 +817,7 @@ lbCheck: P = MODdata.Pe(jz - 1) - 0.75 * (MODdata.Pe(jz - 1) - Pmin) M = -P * 1000 * 60 / (2 * Math.PI * nU) 'original: M = -Pmin * 1000 * 60 / (2 * Math.PI * ((nU + nUx) / 2)) - omega_p = M / VEH.I_mot + omega_p = M / ENG.I_mot omega2 = omega1 - omega_p nU = omega2 * 60 / (2 * Math.PI) i += 1 @@ -835,11 +826,11 @@ lbCheck: nU = nUx Exit Do End If - Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= VEH.nLeerl Or i = 999 + Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= ENG.Nidle Or i = 999 'If i = 999 Then WorkerMsg(tMsgID.Warn, "i=999", MsgSrc & "/t= " & jz + 1) - nU = Math.Max(VEH.nLeerl, nU) + nU = Math.Max(ENG.Nidle, nU) MODdata.ModErrors.FLDextrapol = "" @@ -875,14 +866,14 @@ lbCheck: '*** Start: Revolutions Check 'Check whether Revolutions too high! => Upshift - Do While nU > 1.2 * (VEH.nNenn - VEH.nLeerl) + VEH.nLeerl And Gear < VEH.ganganz + Do While nU > 1.2 * (ENG.Nrated - ENG.Nidle) + ENG.Nidle And Gear < GBX.GearCount Gear += 1 nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping) Loop 'Check whether Revolutions too low with the Clutch closed If Clutch = tEngClutch.Closed Then - If nU < VEH.nLeerl + 0.0001 Then + If nU < ENG.Nidle + 0.0001 Then Gear -= 1 nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping) End If @@ -901,8 +892,8 @@ lb_nOK: '************************************ Determine Engine-state ************************************ ' nU is final here! - 'Determine next Consumption (from VEH and DRI) - Paux = fPaux(jz, nU) + 'Determine Aux power demand (from VEH and DRI) + Paux = fPaux(jz, Math.Max(nU, ENG.Nidle)) 'ICE-inertia If Clutch = tEngClutch.Opened Then @@ -910,13 +901,13 @@ lb_nOK: PaMot = 0 Else 'Not optimal since jz-1 to jz not the right interval - PaMot = (VEH.I_mot * (nU - MODdata.nU(jz - 1)) * 0.01096 * nU) * 0.001 + PaMot = (ENG.I_mot * (nU - MODdata.nU(jz - 1)) * 0.01096 * nU) * 0.001 End If Else If Nvorg Then - PaMot = (VEH.I_mot * MODdata.dnUvorg(jz) * 0.01096 * MODdata.nUvorg(jz)) * 0.001 + PaMot = (ENG.I_mot * MODdata.dnUvorg(jz) * 0.01096 * MODdata.nUvorg(jz)) * 0.001 Else - PaMot = ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001 + PaMot = ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001 End If End If @@ -960,6 +951,20 @@ lb_nOK: 'EngState If Clutch = tEngClutch.Opened Then + 'Start/Stop >>> tEngState.Stopped + If VEC.StartStop AndAlso Vist <= VEC.StStV / 3.6 AndAlso Math.Abs(PaMot) < 0.0001 Then + StStPossible = True + If StStAus And jz > 0 Then + If MODdata.EngState(jz - 1) = tEngState.Stopped Then + P = 0 + EngState0 = tEngState.Stopped + End If + Else + P = 0 + EngState0 = tEngState.Stopped + End If + End If + Select Case P Case Is > 0.0001 'Antrieb EngState0 = tEngState.Load @@ -968,24 +973,7 @@ lb_nOK: EngState0 = tEngState.Drag Case Else 'Idle/Stop - If GEN.StartStop Then - If Vist <= GEN.StStV / 3.6 Then - StStPossible = True - If StStAus And jz > 0 Then - If MODdata.EngState(jz - 1) = tEngState.Stopped Then - EngState0 = tEngState.Stopped - Else - EngState0 = tEngState.Idle - End If - Else - EngState0 = tEngState.Stopped - End If - Else - EngState0 = tEngState.Idle - End If - Else - EngState0 = tEngState.Idle - End If + If Not EngState0 = tEngState.Stopped Then EngState0 = tEngState.Idle End Select Else @@ -1129,7 +1117,7 @@ lb_nOK: TracIntrOn = True If TracIntrIx + 1 = TracIntrI Then - ZgkrDt = VEH.TracIntrSi - CSng(TracIntrIx) + ZgkrDt = GBX.TracIntrSi - CSng(TracIntrIx) Else ZgkrDt = 1 End If @@ -1155,7 +1143,7 @@ lb_nOK: dist0 += Vist 'Start / Stop - Activation-Speed Control - If GEN.StartStop Then + If VEC.StartStop Then If StStPossible Then StStDelayTx += 1 Else @@ -1164,13 +1152,13 @@ lb_nOK: If StStAus Then If Not EngState0 = tEngState.Stopped Then StStTx += 1 - If StStTx > GEN.StStT And StStDelayTx >= GEN.StStDelay Then + If StStTx > VEC.StStT And StStDelayTx >= VEC.StStDelay Then StStTx = 1 StStAus = False End If End If Else - If EngState0 = tEngState.Stopped Or StStDelayTx < GEN.StStDelay Then StStAus = True + If EngState0 = tEngState.Stopped Or StStDelayTx < VEC.StStDelay Then StStAus = True End If End If @@ -1189,8 +1177,8 @@ lb_nOK: MODdata.PauxSum.Add(Paux) MODdata.Grad.Add(Vh.fGrad(dist)) - For Each AuxID As String In VEH.AuxRefs.Keys - MODdata.Paux(AuxID).Add(VEH.Paux(AuxID, jz, nU)) + For Each AuxID As String In VEC.AuxRefs.Keys + MODdata.Paux(AuxID).Add(VEC.Paux(AuxID, jz, Math.Max(nU, ENG.Nidle))) Next MODdata.PlossGB.Add(PlossGB) @@ -1198,6 +1186,7 @@ lb_nOK: MODdata.PlossRt.Add(PlossRt) MODdata.PaEng.Add(PaMot) MODdata.PaGB.Add(PaGetr) + MODdata.Pclutch.Add(Pkup) MODdata.VehState.Add(VehState0) MODdata.Gear.Add(Gear) @@ -1226,7 +1215,7 @@ lb_nOK: Else MODdata.TCnu.Add(1) MODdata.TCmu.Add(1) - MODdata.TCMout.Add(nPeToM(nU, P - Paux - PaMot)) + MODdata.TCMout.Add(nPeToM(nU, Pkup)) MODdata.TCnOut.Add(nU) End If End If @@ -1251,7 +1240,7 @@ lb_nOK: ElseIf jz < MODdata.tDim Then If TracIntrIx + 1 = TracIntrI Then - ZgkrDt = VEH.TracIntrSi - CSng(TracIntrIx) + ZgkrDt = GBX.TracIntrSi - CSng(TracIntrIx) Else ZgkrDt = 1 End If @@ -1283,7 +1272,7 @@ lb_nOK: If MODdata.ModErrors.MsgOutputAbort(jz + 1, MsgSrc) Then Return False If Clutch = tEngClutch.Closed And Nvorg Then - If Math.Abs(nU - fnU(Vist, Gear, False)) > 0.2 * VEH.nNenn Then + If Math.Abs(nU - fnU(Vist, Gear, False)) > 0.2 * ENG.Nrated Then WorkerMsg(tMsgID.Warn, "Target rpm =" & nU & ", calculated rpm(gear " & Gear & ")= " & fnU(Vist, Gear, False), MsgSrc & "/t= " & jz + 1) End If End If @@ -1362,7 +1351,7 @@ lb_nOK: 'OLD and wrong because not time shifted: P_mr(jz) = 0.001 * (I_mot * 0.0109662 * (n(jz) * nnrom) * nnrom * (n(jz) - n(jz - 1))) If t > 0 And t < t1 Then - Pmr = 0.001 * (VEH.I_mot * (2 * Math.PI / 60) ^ 2 * MODdata.nU(t) * 0.5 * (MODdata.nU(t + 1) - MODdata.nU(t - 1))) + Pmr = 0.001 * (ENG.I_mot * (2 * Math.PI / 60) ^ 2 * MODdata.nU(t) * 0.5 * (MODdata.nU(t + 1) - MODdata.nU(t - 1))) Else Pmr = 0 End If @@ -1374,7 +1363,7 @@ lb_nOK: 'Revolutions of the Cycle => Determined in Cycle-init 'If Revolutions under idle, assume Engine is stopped - If MODdata.nU(t) < VEH.nLeerl - 100 Then + If MODdata.nU(t) < ENG.Nidle - 100 Then EngState0 = tEngState.Stopped Else Pmin = FLD(0).Pdrag(MODdata.nU(t)) @@ -1399,7 +1388,7 @@ lb_nOK: If MODdata.Pe(t) / Pmax > 1.05 Then PcorCount += 1 MODdata.Pe(t) = Pmax ElseIf MODdata.Pe(t) < Pmin Then - If MODdata.Pe(t) / Pmin And MODdata.Pe(t) > -99999 > 1.05 Then PcorCount += 1 + If MODdata.Pe(t) / Pmin > 1.05 And MODdata.Pe(t) > -99999 Then PcorCount += 1 MODdata.Pe(t) = Pmin End If @@ -1411,7 +1400,7 @@ lb_nOK: EngState0 = tEngState.Load End If Case Is < -0.0001 'Schlepp - If MODdata.Pe(t) < 1.01 * Pmin Then + If Math.Abs(MODdata.Pe(t) / Pmin - 1) < 0.01 Then EngState0 = tEngState.FullDrag Else EngState0 = tEngState.Drag @@ -1423,6 +1412,7 @@ lb_nOK: MODdata.EngState.Add(EngState0) MODdata.PaEng.Add(Pmr) + MODdata.Pclutch.Add(MODdata.Pe(t) - (Pmr + Padd)) MODdata.PauxSum.Add(Padd) 'Notify @@ -1466,7 +1456,7 @@ lb_nOK: P = MODdata.Pe(t - 1) - 0.75 * (MODdata.Pe(t - 1) - Pmin) M = -P * 1000 * 60 / (2 * Math.PI * nU) 'original: M = -Pmin * 1000 * 60 / (2 * Math.PI * ((nU + nUx) / 2)) - omega_p = M / VEH.I_mot + omega_p = M / ENG.I_mot omega2 = omega1 - omega_p nU = omega2 * 60 / (2 * Math.PI) i += 1 @@ -1475,7 +1465,7 @@ lb_nOK: nU = nUx Exit Do End If - Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= VEH.nLeerl Or i = 999 + Loop Until Math.Abs(Pmin - PminX) < 0.001 Or nU <= ENG.Nidle Or i = 999 Return P @@ -1667,7 +1657,7 @@ lb_nOK: Dim nUup As Single Dim nUdown As Single - For Gear = VEH.ganganz To 1 Step -1 + For Gear = GBX.GearCount To 1 Step -1 nU = CSng(Vist * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI)) @@ -1684,8 +1674,6 @@ lb_nOK: Return 1 - MODdata.ModErrors.GSextrapol = "" - End Function Private Function fStartGear(ByVal t As Integer, ByVal Grad As Single) As Integer @@ -1704,7 +1692,7 @@ lb_nOK: If t = 0 AndAlso VehState0 <> tVehState.Stopped Then 'Calculate gear when cycle starts with speed > 0 - For Gear = VEH.ganganz To 1 Step -1 + For Gear = GBX.GearCount To 1 Step -1 'rpm nU = fnU(Vist, Gear, Clutch = tEngClutch.Slipping) @@ -1729,8 +1717,7 @@ lb_nOK: 'Find highest gear with rpm below Upshift-rpm and with enough torque reserve If nU < nUup And nU > nUdown And 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 Then Exit For - ElseIf nU > nUup And Gear < VEH.ganganz Then - MODdata.ModErrors.GSextrapol = "" + ElseIf nU > nUup And Gear < GBX.GearCount Then Return Gear + 1 End If @@ -1739,7 +1726,7 @@ lb_nOK: Else 'Calculate Start Gear - For Gear = VEH.ganganz To 1 Step -1 + For Gear = GBX.GearCount To 1 Step -1 'rpm at StartSpeed [m/s] nU = GBX.gs_StartSpeed * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI) @@ -1761,14 +1748,12 @@ lb_nOK: nUup = GBX.fGSnUup(Md) nUdown = GBX.fGSnUdown(Md) - If nU > nUdown And nU >= VEH.nLeerl And (1 - Md / MdMax >= GBX.gs_TorqueResvStart / 100 Or Md < 0) Then Exit For + If nU > nUdown And nU >= ENG.Nidle And (1 - Md / MdMax >= GBX.gs_TorqueResvStart / 100 Or Md < 0) Then Exit For Next End If - MODdata.ModErrors.GSextrapol = "" - Return Gear @@ -1806,7 +1791,7 @@ lb_nOK: 'Rpm nU = MODdata.nU(t - 1) - OutOfRpmRange = (nU >= 1.2 * (VEH.nNenn - VEH.nLeerl) + VEH.nLeerl Or nU < VEH.nLeerl) + OutOfRpmRange = (nU >= 1.2 * (ENG.Nrated - ENG.Nidle) + ENG.Nidle Or nU < ENG.Nidle) 'No gear change 3s after last one -except rpm out of range If Not OutOfRpmRange AndAlso t - LastGearChange <= GBX.gs_ShiftTime And t > GBX.gs_ShiftTime - 1 Then Return LastGear @@ -1882,7 +1867,7 @@ lb_nOK: nU = CSng(Vist * 60.0 * VEH.AchsI * VEH.Igetr(LastGear) / (VEH.Dreifen * Math.PI)) - OutOfRpmRange = ((nU - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl) >= 1.2 Or nU < VEH.nLeerl) + OutOfRpmRange = ((nU - ENG.Nidle) / (ENG.Nrated - ENG.Nidle) >= 1.2 Or nU < ENG.Nidle) 'No gear change 3s after last one -except rpm out of range If Not OutOfRpmRange AndAlso t - LastGearChange <= GBX.gs_ShiftTime And t > GBX.gs_ShiftTime - 1 Then Return LastGear @@ -1932,7 +1917,7 @@ lb_nOK: nU = fnU(Vist, Gear - 1, False) 'Continue only if rpm (for lower gear) is above idling - If nU >= VEH.nLeerl Then + If nU >= ENG.Nidle Then Pe = Math.Min(fPeGearMod(Gear - 1, t, Grad), FLD(Gear - 1).Pfull(nU)) Pe = Math.Max(Pe, FLD(Gear - 1).Pdrag(nU)) Md = Pe * 1000 / (nU * 2 * Math.PI / 60) @@ -1952,7 +1937,7 @@ lb_nOK: nU = fnU(Vist, Gear - 1, False) 'Continue only if rpm (for lower gear) is above idling - If nU < VEH.nLeerl Then Exit Do + If nU < ENG.Nidle Then Exit Do Pe = Math.Min(fPeGearMod(Gear - 1, t, Grad), FLD(Gear - 1).Pfull(nU)) Pe = Math.Max(Pe, FLD(Gear - 1).Pdrag(nU)) @@ -1966,15 +1951,15 @@ lb_nOK: End If - ElseIf LastGear < VEH.ganganz And nU > nnUp Then + ElseIf LastGear < GBX.GearCount And nU > nnUp Then 'Shift UP Gear = LastGear + 1 'Skip Gears - If GBX.gs_SkipGears AndAlso Gear < VEH.ganganz Then + If GBX.gs_SkipGears AndAlso Gear < GBX.GearCount Then - If VEH.TracIntrSi > 0.001 Then + If GBX.TracIntrSi > 0.001 Then LastPeNorm = fTracIntPower(t, Gear) End If @@ -1991,19 +1976,19 @@ lb_nOK: MdMax = FLD(Gear + 1).Pfull(nU, LastPeNorm) * 1000 / (nU * 2 * Math.PI / 60) 'Shift up as long as Torque reserve is okay and Gear < Max-Gear and rpm is above DownShift-rpm - Do While Gear < VEH.ganganz AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown) + Do While Gear < GBX.GearCount AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown) 'Shift UP Gear += 1 'Continue only if Gear < Max-Gear - If Gear = VEH.ganganz Then Exit Do + If Gear = GBX.GearCount Then Exit Do 'Calculate Shift-rpm for higher gear nU = fnU(Vist, Gear + 1, False) 'Continue only if rpm (for higher gear) is below rated rpm - If nU > VEH.nNenn Then Exit Do + If nU > ENG.Nrated Then Exit Do Pe = Math.Min(fPeGearMod(Gear + 1, t, Grad), FLD(Gear + 1).Pfull(nU)) Pe = Math.Max(Pe, FLD(Gear + 1).Pdrag(nU)) @@ -2024,13 +2009,13 @@ lb_nOK: Gear = LastGear 'Shift UP inside shift polygons - If GBX.gs_ShiftInside And LastGear < VEH.ganganz Then + If GBX.gs_ShiftInside And LastGear < GBX.GearCount Then 'Calculate Shift-rpm for higher gear nU = fnU(Vist, Gear + 1, False) 'Continue only if rpm (for higher gear) is below rated rpm - If nU <= VEH.nNenn Then + If nU <= ENG.Nrated Then Pe = Math.Min(fPeGearMod(Gear + 1, t, Grad), FLD(Gear + 1).Pfull(nU)) Pe = Math.Max(Pe, FLD(Gear + 1).Pdrag(nU)) Md = Pe * 1000 / (nU * 2 * Math.PI / 60) @@ -2041,19 +2026,19 @@ lb_nOK: MdMax = FLD(Gear + 1).Pfull(nU, LastPeNorm) * 1000 / (nU * 2 * Math.PI / 60) 'Shift up as long as Torque reserve is okay and Gear < Max-Gear and rpm is above DownShift-rpm - Do While Gear < VEH.ganganz AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown) + Do While Gear < GBX.GearCount AndAlso 1 - Md / MdMax >= GBX.gs_TorqueResv / 100 AndAlso nU > nnDown '+ 0.1 * (nnUp - nnDown) 'Shift UP Gear += 1 'Continue only if Gear < Max-Gear - If Gear = VEH.ganganz Then Exit Do + If Gear = GBX.GearCount Then Exit Do 'Calculate Shift-rpm for higher gear nU = fnU(Vist, Gear + 1, False) 'Continue only if rpm (for higher gear) is below rated rpm - If nU > VEH.nNenn Then Exit Do + If nU > ENG.Nrated Then Exit Do Pe = Math.Min(fPeGearMod(Gear + 1, t, Grad), FLD(Gear + 1).Pfull(nU)) Pe = Math.Max(Pe, FLD(Gear + 1).Pdrag(nU)) @@ -2082,12 +2067,6 @@ lb10: Pe = Math.Max(Pe, FLD(Gear).Pdrag(nU)) 'Current torque demand Md = Pe * 1000 / (nU * 2 * Math.PI / 60) - 'Clear old errors - MODdata.ModErrors.GSextrapol = "" - 'Check for errors - GBX.fGSnUdown(Md) - GBX.fGSnUup(Md) - 'If GearCorrection is OFF then return here If Not DEV.GearCorrection Then Return Gear @@ -2171,7 +2150,7 @@ lb10: Dim g As Int16 Dim g0 As Integer DifMin = 9999 - For g = 1 To VEH.ganganz + For g = 1 To GBX.GearCount Dif = Math.Abs(VEH.Igetr(g) - nU * (VEH.Dreifen * Math.PI) / (V * 60.0 * VEH.AchsI)) If Dif <= DifMin Then g0 = g @@ -2197,9 +2176,9 @@ lb10: If Nvorg Then 'Drehzahlvorgabe - PaM = (VEH.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001 + PaM = (ENG.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001 Else - PaM = ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * V) * 0.001 + PaM = ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * V) * 0.001 End If If Clutch = tEngClutch.Closed Then Return (PvD + fPlossGB(PvD, V, Gear, True) + fPlossDiff(PvD, V, True) + fPaG(V, a) + fPaux(t, nU) + PaM) @@ -2220,17 +2199,17 @@ lb10: #Region "Drehzahl" Private Function fnn(ByVal V As Single, ByVal Gear As Integer, ByVal ClutchSlip As Boolean) As Single - Return (fnU(V, Gear, ClutchSlip) - VEH.nLeerl) / (VEH.nNenn - VEH.nLeerl) + Return (fnU(V, Gear, ClutchSlip) - ENG.Nidle) / (ENG.Nrated - ENG.Nidle) End Function Private Function fnU(ByVal V As Single, ByVal Gear As Integer, ByVal ClutchSlip As Boolean) As Single Dim akn As Single Dim U As Single U = CSng(V * 60.0 * VEH.AchsI * VEH.Igetr(Gear) / (VEH.Dreifen * Math.PI)) - If U < VEH.nLeerl Then U = VEH.nLeerl + If U < ENG.Nidle Then U = ENG.Nidle If ClutchSlip Then - akn = Kuppln_norm / ((VEH.nLeerl + Kuppln_norm * (VEH.nNenn - VEH.nLeerl)) / VEH.nNenn) - U = (akn * U / VEH.nNenn) * (VEH.nNenn - VEH.nLeerl) + VEH.nLeerl + akn = Kuppln_norm / ((ENG.Nidle + Kuppln_norm * (ENG.Nrated - ENG.Nidle)) / ENG.Nrated) + U = (akn * U / ENG.Nrated) * (ENG.Nrated - ENG.Nidle) + ENG.Nidle End If Return U End Function @@ -2291,17 +2270,17 @@ lb10: Private Function fPaMot(ByVal t As Integer, ByVal Gear As Integer) As Single If Nvorg Then - Return (VEH.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001 + Return (ENG.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001 Else - Return ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001 + Return ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * aist * Vist) * 0.001 End If End Function Private Function fPaMot(ByVal t As Integer, ByVal Gear As Integer, ByVal v As Single, ByVal a As Single) As Single If Nvorg Then - Return (VEH.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001 + Return (ENG.I_mot * MODdata.dnUvorg(t) * 0.01096 * MODdata.nUvorg(t)) * 0.001 Else - Return ((VEH.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * v) * 0.001 + Return ((ENG.I_mot * (VEH.AchsI * VEH.Igetr(Gear) / (0.5 * VEH.Dreifen)) ^ 2) * a * v) * 0.001 End If End Function @@ -2312,7 +2291,7 @@ lb10: '----------------Ancillaries(Nebenaggregate) ---------------- Private Function fPaux(ByVal t As Integer, ByVal nU As Single) As Single - Return CSng(MODdata.Vh.Padd(t) + VEH.PauxSum(t, nU)) + Return CSng(MODdata.Vh.Padd(t) + VEC.PauxSum(t, nU)) End Function '-------------------Transmission(Getriebe)------------------- @@ -2373,7 +2352,7 @@ lb10: '----------------Gearbox inertia ---------------- Private Function fPaG(ByVal V As Single, ByVal a As Single) As Single Dim Mred As Single - Mred = CSng(VEH.I_Getriebe * (VEH.AchsI / (0.5 * VEH.Dreifen)) ^ 2) + Mred = CSng(GBX.I_Getriebe * (VEH.AchsI / (0.5 * VEH.Dreifen)) ^ 2) Return CSng((Mred * a * V) * 0.001) End Function diff --git a/VECTO/MODcalc/cVh.vb b/VECTO/MODcalc/cVh.vb index af658c6f023f82513a17fda6505a85a136a511ef..ab667bbfcb9ac3c8de15f056fa8e792143df66e1 100644 --- a/VECTO/MODcalc/cVh.vb +++ b/VECTO/MODcalc/cVh.vb @@ -84,7 +84,7 @@ Public Class cVh lV0.Add(DRI.Values(tDriComp.V)(MODdata.tDim + 1)) If DRI.Scycle Then For s = 0 To MODdata.tDim + 1 - lV0ogl.Add(CSng(DRI.VoglS(s)) / 3.6) + lV0ogl.Add(CSng(DRI.VoglS(s))) Next Else lV0ogl.Add(DRI.Values(tDriComp.V)(MODdata.tDim + 1)) @@ -201,18 +201,6 @@ Public Class cVh End If - 'Altitude / distance - L = DRI.Values(tDriComp.Alt) - lAlt0.Add(0) - ls0.Add(lV0(0)) - For s = 1 To MODdata.tDim - If lV0(s) > 0 Then - ls0.Add(ls0(s - 1) + lV0(s)) - lAlt0.Add(L(s)) - End If - Next - iAltDim = ls0.Count - 1 - 'Gear - not Averaged, rather Gear(t) = DRI.Gear(t) If DRI.Gvorg Then L = DRI.Values(tDriComp.Gears) @@ -292,11 +280,11 @@ Public Class cVh v0plus = lV0(t + 1) v = (v0plus + lV0(t)) / 2 - a0 = GEN.aDesMax(v) + a0 = VEC.aDesMax(v) v0plus = lV0(t) + a v = (v0plus + lV0(t)) / 2 - a = GEN.aDesMax(v) + a = VEC.aDesMax(v) Do While Math.Abs(a - a0) > 0.0001 @@ -304,7 +292,7 @@ Public Class cVh v0plus = lV0(t) + a v = (v0plus + lV0(t)) / 2 - a = GEN.aDesMax(v) + a = VEC.aDesMax(v) Loop @@ -327,11 +315,11 @@ Public Class cVh v0 = lV0(t) v = (lV0(t + 1) + v0) / 2 - a0 = GEN.aDesMin(v) + a0 = VEC.aDesMin(v) v0 = lV0(t + 1) - a v = (lV0(t + 1) + v0) / 2 - a = GEN.aDesMin(v) + a = VEC.aDesMin(v) Do While Math.Abs(a - a0) > 0.0001 @@ -339,7 +327,7 @@ Public Class cVh v0 = lV0(t + 1) - a v = (lV0(t + 1) + v0) / 2 - a = GEN.aDesMin(v) + a = VEC.aDesMin(v) Loop diff --git a/VECTO/M_Lese.vb b/VECTO/M_Lese.vb deleted file mode 100644 index 4a62f840d1018f084ceda5e8d5f311c4e80c2812..0000000000000000000000000000000000000000 --- a/VECTO/M_Lese.vb +++ /dev/null @@ -1,235 +0,0 @@ -Imports System.Collections.Generic - -Module M_Lese - - Public Function LESE() As Boolean - Dim AuxEntry As cVEH.cAuxEntry - Dim AuxKV As KeyValuePair(Of String, cVEH.cAuxEntry) - Dim i As Integer - Dim j As Integer - Dim sb As cSubPath - Dim fldgear As Dictionary(Of Integer, String) - Dim fldgFromTo As String() - Dim str As String - - Dim MsgSrc As String - - MsgSrc = "Main/ReadInp" - - '----------------------------- ~GEN~ ----------------------------- - 'Read GEN - If UCase(fEXT(GenFile)) <> ".VECTO" Then - WorkerMsg(tMsgID.Err, "Only .VECTO files are supported in this mode", MsgSrc) - Return False - End If - - GEN = New cGEN - GEN.FilePath = GenFile - - Try - If Not GEN.ReadFile() Then - WorkerMsg(tMsgID.Err, "Cannot read .gen file (" & GenFile & ")", MsgSrc) - Return False - End If - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & GenFile & ")", MsgSrc, GenFile) - Return False - End Try - - If GEN.NoJSON Then WorkerMsg(tMsgID.Warn, "VECTO file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GenFile) - - - 'VECTO: Defaultwerte für Parameter die nicht mehr in der .GEN/.VECTO sind werden beim Einlesen über SetDefault belegt. |@@| VECTO: Default values for the parameters are no longer in GEN/.VECTO but are allocated when Read about SetDefault. - - - CycleFiles.Clear() - For Each sb In GEN.CycleFiles - CycleFiles.Add(sb.FullPath) - Next - - 'Error message in init() - If Not GEN.Init Then Return False - - - '----------------------------- ~VEH~ ----------------------------- - VEH = New cVEH - - 'Read vehicle specifications - If Not GEN.EngOnly Then - VEH.FilePath = GEN.PathVEH - Try - If Not VEH.ReadFile Then Return False - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & GEN.PathVEH & ")", MsgSrc, GEN.PathVEH) - Return False - End Try - - End If - - If VEH.NoJSON Then WorkerMsg(tMsgID.Warn, "Vehicle file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GEN.PathVEH) - - - '----------------------------- ~ENG~ ----------------------------- - ENG = New cENG - ENG.FilePath = GEN.PathENG - Try - If Not ENG.ReadFile Then Return False - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & GEN.PathENG & ")", MsgSrc, GEN.PathENG) - Return False - End Try - - If ENG.NoJSON Then WorkerMsg(tMsgID.Warn, "Engine file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GEN.PathENG) - - - '----------------------------- ~GBX~ ----------------------------- - GBX = New cGBX - - If Not GEN.EngOnly Then - GBX.FilePath = GEN.PathGBX - Try - If Not GBX.ReadFile Then Return False - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & GEN.PathGBX & ")", MsgSrc, GEN.PathGBX) - Return False - End Try - End If - - If GBX.NoJSON Then WorkerMsg(tMsgID.Warn, "Gearbox file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GEN.PathGBX) - - - '----------------------------- VECTO ----------------------------- - 'GEN => VEH - VEH.AuxDef = GEN.AuxDef - If VEH.AuxDef Then - For Each AuxKV In GEN.AuxPaths - AuxEntry = New cVEH.cAuxEntry - AuxEntry.Type = AuxKV.Value.Type - AuxEntry.Path.Init(fPATH(GEN.FilePath), AuxKV.Value.Path.OriginalPath) - VEH.AuxPaths.Add(UCase(Trim(AuxKV.Key)), AuxEntry) - Next - End If - - 'ENG => VEH - VEH.nLeerl = ENG.nleerl - VEH.I_mot = ENG.I_mot - - 'GBX => VEH - If GEN.EngOnly Then - VEH.ganganz = 0 - Else - VEH.ganganz = GBX.GetrI.Count - 1 - End If - - For i = 0 To GBX.GetrI.Count - 1 - VEH.siGetrI.Add(GBX.GetrI(i)) - VEH.GetrMap.Add(New cSubPath) - If IsNumeric(GBX.GetrMap(i, True)) Then - VEH.GetrEffDef.Add(True) - VEH.GetrEff.Add(CSng(GBX.GetrMap(i, True))) - Else - VEH.GetrEffDef.Add(False) - VEH.GetrEff.Add(0) - VEH.GetrMap(i).Init(fPATH(GEN.PathGBX), GBX.GetrMap(i, True)) - End If - Next - VEH.I_Getriebe = GBX.I_Getriebe - VEH.TracIntrSi = GBX.TracIntrSi - - '----------------------------- ~FLD~ ----------------------------- - ' FLD muss jetzt vor MAP/MEP eingelesen werden falls dort <DRAG> Einträge sind! |@@| if there are <DRAG> entries, then read FLD before MAP/MEP! - - FLD = New List(Of cFLD) - - If ENG.FLDgears.Count = 0 Then - WorkerMsg(tMsgID.Err, "No .vfld file defined in Engine file!", MsgSrc, "<GUI>" & GEN.PathENG) - Return False - End If - - fldgear = New Dictionary(Of Integer, String) - - Try - j = -1 - For Each str In ENG.FLDgears - - j += 1 - If str.Contains("-") Then - fldgFromTo = str.Replace(" ", "").Split("-") - Else - fldgFromTo = New String() {str, str} - End If - - For i = CInt(fldgFromTo(0)) To CInt(fldgFromTo(1)) - - If i > VEH.ganganz Then Exit For - - If i < 0 Or i > 99 Then - WorkerMsg(tMsgID.Err, "Cannot assign .vfld file to gear " & i & "!", MsgSrc, "<GUI>" & GEN.PathENG) - Return False - End If - - If fldgear.ContainsKey(i) Then - WorkerMsg(tMsgID.Err, "Multiple .vfld files are assigned to gear " & i & "!", MsgSrc, "<GUI>" & GEN.PathENG) - Return False - End If - - fldgear.Add(i, ENG.PathFLD(j)) - - Next - - Next - Catch ex As Exception - WorkerMsg(tMsgID.Err, "Failed to process engine file '" & GEN.PathENG & "'!", MsgSrc) - Return False - End Try - - - For i = 0 To VEH.ganganz - - If Not fldgear.ContainsKey(i) Then - WorkerMsg(tMsgID.Err, "No .vfld file assigned to gear " & i & "!", MsgSrc, "<GUI>" & GEN.PathENG) - Return False - End If - - FLD.Add(New cFLD) - FLD(i).FilePath = fldgear(i) - - Try - If Not FLD(i).ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & fldgear(i) & ")", MsgSrc, fldgear(i)) - Return False - End Try - - Next - - VEH.nRatedInit() - - - - '----------------------------- ~MAP~ ----------------------------- - ' Map: Columns 1 and 2 are the x-and y-coordinates (Pe, n) - ' the rest are Measurement-values - ' Emissions and Consumption in (g/(h*kW_NominalPower) at HDV(SNF) - ' Emissions (g/h) and consumption in (g/(h*kW_NominalPower) in cars(PKW) and LCV(LNF) - - 'Kennfeld read - MAP = New cMAP - MAP.FilePath = ENG.PathMAP - - Try - If Not MAP.ReadFile Then Return False 'Fehlermeldung hier nicht notwendig weil schon von in ReadFile - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & ENG.PathMAP & ")", MsgSrc, ENG.PathMAP) - Return False - End Try - - 'Normalize - MAP.Norm() - - - Return True - - End Function - -End Module diff --git a/VECTO/M_MAIN.vb b/VECTO/M_MAIN.vb index 2e5be584b0fe5cdbde85c787ab2e5327536ed693..7f4c706cff405fe6b8fef56719caf1698b7a01f7 100644 --- a/VECTO/M_MAIN.vb +++ b/VECTO/M_MAIN.vb @@ -1,5 +1,9 @@ Imports System.Collections.Generic +''' <summary> +''' Main calculation routines. +''' </summary> +''' <remarks></remarks> Module M_MAIN Public PHEMmode As tPHEMmode @@ -18,23 +22,15 @@ Module M_MAIN Private jsubcycle As Integer Private jsubcyclecount As Integer - Public FCerror As Boolean - Private SigFile As String - Friend Function NrOfRunStr() As String - If PHEMmode = tPHEMmode.ModeSTANDARD Then - 'Return CStr(jgen * (CyclesDim + 1) + jzkl + 1) & "-" & CStr(jsubcycle) - Return CStr(jgen * (CyclesDim + 1) + jzkl + 1) & "(" & CStr(jsubcycle) & ")" - Else - Return CStr(jgen * (CyclesDim + 1) + jzkl + 1) - End If - End Function - + ''' <summary> + ''' Main calculation routine. Launched by PHEMworker via Mainform's Start button or command line + ''' </summary> + ''' <returns></returns> + ''' <remarks></remarks> Public Function VECTO() As tCalcResult - 'Main program for all modes - Dim MsgStrBuilder As System.Text.StringBuilder Dim i As Integer @@ -43,6 +39,9 @@ Module M_MAIN Dim CyclAbrtedByErr As Boolean Dim MsgOut As Boolean Dim MsgSrc As String + Dim loading As tLoading + Dim LoadList As New List(Of tLoading) + MsgSrc = "Main" @@ -116,15 +115,23 @@ lbSkip0: 'ERG-class initialization WorkerMsg(tMsgID.Normal, "Analyzing input files", MsgSrc) - ERG = New cERG VSUM = New cVSUM - If Not ERG.Init(JobFileList(0)) Then GoTo lbErrBefore + VRES = New cVRES + If Not VSUM.Init(JobFileList(0)) Then GoTo lbErrBefore - SigFile = Left(ERG.ErgFile, ERG.ErgFile.Length - 5) & ".vsig" + SigFile = Left(VSUM.VSUMfile, VSUM.VSUMfile.Length - 5) & ".vsig" 'Warning on invalid/unrealistic settings If Cfg.AirDensity > 2 Then WorkerMsg(tMsgID.Err, "Air Density = " & Cfg.AirDensity & " ?!", MsgSrc) + If Declaration.Active Then + LoadList.Add(tLoading.EmptyLoaded) + LoadList.Add(tLoading.RefLoaded) + LoadList.Add(tLoading.FullLoaded) + Else + LoadList.Add(tLoading.UserDefLoaded) + End If + 'Progbar-Init WorkerProgInit() @@ -138,11 +145,14 @@ lbSkip0: jzkl = 0 '<= Damit NrOfRun stimmt + JobFile = fFileRepl(JobFileList(jgen)) GenFile = JobFile - WorkerJobStatus(jgen, "running...", tJobStatus.Running) + WorkerMsg(tMsgID.NewJob, "Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True), MsgSrc) + WorkerStatus("Current Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True)) + WorkerJobStatus(jgen, "initialising... ", tJobStatus.Running) JobAbortedByErr = False MSGwarn = 0 @@ -155,13 +165,46 @@ lbSkip0: CurrentCycleFile = "" 'Reading the input files - ' BATCH: Cycle from DRI list - ' ADVANCE: Cycle is not read - If Not LESE() Then + WorkerMsg(tMsgID.Normal, "Reading input files", MsgSrc) + If Not ReadFiles() Then JobAbortedByErr = True GoTo lbNextJob End If + 'WHTC Correction + If Declaration.Active Then + + WorkerMsg(tMsgID.Normal, "WHTC Correction", MsgSrc) + + VEC.EngOnly = True + + MODdata.Init() + + If Not Declaration.WHTCinit Then + JobAbortedByErr = True + GoTo lbNextJob + End If + + MODdata.CycleInit() + + If Not MODdata.Px.Eng_Calc() Then + JobAbortedByErr = True + GoTo lbNextJob + End If + + MODdata.FCcalc(False) + If MODdata.FCerror Then + WorkerMsg(tMsgID.Err, "WHTC FC calculcation failed!", MsgSrc) + JobAbortedByErr = True + GoTo lbNextJob + End If + + Declaration.WHTCcorrCalc() + + VEC.EngOnly = False + + End If + 'BATCH: Create Output-sub-folder If (PHEMmode = tPHEMmode.ModeBATCH) And Cfg.ModOut And Cfg.BATCHoutSubD Then Select Case UCase(Cfg.BATCHoutpath) @@ -198,13 +241,13 @@ lbSkip0: ProgBarCtrl.ProgOverallStartInt = 100 * (jgen * (CyclesDim + 1) + jzkl) / ((FilesDim + 1) * (CyclesDim + 1)) ProgBarCtrl.PgroOverallEndInt = 100 * (jgen * (CyclesDim + 1) + jzkl + 1) / ((FilesDim + 1) * (CyclesDim + 1)) - 'BATCH mode: Cycle from GEN-file but not from DRI list + 'BATCH mode: Cycles from DRI list CycleFiles.Clear() CycleFiles.Add(fFileRepl(JobCycleList(jzkl))) 'Status - WorkerMsg(tMsgID.NewJob, "Job: " & (NrOfRunStr()) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True), MsgSrc) - WorkerStatus("Current Job: " & (NrOfRunStr()) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True)) + WorkerMsg(tMsgID.NewJob, "Cycle: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True), MsgSrc) + WorkerStatus("Current Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CycleFiles(0), True)) WorkerJobStatus(jgen, "running... " & jzkl + 1 & "/" & (CyclesDim + 1), tJobStatus.Running) 'Output name definition @@ -241,6 +284,13 @@ lbSkip0: ProgBarCtrl.ProgJobInt = 0 + If Declaration.Active Then + If Not Declaration.CalcInitCycle(jsubcycle - 1) Then + JobAbortedByErr = True + GoTo lbNextJob + End If + End If + If PHEMmode = tPHEMmode.ModeSTANDARD Then 'ProgBar @@ -249,210 +299,213 @@ lbSkip0: MODdata.ModOutpName = fFileWoExt(JobFile) & "_" & fFILE(CurrentCycleFile, False) - WorkerMsg(tMsgID.NewJob, "Job: " & NrOfRunStr() & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CurrentCycleFile, True), MsgSrc) - WorkerStatus("Current Job: " & NrOfRunStr() & " / " & ((FilesDim + 1) * (CyclesDim + 1)) & " | " & fFILE(JobFile, True) & " | " & fFILE(CurrentCycleFile, True)) + WorkerMsg(tMsgID.NewJob, "Cycle: " & jsubcycle & " / " & jsubcyclecount & " | " & fFILE(CurrentCycleFile, True), MsgSrc) + WorkerStatus("Current Job: " & (jgen * (CyclesDim + 1) + jzkl + 1) & " / " & (FilesDim + 1) & " | " & fFILE(JobFile, True) & " | " & fFILE(CurrentCycleFile, True)) WorkerJobStatus(jgen, "running... " & jsubcycle & "/" & jsubcyclecount, tJobStatus.Running) End If - VSUM.ResetMe() - VSUM.FilePath = MODdata.ModOutpName & ".vres" + VRES.ResetMe() + VRES.FilePath = MODdata.ModOutpName - 'TODO: Loading-loop '***************************** VECTO-loading-loop ********************************* '************************************************************************************** - 'Clean up - MODdata.Init() - - FCerror = False - - 'Read cycle - DRI = New cDRI - DRI.FilePath = CurrentCycleFile - - If Not DRI.ReadFile Then - CyclAbrtedByErr = True - GoTo lbAusg - End If + For Each loading In LoadList - 'Grad to Alt - DRI.GradToAlt() + If Declaration.Active Then - 'Convert v(s) into v(t) (optional) - If DRI.Scycle Then + 'Results filename with loading + MODdata.ModOutpName = fFileWoExt(JobFile) & "_" & fFILE(CurrentCycleFile, False) & "_" & ConvLoading(loading) - MODdata.Vh.SetAlt() + WorkerMsg(tMsgID.NewJob, "Loading: " & ConvLoading(loading), MsgSrc) - If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle (v(s) => v(t))", MsgSrc) + If Not Declaration.CalcInitLoad(loading) Then + JobAbortedByErr = True + GoTo lbNextJob + End If - If Not DRI.ConvStoT() Then - CyclAbrtedByErr = True - GoTo lbAusg End If - End If - 'If first time step is Zero then duplicate first values to start cycle with vehicle standing. - If DRI.Vvorg AndAlso DRI.tDim > 1 AndAlso DRI.Values(tDriComp.V)(0) < 0.0001 AndAlso DRI.Values(tDriComp.V)(1) >= 0.0001 Then - DRI.FirstZero() - End If + 'Clean up + MODdata.Init() - 'Convert to 1Hz (optional) - does not apply to v(s) cycles because timestep is missing - If DRI.Tvorg Then - If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle to 1Hz", MsgSrc) - If Not DRI.ConvTo1Hz() Then - 'Error-notification in DRI.Convert() + 'Read cycle + DRI = New cDRI + DRI.FilePath = CurrentCycleFile + If Not DRI.ReadFile Then CyclAbrtedByErr = True GoTo lbAusg End If - End If - 'De-normalize - DRI.DeNorm() + 'Grad to Alt + DRI.GradToAlt() + 'Convert v(s) into v(t) (optional) + If DRI.Scycle Then + MODdata.Vh.SetAlt() - '---------------------------------------------------------------------------- - '---------------------------------------------------------------------------- - 'Initialize Cycle-specs (Speed, Accel, ...) - MODdata.CycleInit() + If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle (v(s) => v(t))", MsgSrc) - If GEN.EngOnly Then + If Not DRI.ConvStoT() Then + CyclAbrtedByErr = True + GoTo lbAusg + End If + End If - If MsgOut Then WorkerMsg(tMsgID.Normal, "Engine Only Calc", MsgSrc) + 'If first time step is Zero then duplicate first values to start cycle with vehicle standing. + If DRI.Vvorg AndAlso DRI.tDim > 1 AndAlso DRI.Values(tDriComp.V)(0) < 0.0001 AndAlso DRI.Values(tDriComp.V)(1) >= 0.0001 Then + DRI.FirstZero() + End If - 'Rechne .npi-Leistung in Pe und P_clutch um |@@| Expect Npi-Power into Pe and P_clutch - If Not MODdata.Px.Eng_Calc() Then - CyclAbrtedByErr = True - GoTo lbAusg + 'Convert to 1Hz (optional) - does not apply to v(s) cycles because timestep is missing + If DRI.Tvorg Then + If MsgOut Then WorkerMsg(tMsgID.Normal, "Converting cycle to 1Hz", MsgSrc) + If Not DRI.ConvTo1Hz() Then + 'Error-notification in DRI.Convert() + CyclAbrtedByErr = True + GoTo lbAusg + End If End If - Else - 'CAUTION: VehmodeInit() requires information from GEN and DRI! - If Not VEH.VehmodeInit() Then - 'Error-notification within VehmodeInit() - JobAbortedByErr = True - GoTo lbNextJob - End If + '---------------------------------------------------------------------------- + '---------------------------------------------------------------------------- - If Not GBX.GSinit Then - 'Error-notification within GSinit() - JobAbortedByErr = True - GoTo lbNextJob - End If + 'Initialize Cycle-specs (Speed, Accel, ...) + MODdata.CycleInit() - If GBX.TCon Then - If Not GBX.TCinit Then - 'Error-notification within TCinit() - JobAbortedByErr = True - GoTo lbNextJob - End If - End If + If VEC.EngOnly Then - If DEV.PreRun Then + If MsgOut Then WorkerMsg(tMsgID.Normal, "Engine Only Calc", MsgSrc) - If MsgOut Then WorkerMsg(tMsgID.Normal, "Driving Cycle Preprocessing", MsgSrc) - If Not MODdata.Px.PreRun Then + 'Rechne .npi-Leistung in Pe und P_clutch um |@@| Expect Npi-Power into Pe and P_clutch + If Not MODdata.Px.Eng_Calc() Then CyclAbrtedByErr = True GoTo lbAusg End If - If PHEMworker.CancellationPending Then GoTo lbAbort + Else - End If + 'Init auxiliaries + If Not VEC.AuxInit() Then + 'Error-notification within AuxInit() + JobAbortedByErr = True + GoTo lbNextJob + End If - If MsgOut Then WorkerMsg(tMsgID.Normal, "Vehicle Calc", MsgSrc) + 'CAUTION: VehmodeInit() requires information from VECTO and DRI! + If Not VEH.VehmodeInit() Then + 'Error-notification within VehmodeInit() + JobAbortedByErr = True + GoTo lbNextJob + End If - MODdata.Vh.DistCorrInit() + If Not GBX.GSinit Then + 'Error-notification within GSinit() + JobAbortedByErr = True + GoTo lbNextJob + End If - If Not MODdata.Px.Calc() Then - CyclAbrtedByErr = True - GoTo lbAusg - End If + If GBX.TCon Then + If Not GBX.TCinit Then + 'Error-notification within TCinit() + JobAbortedByErr = True + GoTo lbNextJob + End If + End If + If DEV.PreRun Then - If PHEMworker.CancellationPending Then GoTo lbAbort + If MsgOut Then WorkerMsg(tMsgID.Normal, "Driving Cycle Preprocessing", MsgSrc) + If Not MODdata.Px.PreRun Then + CyclAbrtedByErr = True + GoTo lbAusg + End If - 'Calculate CycleKin (for erg/sum, etc.) - MODdata.CylceKin.Calc() + If PHEMworker.CancellationPending Then GoTo lbAbort - End If - '---------------------------------------------------------------------------- - '---------------------------------------------------------------------------- + End If + If MsgOut Then WorkerMsg(tMsgID.Normal, "Vehicle Calc", MsgSrc) - If MsgOut Then WorkerMsg(tMsgID.Normal, "FC Interpolation", MsgSrc) + MODdata.Vh.DistCorrInit() - 'Calculate Raw emissions - If Not MODdata.Em.Raw_Calc() Then - 'If Not DEV.IgnoreFCextrapol Then - ' CyclAbrtedByErr = True - ' WorkerMsg(tMsgID.Normal, "Calculation aborted!", MsgSrc) - ' GoTo lbAusg - 'End If + If Not MODdata.Px.Calc() Then + CyclAbrtedByErr = True + GoTo lbAusg + End If - FCerror = True - End If + If PHEMworker.CancellationPending Then GoTo lbAbort - 'Totals / Averages form - MODdata.Em.SumCalc() + 'Calculate CycleKin (for erg/sum, etc.) + MODdata.CylceKin.Calc() + End If + '---------------------------------------------------------------------------- + '---------------------------------------------------------------------------- - If PHEMworker.CancellationPending Then GoTo lbAbort - '*** second-by-second output *** - If Cfg.ModOut Then - If MsgOut Then WorkerMsg(tMsgID.Normal, "Writing modal output", MsgSrc) - If Not MODdata.Output() Then - CyclAbrtedByErr = True - GoTo lbAusg - End If + If MsgOut Then WorkerMsg(tMsgID.Normal, "FC Interpolation", MsgSrc) - WorkerMsg(tMsgID.Normal, "Modal Results written to: " & fFILE(MODdata.ModOutpName & ".vmod", True), MsgSrc, MODdata.ModOutpName & ".vmod") + 'Calculate FC + MODdata.FCcalc(True) - End If + If PHEMworker.CancellationPending Then GoTo lbAbort + + '*** second-by-second output *** + If Cfg.ModOut Then + If MsgOut Then WorkerMsg(tMsgID.Normal, "Writing modal output", MsgSrc) + If Not MODdata.Output() Then + CyclAbrtedByErr = True + GoTo lbAusg + End If + + WorkerMsg(tMsgID.Normal, "Modal Results written to: " & fFILE(MODdata.ModOutpName & ".vmod", True), MsgSrc, MODdata.ModOutpName & ".vmod") - 'VECTO Output - 'TODO: Loadings... - If Not GEN.EngOnly Then - If Not VSUM.SetVals(tVSUM.UserDefLoaded) Then - CyclAbrtedByErr = True - GoTo lbAusg End If - End If - 'Output for BATCH and ADVANCE + 'VECTO Output + If Not VEC.EngOnly Then + If Not VRES.SetVals(loading) Then + CyclAbrtedByErr = True + GoTo lbAusg + End If + End If + + 'Output for BATCH and ADVANCE lbAusg: - If PHEMworker.CancellationPending Then GoTo lbAbort + If PHEMworker.CancellationPending Then GoTo lbAbort - 'Output in Erg (first Calculation - Initialization & Header) - If Not ERG.AusgERG(NrOfRunStr, fFILE(GenFile, True), fFILE(CurrentCycleFile, True), CyclAbrtedByErr) Then GoTo lbErrInJobLoop + 'VSUM Output (first Calculation - Initialization & Header) + If Not VSUM.AusgVSUM(jgen * (CyclesDim + 1) + jzkl + 1, fFILE(GenFile, True), fFILE(CurrentCycleFile, True), CyclAbrtedByErr) Then GoTo lbErrInJobLoop - 'Data Cleanup - MODdata.CleanUp() + 'Data Cleanup + MODdata.CleanUp() - 'Status-Update - If PHEMmode = tPHEMmode.ModeSTANDARD Then - WorkerProg(100 * (jgen) / (FilesDim + 1) + 100 * jsubcycle / jsubcyclecount * 1 / (FilesDim + 1), 0) - ElseIf PHEMmode = tPHEMmode.ModeBATCH Then - WorkerProg(100 * (jgen * (CyclesDim + 1) + jzkl + 1) / ((FilesDim + 1) * (CyclesDim + 1)), 0) - End If + 'Status-Update + If PHEMmode = tPHEMmode.ModeSTANDARD Then + WorkerProg(100 * (jgen) / (FilesDim + 1) + 100 * jsubcycle / jsubcyclecount * 1 / (FilesDim + 1), 0) + ElseIf PHEMmode = tPHEMmode.ModeBATCH Then + WorkerProg(100 * (jgen * (CyclesDim + 1) + jzkl + 1) / ((FilesDim + 1) * (CyclesDim + 1)), 0) + End If + + Next - 'TODO: Loading Loop '******************** END *** VECTO-loading loop *** END ************************ '************************************************************************************** - If Not GEN.EngOnly Then - If Not VSUM.Output() Then + If Not VEC.EngOnly Then + If Not VRES.Output() Then CyclAbrtedByErr = True - GoTo lbAusg + GoTo lbNextJob End If End If @@ -462,7 +515,6 @@ lbAusg: '****************************************************************************************** - Next '********************************************************************************************** '****************************** END *** Cycle-loop *** END ****************************** @@ -473,9 +525,9 @@ lbNextJob: If JobAbortedByErr Then If CInt(jgen * (CyclesDim + 1) + 1) = CInt((jgen + 1) * (CyclesDim + 1)) Then - ERG.AusgERG(((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True) + VSUM.AusgVSUM(((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True) Else - ERG.AusgERG((jgen * (CyclesDim + 1) + 1).ToString & ".." & ((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True) + VSUM.AusgVSUM((jgen * (CyclesDim + 1) + 1).ToString & ".." & ((jgen + 1) * (CyclesDim + 1)).ToString, fFILE(GenFile, True), "-", True) End If End If @@ -488,9 +540,9 @@ lbNextJob: 'If GEN.irechwahl = tCalcMode.cmHEV Then MsgStrBuilder.Append(" (dSOC = " & SOC(MODdata.tDim) - SOC(0) & ")") 'Add input file list to signature list - If GEN.CreateFileList Then - For i = 0 To GEN.FileList.Count - 1 - Lic.FileSigning.AddFile(GEN.FileList(i)) + If VEC.CreateFileList Then + For i = 0 To VEC.FileList.Count - 1 + Lic.FileSigning.AddFile(VEC.FileList(i)) Next Else WorkerMsg(tMsgID.Err, "Could not create file list for signing!", MsgSrc) @@ -523,17 +575,16 @@ lbNextJob: '******************************* END *** Job loop *** END ******************************* '********************************************************************************************** - WorkerMsg(tMsgID.Normal, "Summary Results written to: " & fFILE(ERG.ErgFile, True), MsgSrc, ERG.ErgFile) + WorkerMsg(tMsgID.Normal, "Summary Results written to: " & fFILE(VSUM.VSUMfile, True), MsgSrc, VSUM.VSUMfile) 'JSON Erg Output - If Cfg.JSON Then - If ERG.WriteJSON() Then - WorkerMsg(tMsgID.Normal, "Summary Results (JSON) written to: " & fFILE(ERG.ErgFile & ".json", True), MsgSrc, ERG.ErgFile & ".json") - Else - WorkerMsg(tMsgID.Err, "Failed to write JSON Summary Results!", MsgSrc) - End If + If VSUM.WriteJSON() Then + WorkerMsg(tMsgID.Normal, "Summary Results (JSON) written to: " & fFILE(VSUM.VSUMfile & ".json", True), MsgSrc, VSUM.VSUMfile & ".json") + Else + WorkerMsg(tMsgID.Err, "Failed to write JSON Summary Results!", MsgSrc) End If + 'Write file signatures WorkerMsg(tMsgID.Normal, "Signing files", MsgSrc) Lic.FileSigning.Mode = vectolic.cFileSigning.tMode.Auto @@ -585,19 +636,157 @@ lbAbort: MODdata.CleanUp() lbExit: - GEN = Nothing + VEC = Nothing VEH = Nothing FLD = Nothing MAP = Nothing DRI = Nothing MODdata = Nothing - ERG = Nothing + VSUM = Nothing ENG = Nothing GBX = Nothing End Function + Public Function ReadFiles() As Boolean + Dim i As Integer + Dim sb As cSubPath + + + Dim MsgSrc As String + + MsgSrc = "Main/ReadInp" + + '----------------------------- ~GEN~ ----------------------------- + 'Read GEN + If UCase(fEXT(GenFile)) <> ".VECTO" Then + WorkerMsg(tMsgID.Err, "Only .VECTO files are supported in this mode", MsgSrc) + Return False + End If + + VEC = New cVECTO + VEC.FilePath = GenFile + + Try + If Not VEC.ReadFile() Then + WorkerMsg(tMsgID.Err, "Cannot read .gen file (" & GenFile & ")", MsgSrc) + Return False + End If + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & GenFile & ")", MsgSrc, GenFile) + Return False + End Try + + If VEC.NoJSON Then WorkerMsg(tMsgID.Warn, "VECTO file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & GenFile) + + + '----------------------------- ~VEH~ ----------------------------- + VEH = New cVEH + + 'Read vehicle specifications + If Not VEC.EngOnly Then + VEH.FilePath = VEC.PathVEH + Try + If Not VEH.ReadFile Then Return False + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & VEC.PathVEH & ")", MsgSrc, VEC.PathVEH) + Return False + End Try + + End If + + If VEH.NoJSON Then WorkerMsg(tMsgID.Warn, "Vehicle file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & VEC.PathVEH) + + If Declaration.Active Then + If Not Declaration.SetRef() Then + WorkerMsg(tMsgID.Err, "Vehicle Configuration not found in Segment Table!", MsgSrc) + Return False + End If + End If + + + If Declaration.Active Then VEC.DeclInit() + + + CycleFiles.Clear() + For Each sb In VEC.CycleFiles + CycleFiles.Add(sb.FullPath) + Next + + 'Error message in init() + If Not VEC.Init Then Return False + + + + '----------------------------- ~ENG~ ----------------------------- + ENG = New cENG + ENG.FilePath = VEC.PathENG + Try + If Not ENG.ReadFile Then Return False + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & VEC.PathENG & ")", MsgSrc, VEC.PathENG) + Return False + End Try + + If ENG.NoJSON Then WorkerMsg(tMsgID.Warn, "Engine file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & VEC.PathENG) + + If Declaration.Active Then ENG.DeclInit() + + + '----------------------------- ~GBX~ ----------------------------- + GBX = New cGBX + + If Not VEC.EngOnly Then + GBX.FilePath = VEC.PathGBX + Try + If Not GBX.ReadFile Then Return False + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & VEC.PathGBX & ")", MsgSrc, VEC.PathGBX) + Return False + End Try + End If + + If GBX.NoJSON Then WorkerMsg(tMsgID.Warn, "Gearbox file format is outdated! CLICK HERE to convert to current format!", MsgSrc, "<GUI>" & VEC.PathGBX) + + + + '----------------------------- VECTO ----------------------------- + + 'GBX => VEH + For i = 0 To GBX.GetrI.Count - 1 + VEH.siGetrI.Add(GBX.GetrI(i)) + VEH.GetrMap.Add(New cSubPath) + If IsNumeric(GBX.GetrMap(i, True)) Then + VEH.GetrEffDef.Add(True) + VEH.GetrEff.Add(CSng(GBX.GetrMap(i, True))) + Else + VEH.GetrEffDef.Add(False) + VEH.GetrEff.Add(0) + VEH.GetrMap(i).Init(fPATH(VEC.PathGBX), GBX.GetrMap(i, True)) + End If + Next + + ENG.Init() + + + '----------------------------- ~FLD~ ----------------------------- + 'Now in cENG.Init + + + '----------------------------- ~MAP~ ----------------------------- + 'Now in cENG.Init + + 'Must be after ENG.Init() + If Declaration.Active Then GBX.DeclInit() + + + + Return True + + End Function + + '--------------------------------------------------------------------------- diff --git a/VECTO/VECTO.vbproj b/VECTO/VECTO.vbproj index 912f7887ed85bc55a5fb9e4e542960dc3610766d..727a5fb7cb421e20fb44ceafce1b1b4e783b3fa9 100644 --- a/VECTO/VECTO.vbproj +++ b/VECTO/VECTO.vbproj @@ -82,6 +82,9 @@ <CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules> </PropertyGroup> <ItemGroup> + <Reference Include="itextsharp"> + <HintPath>..\Third Party Libraries\itextsharp\itextsharp.dll</HintPath> + </Reference> <Reference Include="Newtonsoft.Json"> <HintPath>..\Third Party Libraries\JSON.Net\Bin\Net40\Newtonsoft.Json.dll</HintPath> </Reference> @@ -110,8 +113,8 @@ <ItemGroup> <Compile Include="ApplicationEvents.vb" /> <Compile Include="cJSONparser.vb" /> - <Compile Include="cVECTO.vb" /> - <Compile Include="cVSUM.vb" /> + <Compile Include="cDeclaration.vb" /> + <Compile Include="cVRES.vb" /> <Compile Include="GUI\F_FileSign.Designer.vb"> <DependentUpon>F_FileSign.vb</DependentUpon> </Compile> @@ -166,10 +169,8 @@ <Compile Include="cConfig.vb" /> <Compile Include="cDelaunayMap.vb" /> <Compile Include="cDEV.vb" /> - <Compile Include="cEmComp.vb" /> <Compile Include="File Browser\cFileBrowser.vb" /> <Compile Include="MODcalc\cVh.vb" /> - <Compile Include="MODcalc\Em Calc.vb" /> <Compile Include="File Browser\FB_Dialog.designer.vb"> <DependentUpon>FB_Dialog.vb</DependentUpon> </Compile> @@ -187,7 +188,7 @@ <Compile Include="Input Files\cFLD.vb" /> <Compile Include="Input Files\cMAP.vb" /> <Compile Include="Input Files\cDRI.vb" /> - <Compile Include="Input Files\cGEN.vb" /> + <Compile Include="Input Files\cVECTO.vb" /> <Compile Include="Input Files\cVEH.vb" /> <Compile Include="GUI\F_VEH_GearDlog.Designer.vb"> <DependentUpon>F_VEH_GearDlog.vb</DependentUpon> @@ -202,10 +203,10 @@ <Compile Include="GUI\F_ShutDown.vb"> <SubType>Form</SubType> </Compile> - <Compile Include="GUI\F_GEN.Designer.vb"> - <DependentUpon>F_GEN.vb</DependentUpon> + <Compile Include="GUI\F_VECTO.Designer.vb"> + <DependentUpon>F_VECTO.vb</DependentUpon> </Compile> - <Compile Include="GUI\F_GEN.vb"> + <Compile Include="GUI\F_VECTO.vb"> <SubType>Form</SubType> </Compile> <Compile Include="cFile V3.vb" /> @@ -231,9 +232,8 @@ <Compile Include="GUI\F_AboutBox.vb"> <SubType>Form</SubType> </Compile> - <Compile Include="M_Lese.vb" /> <Compile Include="M_MAIN.vb" /> - <Compile Include="cERG.vb" /> + <Compile Include="cVSUM.vb" /> <Compile Include="GUI\F_MAINForm.vb"> <SubType>Form</SubType> </Compile> @@ -285,9 +285,9 @@ <SubType>Designer</SubType> <DependentUpon>F_MAINForm.vb</DependentUpon> </EmbeddedResource> - <EmbeddedResource Include="GUI\F_GEN.resx"> + <EmbeddedResource Include="GUI\F_VECTO.resx"> <SubType>Designer</SubType> - <DependentUpon>F_GEN.vb</DependentUpon> + <DependentUpon>F_VECTO.vb</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="GUI\F_ShutDown.resx"> <SubType>Designer</SubType> diff --git a/VECTO/VECTO_Global.vb b/VECTO/VECTO_Global.vb index 9494f0733a23fe8c885b29bf6751a4224554e68d..4195413bdb8a47830e29ffb071270018f707496e 100644 --- a/VECTO/VECTO_Global.vb +++ b/VECTO/VECTO_Global.vb @@ -27,21 +27,21 @@ Module VECTO_Global Public LOGfile As System.IO.StreamWriter - Public GEN As cGEN + Public VEC As cVECTO Public VEH As cVEH Public MAP As cMAP Public DRI As cDRI Public FLD As List(Of cFLD) Public MODdata As cMOD Public Lic As vectolic.cLicense - Public ERG As cERG + Public VSUM As cVSUM Public DEV As cDEV Public ENG As cENG Public GBX As cGBX - Public VSUM As cVSUM + Public VRES As cVRES - Public VEC As cVECTO + Public Declaration As cDeclaration Public ProgBarCtrl As cProgBarCtrl @@ -93,25 +93,6 @@ Module VECTO_Global End Select End Function - Public Function fExsComp(ByVal sK As String) As tExsComp - Dim x As Integer - sK = Trim(UCase(sK)) - - x = sK.IndexOf("_") - - If x = -1 Then Return tExsComp.Undefined - - sK = Left(sK, x + 1) - - Select Case sK - Case sKey.EXS.Tgas - Return tExsComp.Tgas - Case Else - Return tExsComp.Undefined - End Select - - End Function - Public Function fAuxComp(ByVal sK As String) As tAuxComp Dim x As Integer sK = Trim(UCase(sK)) @@ -131,83 +112,6 @@ Module VECTO_Global End Function - Public Function fMapComp(ByVal sK As String) As tMapComp - sK = Trim(UCase(sK)) - Select Case sK - Case sKey.MAP.FC - Return tMapComp.FC - Case sKey.MAP.NOx - Return tMapComp.NOx - Case sKey.MAP.HC - Return tMapComp.HC - Case sKey.MAP.CO - Return tMapComp.CO - Case sKey.MAP.PM - Return tMapComp.PM - Case sKey.MAP.PN - Return tMapComp.PN - Case sKey.MAP.NO - Return tMapComp.NO - Case sKey.MAP.MassF - Return tMapComp.MassFlow - Case sKey.MAP.Lambda - Return tMapComp.Lambda - Case sKey.MAP.Temp - Return tMapComp.ExhTemp - Case sKey.MAP.Qp_coolant - Return tMapComp.Qp_coolant - Case sKey.MAP.dP2s - Return tMapComp.TCdP2s - Case sKey.MAP.Pneg3s - Return tMapComp.TCPneg3s - Case sKey.MAP.Ppos3s - Return tMapComp.TCPpos3s - Case sKey.MAP.Ampl3s - Return tMapComp.TCAmpl3s - Case sKey.MAP.LW3p3s - Return tMapComp.TCLW3p3s - Case sKey.MAP.P40sABS - Return tMapComp.TCP40sABS - Case sKey.MAP.absdn2s - Return tMapComp.TCabsdn2s - Case sKey.MAP.P10sn10s3 - Return tMapComp.TCP10sn10s3 - Case sKey.MAP.dynV - Return tMapComp.TCdynV - Case sKey.MAP.dynAV - Return tMapComp.TCdynAV - Case sKey.MAP.dynDAV - Return tMapComp.TCdynDAV - Case sKey.MAP.Extrapol - Return tMapComp.Extrapol - Case sKey.MAP.Eta - Return tMapComp.Eta - Case Else - Return tMapComp.Undefined - End Select - End Function - - Public Function fFldComp(ByVal sK As String) As tFldComp - sK = Trim(UCase(sK)) - Select Case sK - Case sKey.FLD.PeTarget - Return tFldComp.PeTarget - Case sKey.FLD.PT1 - Return tFldComp.PT1 - Case Else - Return tMapComp.Undefined - End Select - End Function - - Public Function fMapCompIsTC(ByVal ID As tMapComp) As Boolean - Select Case ID - Case tMapComp.TCPpos3s, tMapComp.TCPneg3s, tMapComp.TCAmpl3s, tMapComp.TCdP2s, tMapComp.TCP10sn10s3, tMapComp.TCP40sABS, tMapComp.TCabsdn2s, tMapComp.TCLW3p3s, tMapComp.TCdynV, tMapComp.TCdynAV, tMapComp.TCdynDAV - Return True - Case Else - Return False - End Select - End Function - Public Function fCompSubStr(ByVal sK As String) As String Dim x As Integer @@ -233,77 +137,62 @@ Module VECTO_Global #End Region -#Region "Typ > Name Umwandlung" - - Public Function fMapCompName(ByVal ID As tMapComp) As String - Select Case ID - Case tMapComp.CO - Return "CO" - Case tMapComp.Eta - Return "Eta" - Case tMapComp.ExhTemp - Return "ExhTemp" - Case tMapComp.Extrapol - Return "Extrapolation" - Case tMapComp.FC - Return "FC" - Case tMapComp.HC - Return "HC" - Case tMapComp.Lambda - Return "Lambda" - Case tMapComp.MassFlow - Return "MassFlow" - Case tMapComp.NO - Return "NO" - Case tMapComp.NOx - Return "NOx" - Case tMapComp.PM - Return "PM" - Case tMapComp.PN - Return "PN" - Case tMapComp.TCPpos3s - Return "dyn_Ppos3s" - Case tMapComp.TCPneg3s - Return "dyn_Pneg3s" - Case tMapComp.TCAmpl3s - Return "Ampl3s" - Case tMapComp.TCdP2s - Return "dP_2s" - Case tMapComp.TCP10sn10s3 - Return "P10s_n10s3" - Case tMapComp.TCP40sABS - Return "P40sABS" - Case tMapComp.TCabsdn2s - Return "abs_dn2s" - Case tMapComp.TCLW3p3s - Return "LW3p3s" - Case tMapComp.TCdynV - Return "dynV" - Case tMapComp.TCdynAV - Return "dynAV" - Case tMapComp.TCdynDAV - Return "dynDAV" - Case tMapComp.Qp_coolant - Return "Qp_coolant" - Case Else - Return "fMapCompName() ERROR" +#Region "Typ > Name Conversion" + + Public Function ConvLoading(ByVal load As tLoading) As String + Select Case load + Case tLoading.FullLoaded + Return "Full Loading" + + Case tLoading.RefLoaded + Return "Reference Loading" + + Case tLoading.EmptyLoaded + Return "Empty Loading" + + Case Else ' tLoading.UserDefLoaded + Return "User-defined Loading" + End Select End Function - Public Function fPwCorName(ByVal PCmode As tIntpPeCorMode) As String - Select Case PCmode - Case tIntpPeCorMode.PeCorEmDrag - Return "PeCorEmDrag" - Case tIntpPeCorMode.PeCorNull - Return "PeCorNull" - Case tIntpPeCorMode.PeCorNullPmin - Return "PeCorNullPmin" - Case Else 'tIntpPeCorMode.PeCorOff - Return "Off" + + + Public Function ConvVehCat(ByVal VehCat As tVehCat) As String + Select Case VehCat + Case tVehCat.Citybus + Return "Citybus" + Case tVehCat.Coach + Return "Coach" + Case tVehCat.InterurbanBus + Return "InterurbanBus" + Case tVehCat.RigidTruck + Return "RigidTruck" + Case tVehCat.Tractor + Return "Tractor" + Case Else ' tVehCat.Undef + Return "not defined" End Select End Function - Public Function fAxleConfName(ByVal AxleConf As tAxleConf) As String + Public Function ConvVehCat(ByVal VehCat As String) As tVehCat + Select Case UCase(Trim(VehCat)) + Case "CITYBUS" + Return tVehCat.Citybus + Case "COACH" + Return tVehCat.Coach + Case "INTERURBANBUS" + Return tVehCat.InterurbanBus + Case "RIGIDTRUCK" + Return tVehCat.RigidTruck + Case "TRACTOR" + Return tVehCat.Tractor + Case Else + Return tVehCat.Undef + End Select + End Function + + Public Function ConvAxleConf(ByVal AxleConf As tAxleConf) As String Select Case AxleConf Case tAxleConf.a4x2 Return "4x2" @@ -321,11 +210,136 @@ Module VECTO_Global Return "8x4" Case tAxleConf.a8x6 Return "8x6" - Case Else ' tAxleConf.a8x8 + Case Else 'tAxleConf.a8x8 Return "8x8" End Select End Function + Public Function ConvAxleConf(ByVal AxleConf As String) As tAxleConf + Select Case UCase(Trim(AxleConf)) + Case "4X2" + Return tAxleConf.a4x2 + Case "4X4" + Return tAxleConf.a4x4 + Case "6X2" + Return tAxleConf.a6x2 + Case "6X4" + Return tAxleConf.a6x4 + Case "6X6" + Return tAxleConf.a6x6 + Case "8X2" + Return tAxleConf.a8x2 + Case "8X4" + Return tAxleConf.a8x4 + Case "8X6" + Return tAxleConf.a8x6 + Case Else '"8X8" + Return tAxleConf.a8x8 + End Select + End Function + + Public Function ConvMission(ByVal Mission As tMission) As String + Select Case Mission + Case tMission.LongHaul + Return "LongHaul" + Case tMission.RegionalDelivery + Return "RegionalDelivery" + Case tMission.UrbanDelivery + Return "UrbanDelivery" + Case tMission.MunicipalUtility + Return "MunicipalUtility" + Case tMission.Construction + Return "Construction" + Case tMission.HeavyUrban + Return "HeavyUrban" + Case tMission.Urban + Return "Urban" + Case tMission.Suburban + Return "Suburban" + Case tMission.Interurban + Return "Interurban" + Case tMission.Coach + Return "Coach" + Case Else + Return "not defined" + End Select + End Function + + Public Function ConvMission(ByVal Mission As String) As tMission + Select Case Mission + Case "LongHaul" + Return tMission.LongHaul + Case "RegionalDelivery" + Return tMission.RegionalDelivery + Case "UrbanDelivery" + Return tMission.UrbanDelivery + Case "MunicipalUtility" + Return tMission.MunicipalUtility + Case "Construction" + Return tMission.Construction + Case "HeavyUrban" + Return tMission.HeavyUrban + Case "Urban" + Return tMission.Urban + Case "Suburban" + Return tMission.Suburban + Case "Interurban" + Return tMission.Interurban + Case "Coach" + Return tMission.Coach + Case Else + Return tMission.Undef + End Select + End Function + + + + Public Function CdModeConv(ByVal CdMode As tCdMode) As String + Select Case CdMode + Case tCdMode.CdOfBeta + Return "CdOfBeta" + Case tCdMode.CdOfV + Return "CdOfV" + Case Else 'tCdMode.ConstCd0 + Return "Off" + End Select + End Function + + Public Function CdModeConv(ByVal CdMode As String) As tCdMode + Select Case UCase(Trim(CdMode)) + Case "CDOFBETA" + Return tCdMode.CdOfBeta + Case "CDOFV" + Return tCdMode.CdOfV + Case Else '"OFF" + Return tCdMode.ConstCd0 + End Select + End Function + + + + Public Function RtTypeConv(ByVal RtType As tRtType) As String + Select Case RtType + Case tRtType.Primary + Return "Primary" + Case tRtType.Secondary + Return "Secondary" + Case Else 'tRtType.None + Return "None" + End Select + End Function + + Public Function RtTypeConv(ByVal RtType As String) As tRtType + Select Case UCase(Trim(RtType)) + Case "PRIMARY" + Return tRtType.Primary + Case "SECONDARY" + Return tRtType.Secondary + Case Else '"NONE" + Return tRtType.None + End Select + End Function + #End Region @@ -345,11 +359,7 @@ End Module Public Class csKey - Public MAP As csKeyMAP Public DRI As csKeyDRI - Public EXS As csKeyEXS - Public HEV As csKeyHEV - Public FLD As csKeyFLD Public WorkDir As String = "<WORKDIR>" Public HomePath As String = "<HOME>" @@ -363,42 +373,12 @@ Public Class csKey Public PauxSply As String = "<AUX_" + Public EngDrag As String = "<DRAG>" + Public Sub New() - MAP = New csKeyMAP DRI = New csKeyDRI - EXS = New csKeyEXS - HEV = New csKeyHEV - FLD = New csKeyFLD End Sub - Public Class csKeyMAP - Public FC As String = "<FC>" - Public NOx As String = "<NOX>" - Public HC As String = "<HC>" - Public CO As String = "<CO>" - Public PM As String = "<PM>" - Public PN As String = "<PN>" - Public NO As String = "<NO>" - Public MassF As String = "<MASSFLOW>" - Public Lambda As String = "<LAMBDA>" - Public Temp As String = "<TEMP>" - Public Qp_coolant As String = "<QP_COOLANT>" - Public dP2s As String = "<DP2S>" - Public Pneg3s As String = "<PNEG3S>" - Public Ppos3s As String = "<PPOS3S>" - Public Ampl3s As String = "<AMPL3S>" - Public LW3p3s As String = "<LW3P3S>" - Public P40sABS As String = "<P40SABS>" - Public absdn2s As String = "<ABSDN2S>" - Public P10sn10s3 As String = "<P10SN10S3>" - Public dynV As String = "<DYNV>" - Public dynAV As String = "<DYNAV>" - Public dynDAV As String = "<DYNDAV>" - Public Extrapol As String = "<E>" - Public Drag As String = "<DRAG>" - Public Eta As String = "<ETA>" - End Class - Public Class csKeyDRI Public t As String = "<T>" Public V As String = "<V>" @@ -415,20 +395,6 @@ Public Class csKey Public Torque As String = "<ME>" End Class - Public Class csKeyEXS - Public Tgas As String = "<TGAS_" - End Class - - Public Class csKeyHEV - Public EtaMap As String = "<MAP>" - End Class - - Public Class csKeyFLD - Public PT1 As String = "<PT1>" - Public PeTarget As String = "<PETARGET>" - End Class - - End Class diff --git a/VECTO/VECTO_Types.vb b/VECTO/VECTO_Types.vb index 7a42b6e7d15d722628ea7ac3ec965f32ee952e4c..df001456049d44f0022202eab3e002ba505314bc 100644 --- a/VECTO/VECTO_Types.vb +++ b/VECTO/VECTO_Types.vb @@ -48,45 +48,6 @@ Public Enum tJobStatus Undef End Enum - - -Public Enum tEmNorm - x_h - x_hPnenn - x_kWh - x -End Enum - -#Region "Input File Components" - -Public Enum tMapComp - FC - NOx - HC - CO - PM - PN - NO - MassFlow - ExhTemp - Lambda - TCdP2s - TCPneg3s - TCPpos3s - TCAmpl3s - TCLW3p3s - TCP40sABS - TCabsdn2s - TCP10sn10s3 - TCdynV - TCdynAV - TCdynDAV - Undefined - Extrapol - Eta - Qp_coolant -End Enum - Public Enum tDriComp t V @@ -104,26 +65,6 @@ Public Enum tDriComp Torque End Enum -Public Enum tExsComp - Tgas - Undefined -End Enum - -Public Enum tFldComp - PeTarget - PT1 - Undefined -End Enum - -#End Region - -Public Enum tIntpPeCorMode - PeCorOff - PeCorNull - PeCorEmDrag - PeCorNullPmin -End Enum - Public Enum tVehState Cruise Acc @@ -138,6 +79,7 @@ Public Enum tEngState Load FullLoad Stopped + Undef End Enum Public Enum tEngClutch @@ -171,17 +113,13 @@ Public Enum tGearbox End Enum - - -#Region "VECTO Classifications" - - Public Enum tVehCat As Integer - Rigid = 0 + RigidTruck = 0 Tractor = 1 Citybus = 2 InterurbanBus = 3 Coach = 4 + Undef = 99 End Enum Public Enum tAxleConf As Integer @@ -194,68 +132,38 @@ Public Enum tAxleConf As Integer a8x4 = 6 a8x6 = 7 a8x8 = 8 + Undef = 99 End Enum -Public Enum tVSUM +Public Enum tLoading FullLoaded EmptyLoaded RefLoaded UserDefLoaded End Enum -Public Enum tVECTOmode - Declaration - ProofOfConcept -End Enum - Public Enum tMission - LongHaul = 0 - RegionalDelivery = 1 - UrbanDelivery = 2 - MunicipalUtility = 3 - Construction = 4 - HeavyUrban = 5 - Urban = 6 - Suburban = 7 - Interurban = 8 - Coach = 9 -End Enum - -#End Region - - - - - - - -#Region "HEV" - -Public Enum tBatLvl - OK - Low - High - Full - Empty + LongHaul + RegionalDelivery + UrbanDelivery + MunicipalUtility + Construction + HeavyUrban + Urban + Suburban + Interurban + Coach + Undef End Enum -Public Enum tICElock - OnLock - OffLock - NoLock +Public Enum tWHTCpart + Urban + Rural + Motorway End Enum -Public Enum tHEVparMode - Assist - LPI - EV - ICEonly - Rekup - Undefined -End Enum -#End Region diff --git a/VECTO/cConfig.vb b/VECTO/cConfig.vb index 84b2f152e086bf85af4fb894ce52172b7df253ca..32bd3947bc37989ede1e7b43440916e20ac5d7ec 100644 --- a/VECTO/cConfig.vb +++ b/VECTO/cConfig.vb @@ -12,8 +12,6 @@ Public BATCHoutSubD As Boolean Public WegKorJa As Boolean Public LogSize As Single - Public FZPsort As Boolean - Public FZPsortExp As Boolean Public AirDensity As Single Public OpenCmd As String Public OpenCmdName As String @@ -21,14 +19,18 @@ Public FuelDens As Single Public CO2perFC As Single - Public JSON As Boolean - Public FirstRun As Boolean Public Sub New() SetDefault() End Sub + Public Sub DeclInit() + AirDensity = cDeclaration.AirDensity + FuelDens = cDeclaration.FuelDens + CO2perFC = cDeclaration.CO2perFC + End Sub + Public Function ConfigLOAD() As Boolean Dim c As New cFile_V3 Dim line As String() @@ -89,11 +91,11 @@ GnVorgab = CBool(c.ReadLine(0)) - LogSize = CSng(c.ReadLine(0)) + c.ReadLine() - FZPsort = CBool(c.ReadLine(0)) + c.ReadLine() - FZPsortExp = CBool(c.ReadLine(0)) + LogSize = CSng(c.ReadLine(0)) BATCHoutpath = Trim(c.ReadLine(0)) @@ -116,10 +118,6 @@ FirstRun = CBool(c.ReadLine(0)) - If c.EndOfFile Then GoTo lbDone - - JSON = CBool(c.ReadLine(0)) - lbDone: @@ -144,8 +142,6 @@ lbEr: BATCHoutSubD = False WegKorJa = True LogSize = 2 - FZPsort = True - FZPsortExp = False AirDensity = 1.2 OpenCmd = "notepad" OpenCmdName = "Notepad" @@ -157,8 +153,6 @@ lbEr: FirstRun = True - JSON = True - End Sub Public Sub ConfigSAVE() @@ -195,10 +189,10 @@ lbEr: c.WriteLine(Math.Abs(CInt(GnVorgab))) c.WriteLine("c Log file size limit [MB]") c.WriteLine(LogSize) - c.WriteLine("c ADVANCE Sort .fzp file 1/0") - c.WriteLine(Math.Abs(CInt(FZPsort))) - c.WriteLine("c ADVANCE Export sorted .fzp file 1/0") - c.WriteLine(Math.Abs(CInt(FZPsortExp))) + c.WriteLine("c NOT USED") + c.WriteLine("0") + c.WriteLine("c NOT USED") + c.WriteLine("0") c.WriteLine("c BATCH Output Path") c.WriteLine(BATCHoutpath) c.WriteLine("c BATCH Sub Dir Output 1/0") @@ -220,10 +214,6 @@ lbEr: c.WriteLine("c First Run (Show Quick Start Guide Prompt)") c.WriteLine(Math.Abs(CInt(FirstRun))) - c.WriteLine("c In- and Output in JSON format") - c.WriteLine(Math.Abs(CInt(JSON))) - - c.Close() c = Nothing End Sub diff --git a/VECTO/cCycleKin.vb b/VECTO/cCycleKin.vb index cdf40763124974999ad28b785e163378e8d7cea8..e55cef4a70ee8974cf7a0459fe1c2be95e3ffe70 100644 --- a/VECTO/cCycleKin.vb +++ b/VECTO/cCycleKin.vb @@ -24,18 +24,18 @@ Public Class cCycleKin Private aNeg0 As Single Private AccNoise0 As Single - Private MyErgEntries As List(Of cErgEntry) + Private MyVSUMentries As List(Of cVSUMentry) Public Sub New() - MyErgEntries = New List(Of cErgEntry) - MyErgEntries.Add(New cErgEntry("a", "[m/s^2]")) - MyErgEntries.Add(New cErgEntry("a_pos", "[m/s^2]")) - MyErgEntries.Add(New cErgEntry("a_neg", "[m/s^2]")) - MyErgEntries.Add(New cErgEntry("Acc.Noise", "[m/s^2]")) - MyErgEntries.Add(New cErgEntry("pAcc", "[%]")) - MyErgEntries.Add(New cErgEntry("pDec", "[%]")) - MyErgEntries.Add(New cErgEntry("pCruise", "[%]")) - MyErgEntries.Add(New cErgEntry("pStop", "[%]")) + MyVSUMentries = New List(Of cVSUMentry) + MyVSUMentries.Add(New cVSUMentry("a", "[m/s^2]")) + MyVSUMentries.Add(New cVSUMentry("a_pos", "[m/s^2]")) + MyVSUMentries.Add(New cVSUMentry("a_neg", "[m/s^2]")) + MyVSUMentries.Add(New cVSUMentry("Acc.Noise", "[m/s^2]")) + MyVSUMentries.Add(New cVSUMentry("pAcc", "[%]")) + MyVSUMentries.Add(New cVSUMentry("pDec", "[%]")) + MyVSUMentries.Add(New cVSUMentry("pCruise", "[%]")) + MyVSUMentries.Add(New cVSUMentry("pStop", "[%]")) End Sub Public Function ValLine() As String @@ -129,9 +129,9 @@ Public Class cCycleKin End Sub - Public ReadOnly Property ErgEntries As List(Of cErgEntry) + Public ReadOnly Property VSUMentries As List(Of cVSUMentry) Get - Return MyErgEntries + Return MyVSUMentries End Get End Property diff --git a/VECTO/cDeclaration.vb b/VECTO/cDeclaration.vb new file mode 100644 index 0000000000000000000000000000000000000000..c12c4e8911cc2f71c55b095966f49bd8a5637779 --- /dev/null +++ b/VECTO/cDeclaration.vb @@ -0,0 +1,542 @@ +Imports System.Collections.Generic + +Public Class cDeclaration + Public Active As Boolean + Public CurrentMission As cMission + Public Missions As Dictionary(Of tMission, cMission) + Public SegmentTable As cSegmentTable + Public SegRef As cSegmentTableEntry + + Public Const SSspeed As Single = 5 + Public Const SStime As Single = 5 + Public Const SSdelay As Single = 5 + Public Const LACa As Single = -0.5 + Public Const LACvmin As Single = 50 + + Public Const TqResv As Single = 20 + Public Const TqResvStart As Single = 20 + Public Const StartSpeed As Single = 2 + Public Const StartAcc As Single = 0.6 + Public Const GbInertia As Single = 0 + + Public Const RRCTr As Single = 0.00555 + Public Const FzISOTr As Single = 37500 + + Public Const AirDensity As Single = 1.17 'HILS Default Silberholz + Public Const FuelDens As Single = 0.832 + Public Const CO2perFC As Single = 3.16 + + Public WHTCresults As Dictionary(Of tWHTCpart, Single) + + Public Sub New() + Active = True + End Sub + + Public Function Init() As Boolean + + Dim file As New cFile_V3 + Dim mc0 As cMission + Dim mt0 As tMission + Dim ste0 As cSegmentTableEntry + Dim line As String() + Dim i As Integer + Dim a As Integer + Dim s0 As String + Dim s As String() + Dim TrS As Single + Dim TrA As Single + + Dim BodyTrWeightList As List(Of String) + Dim LoadingList As List(Of String) + Dim AxleShares As List(Of String) + Dim AxleSharesTr As List(Of String) + Dim l0 As List(Of Single) + Dim WHTCWF As List(Of String) + Dim dWHTCWF As Dictionary(Of tWHTCpart, Single) + + 'Initialize + Missions = New Dictionary(Of tMission, cMission) + SegmentTable = New cSegmentTable + + If Not IO.Directory.Exists(MyDeclPath) Then + GUImsg(tMsgID.Err, "Failed to load Declaration Config!") + Return False + End If + + 'Init Missionlist + mc0 = New cMission + mc0.MissionID = tMission.LongHaul + mc0.NameStr = "Long Haul" + mc0.CyclePath = MyDeclPath & "MissionCycles\Long_Haul.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.RegionalDelivery + mc0.NameStr = "Regional Delivery" + mc0.CyclePath = MyDeclPath & "MissionCycles\Regional_Delivery.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.UrbanDelivery + mc0.NameStr = "Urban Delivery" + mc0.CyclePath = MyDeclPath & "MissionCycles\Urban_Delivery.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.MunicipalUtility + mc0.NameStr = "Municipal Utility" + mc0.CyclePath = MyDeclPath & "MissionCycles\Municipal_Utility.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.Construction + mc0.NameStr = "Construction" + mc0.CyclePath = MyDeclPath & "MissionCycles\Construction.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.HeavyUrban + mc0.NameStr = "HeavyUrban" + mc0.CyclePath = MyDeclPath & "MissionCycles\Citybus_Heavy_Urban.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.Urban + mc0.NameStr = "Urban" + mc0.CyclePath = MyDeclPath & "MissionCycles\Citybus_Urban.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + + mc0 = New cMission + mc0.MissionID = tMission.Suburban + mc0.NameStr = "Suburban" + mc0.CyclePath = MyDeclPath & "MissionCycles\Citybus_Suburban.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + mc0 = New cMission + mc0.MissionID = tMission.Interurban + mc0.NameStr = "Interurban" + mc0.CyclePath = MyDeclPath & "MissionCycles\Interurban_Bus.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + + mc0 = New cMission + mc0.MissionID = tMission.Coach + mc0.NameStr = "Coach" + mc0.CyclePath = MyDeclPath & "MissionCycles\Coach.vdri" + Missions.Add(mc0.MissionID, mc0) + SegmentTable.MissionList.Add(mc0.MissionID) + + + 'Segment Table + If Not file.OpenRead(MyDeclPath & "SegmentTable.csv") Then + GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)!") + Return False + End If + + Try + 'Header + line = file.ReadLine + + 'Data + Do While Not file.EndOfFile + line = file.ReadLine + + If CBool(line(0)) Then + ste0 = New cSegmentTableEntry + BodyTrWeightList = New List(Of String) + LoadingList = New List(Of String) + AxleShares = New List(Of String) + AxleSharesTr = New List(Of String) + WHTCWF = New List(Of String) + + ste0.VehCat = ConvVehCat(line(1)) + + If ste0.VehCat = tVehCat.Undef Then + file.Close() + GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)! " & line(1) & " is no valid Vehicle Configuration.") + Return False + End If + + ste0.AxleConf = ConvAxleConf(line(2)) + + If ste0.AxleConf = tAxleConf.Undef Then + file.Close() + GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)! " & line(2) & " is no valid Axle Configuration.") + Return False + End If + + ste0.MinGVW = CSng(line(3)) + ste0.MaxGVW = CSng(line(4)) + ste0.HDVclass = line(5) + ste0.VACCfile = MyDeclPath & "VACC\" & line(6) + ste0.VCDVfile = MyDeclPath & "VCDV\" & line(7) + + AxleShares.Add(line(8)) 'Long Haul + For Each mt0 In SegmentTable.MissionList 'Other cycles + If mt0 <> tMission.LongHaul Then AxleShares.Add(line(9)) + Next + + AxleSharesTr.Add(line(10)) 'Long Haul + For Each mt0 In SegmentTable.MissionList 'Other cycles + If mt0 <> tMission.LongHaul Then AxleSharesTr.Add(line(11)) + Next + + ste0.LongHaulRigidTrailer = (Trim(line(10)) <> "0/0" And Trim(line(11)) = "0/0" And ste0.VehCat = tVehCat.RigidTruck) + + i = 11 + For Each mt0 In SegmentTable.MissionList + i += 1 + ste0.UseMission.Add(CBool(line(i))) + Next + For Each mt0 In SegmentTable.MissionList + i += 1 + BodyTrWeightList.Add(line(i)) + Next + For Each mt0 In SegmentTable.MissionList + i += 1 + LoadingList.Add(line(i)) + Next + + For Each mt0 In SegmentTable.MissionList + i += 1 + WHTCWF.Add(line(i)) + Next + + For i = 0 To SegmentTable.MissionList.Count - 1 + If ste0.UseMission(i) Then + ste0.Missions.Add(SegmentTable.MissionList(i)) + ste0.Loading.Add(SegmentTable.MissionList(i), LoadingList(i)) + ste0.BodyTrWeight.Add(SegmentTable.MissionList(i), BodyTrWeightList(i)) + + l0 = New List(Of Single) + For Each s0 In AxleShares(i).Split("/") + l0.Add(CSng(s0)) + Next + ste0.AxleShares.Add(SegmentTable.MissionList(i), l0) + + l0 = New List(Of Single) + + TrS = AxleSharesTr(i).Split("/")(0) + TrA = AxleSharesTr(i).Split("/")(1) + + For a = 1 To TrA + l0.Add(TrS / TrA) + Next + + ste0.AxleSharesTr.Add(SegmentTable.MissionList(i), l0) + + s = WHTCWF(i).Split("/") + dWHTCWF = New Dictionary(Of tWHTCpart, Single) + dWHTCWF.Add(tWHTCpart.Urban, CSng(s(0)) / 100) + dWHTCWF.Add(tWHTCpart.Rural, CSng(s(1)) / 100) + dWHTCWF.Add(tWHTCpart.Motorway, CSng(s(2)) / 100) + + ste0.WHTCWF.Add(SegmentTable.MissionList(i), dWHTCWF) + + End If + Next + + SegmentTable.SegTableEntries.Add(ste0) + + End If + + Loop + Catch ex As Exception + file.Close() + GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)! " & ex.Message) + Return False + End Try + + Cfg.DeclInit() + + GUImsg(tMsgID.Normal, "Declaration Config loaded.") + + Return True + + End Function + + Public Function GetEngInertia(ByVal Displ As Single) As Single + Return 0.41 + 0.27 * (Displ / 1000) + End Function + + Public Function TracInt(ByVal Gearbox As tGearbox) As Single + Select Case Gearbox + Case tGearbox.Manual + Return 1 + + Case tGearbox.SemiAutomatic + Return 0.8 + + Case Else 'tGearbox.Automatic + Return 0.8 + + End Select + End Function + + Public Function SkipGears(ByVal Gearbox As tGearbox) As Boolean + If Gearbox = tGearbox.Automatic Then + Return False + Else + Return True + End If + End Function + + Public Function ShiftInside(ByVal Gearbox As tGearbox) As Boolean + If Gearbox = tGearbox.SemiAutomatic Then + Return True + Else + Return False + End If + End Function + + Public Function ShiftTime(ByVal Gearbox As tGearbox) As Single + Select Case Gearbox + Case tGearbox.Manual + Return 3 + + Case tGearbox.SemiAutomatic + Return 2 + + Case Else 'tGearbox.Automatic + Return 2 + + End Select + End Function + + Public Function SetRef() As Boolean + Return SegmentTable.SetRef(SegRef, VEH.VehCat, VEH.AxleConf, VEH.MassMax) + End Function + + + ''' <summary> + ''' Init Vehicle for current mission. Must happen before setting loading in CalcInitLoad + ''' </summary> + ''' <param name="CycleIndex"></param> + ''' <returns></returns> + ''' <remarks></remarks> + Public Function CalcInitCycle(ByVal CycleIndex As Integer) As Boolean + + CurrentMission = Missions(SegRef.Missions(CycleIndex)) + + If Not VEH.DeclInit Then Return False + + Return True + + End Function + + ''' <summary> + ''' Set Loading. Mission-based initialisation (CalcInitCycle) must already be done before running this. + ''' </summary> + ''' <param name="Loading"></param> + ''' <returns></returns> + ''' <remarks></remarks> + Public Function CalcInitLoad(ByVal Loading As tLoading) As Boolean + + If Not VEH.DeclInitLoad(Loading) Then Return False + + Return True + + End Function + + + Public Function WHTCinit() As Boolean + Dim path As String + Dim file As New cFile_V3 + Dim line As String() + Dim nU As Single + Dim Tq As Single + Dim MsgSrc As String + + MsgSrc = "WHTCcor/Init" + + path = MyDeclPath & "WHTC.csv" + If Not file.OpenRead(path) Then + WorkerMsg(tMsgID.Err, "Failed to load WHTC cycle!", MsgSrc) + Return False + End If + + DRI = New cDRI + DRI.Values = New Dictionary(Of tDriComp, List(Of Double)) + DRI.Values.Add(tDriComp.nU, New List(Of Double)) + DRI.Values.Add(tDriComp.Pe, New List(Of Double)) + DRI.Nvorg = True + DRI.Pvorg = True + + Do While Not file.EndOfFile + line = file.ReadLine + + nU = line(1) + Tq = line(2) + + 'Denorm + nU = nU * 0.01 * (0.45 * ENG.Nlo + 0.45 * ENG.Npref + 0.1 * ENG.nHi - ENG.Nidle) * 2.0327 + ENG.Nidle + + If Tq < 0 Then + Tq = -90000000000.0 + Else + Tq = Tq * 0.01 * (FLD(0).Tq(nU)) + End If + + DRI.Values(tDriComp.nU).Add(nU) + DRI.Values(tDriComp.Pe).Add(nMtoPe(nU, Tq)) + + Loop + + DRI.tDim = DRI.Values(tDriComp.nU).Count - 1 + + Return True + + End Function + + Public Sub WHTCcorrCalc() + Dim sum As Double + Dim Psum As Double + Dim i As Integer + Dim FC As List(Of Single) + + WHTCresults = New Dictionary(Of tWHTCpart, Single) + + FC = MODdata.lFC + + + 'Urban + sum = 0 + Psum = 0 + For i = 0 To 899 + sum += FC(i) + Psum += Math.Max(0, MODdata.Pe(i)) + Next + WHTCresults.Add(tWHTCpart.Urban, sum / Psum) + + 'Rural + sum = 0 + Psum = 0 + For i = 900 To 1379 + sum += FC(i) + Psum += Math.Max(0, MODdata.Pe(i)) + Next + WHTCresults.Add(tWHTCpart.Rural, sum / Psum) + + 'Motorway + sum = 0 + Psum = 0 + For i = 1380 To 1799 + sum += FC(i) + Psum += Math.Max(0, MODdata.Pe(i)) + Next + WHTCresults.Add(tWHTCpart.Motorway, sum / Psum) + + End Sub + +End Class + +Public Class cMission + Public MissionID As tMission + Public NameStr As String + Public CyclePath As String +End Class + +Public Class cSegmentTable + Public SegTableEntries As New List(Of cSegmentTableEntry) + Public MissionList As New List(Of tMission) + + Public Function SetRef(ByRef SegTableEntryRef As cSegmentTableEntry, ByVal VehCat As tVehCat, ByVal AxleConf As tAxleConf, ByVal MaxMass As Single) As Boolean + Dim s0 As cSegmentTableEntry + + For Each s0 In SegTableEntries + If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxMass And s0.MinGVW <= MaxMass Then + SegTableEntryRef = s0 + Return True + End If + Next + + SegTableEntryRef = Nothing + Return False + + End Function + +End Class + +Public Class cSegmentTableEntry + Public VehCat As tVehCat + Public AxleConf As tAxleConf + Public MinGVW As Single + Public MaxGVW As Single + Public VehClass As String + Public Missions As New List(Of tMission) + Public UseMission As New List(Of Boolean) + Public HDVclass As String + Public VACCfile As String + Public VCDVfile As String + Public BodyTrWeight As New Dictionary(Of tMission, String) + Public Loading As New Dictionary(Of tMission, String) + Public AxleShares As New Dictionary(Of tMission, List(Of Single)) + Public AxleSharesTr As New Dictionary(Of tMission, List(Of Single)) + Public WHTCWF As New Dictionary(Of tMission, Dictionary(Of tWHTCpart, Single)) + Public LongHaulRigidTrailer As Boolean + + Public Function GetCycles() As List(Of String) + Dim l As New List(Of String) + Dim m As tMission + + For Each m In Missions + l.Add(Declaration.Missions(m).CyclePath) + Next + + Return l + + End Function + + Public Function GetBodyTrWeight(ByVal Mission As tMission) As Single + + 'Check if Config is valid + If BodyTrWeight.ContainsKey(Mission) AndAlso IsNumeric(BodyTrWeight(Mission)) Then + Return CSng(BodyTrWeight(Mission)) + Else + Return -1 + End If + + End Function + + Public Function GetLoading(ByVal Mission As tMission, ByVal MassMax As Single) As Single + + 'Check if Config is valid + If Loading.ContainsKey(Mission) Then + If Not (Loading(Mission) = "f" OrElse IsNumeric(Loading(Mission))) Then + Return -1 + End If + Else + Return -1 + End If + + 'Return Loading + If HDVclass < 4 Then + If Mission = tMission.LongHaul Then + Return 588.2 * MassMax * 1000 - 2511.8 + Else + Return 394.1 * MassMax * 1000 - 1705.9 + End If + Else + Return CSng(Loading(Mission)) + End If + + End Function + + + +End Class + +Public Class cReport + Private MyChart As +End Class + diff --git a/VECTO/cERG.vb b/VECTO/cERG.vb deleted file mode 100644 index 0960ab63ea7a58bd1dada11d7f2d03ccae002b5e..0000000000000000000000000000000000000000 --- a/VECTO/cERG.vb +++ /dev/null @@ -1,680 +0,0 @@ -Imports System.Collections.Generic - -Class cERG - - Private Const FormatVersion As String = "1.0" - - Private ERGpath As String - Private Ferg As System.IO.StreamWriter - Private HeadInitialized As Boolean - - Private ErgEntries As Dictionary(Of String, cErgEntry) - Private ErgEntryList As List(Of String) 'Wird benötigt weil Dictionary nicht sortiert ist - - Private ergJSON As cJSON - Private ResList As List(Of Dictionary(Of String, Object)) - - - Public Sub New() - HeadInitialized = False - ERGpath = "" - End Sub - - Public Function ErgHead() As String - Dim s As New System.Text.StringBuilder - Dim key As String - Dim First As Boolean - - First = True - For Each key In ErgEntryList - If Not First Then s.Append(",") - s.Append(ErgEntries(key).Head) - First = False - Next - - Return s.ToString - - End Function - - Public Function ErgUnits() As String - Dim s As New System.Text.StringBuilder - Dim First As Boolean - Dim key As String - - First = True - For Each key In ErgEntryList - If Not First Then s.Append(",") - s.Append(ErgEntries(key).Unit) - First = False - Next - - Return s.ToString - - End Function - - Public Function ErgLine() As String - Dim ErgEntry As cErgEntry - Dim s As New System.Text.StringBuilder - Dim t1 As Integer - Dim Vquer As Single - Dim sum As Double - Dim t As Integer - Dim Em0 As cEmComp - Dim key As String - Dim First As Boolean - - For Each ErgEntry In ErgEntries.Values - ErgEntry.ValueString = Nothing - Next - - t1 = MODdata.tDim - - 'Vehicle type-independent - ErgEntries("\\T").ValueString = (t1 + 1) - - 'Length, Speed, Slope - If Not GEN.EngOnly Then - - 'Average-Speed. calculation - sum = 0 - For t = 0 To t1 - sum += MODdata.Vh.V(t) - Next - Vquer = 3.6 * sum / (t1 + 1) - - ErgEntries("\\S").ValueString = (Vquer * (t1 + 1) / 3600) - ErgEntries("\\V").ValueString = Vquer - - 'altitude change - ErgEntries("\\G").ValueString = MODdata.Vh.AltIntp(Vquer * (t1 + 1) / 3.6) - MODdata.Vh.AltIntp(0) - - 'Auxiliary energy consumption - If GEN.AuxDef Then - For Each key In GEN.AuxPaths.Keys - sum = 0 - For t = 0 To t1 - sum += MODdata.Paux(key)(t) - Next - ErgEntries("\\Eaux_" & UCase(key)).ValueString = sum / 3600 - Next - End If - - - End If - - 'Emissions - For Each Em0 In MODdata.Em.EmComp.Values - - 'Dump x/h if ADVANCE mode -or- EngineOnly -or- Units not in x/h and therefore Conversion into x/km is not possible - If Em0.WriteOutput Then - - If FCerror Then - If Em0.NormID = tEmNorm.x Or GEN.EngOnly Then - ErgEntries(Em0.IDstring).ValueString = "ERROR" - Else - ErgEntries(Em0.IDstring & "_km").ValueString = "ERROR" - End If - Else - If Em0.NormID = tEmNorm.x Or GEN.EngOnly Then - ErgEntries(Em0.IDstring).ValueString = Em0.FinalAvg - Else - ErgEntries(Em0.IDstring & "_km").ValueString = (Em0.FinalAvg / Vquer) - End If - End If - - End If - - Next - - 'Power, Revolutions - 'sum = 0 - 'For t = 0 To t1 - ' sum += MODdata.Pe(t) - 'Next - 'ErgEntries("\\Pe_norm").ValueString = (sum / (t1 + 1)) - - 'sum = 0 - 'For t = 0 To t1 - ' sum += MODdata.nn(t) - 'Next - 'ErgEntries("\\n_norm").ValueString = (sum / (t1 + 1)) - - 'Ppos - sum = 0 - For t = 0 To t1 - sum += Math.Max(0, MODdata.Pe(t)) - Next - ErgEntries("\\Ppos").ValueString = (sum / (t1 + 1)) - - 'Pneg - sum = 0 - For t = 0 To t1 - sum += Math.Min(0, MODdata.Pe(t)) - Next - ErgEntries("\\Pneg").ValueString = (sum / (t1 + 1)) - - - - 'Only Entire-vehicle (not EngOnly) - If Not GEN.EngOnly Then - - 'Pbrake-norm - sum = 0 - For t = 0 To t1 - sum += MODdata.Pbrake(t) - Next - ErgEntries("\\Pbrake").ValueString = (sum / (t1 + 1)) - - 'Eair - sum = 0 - For t = 0 To t1 - sum += MODdata.Pluft(t) - Next - ErgEntries("\\Eair").ValueString = (-sum / 3600) - - 'Eroll - sum = 0 - For t = 0 To t1 - sum += MODdata.Proll(t) - Next - ErgEntries("\\Eroll").ValueString = (-sum / 3600) - - 'Egrad - sum = 0 - For t = 0 To t1 - sum += MODdata.Pstg(t) - Next - ErgEntries("\\Egrad").ValueString = (-sum / 3600) - - 'Eacc - sum = 0 - For t = 0 To t1 - sum += MODdata.Pa(t) + MODdata.PaGB(t) + MODdata.PaEng(t) - Next - ErgEntries("\\Eacc").ValueString = (-sum / 3600) - - 'Eaux - sum = 0 - For t = 0 To t1 - sum += MODdata.PauxSum(t) - Next - ErgEntries("\\Eaux").ValueString = (-sum / 3600) - - 'Ebrake - sum = 0 - For t = 0 To t1 - sum += MODdata.Pbrake(t) - Next - ErgEntries("\\Ebrake").ValueString = (sum / 3600) - - 'Etransm - sum = 0 - For t = 0 To t1 - sum += MODdata.PlossDiff(t) + MODdata.PlossGB(t) - Next - ErgEntries("\\Etransm").ValueString = (-sum / 3600) - - 'Masse, Loading - ErgEntries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra) - ErgEntries("\\Loading").ValueString = VEH.Loading - - 'CylceKin - For Each ErgEntry In MODdata.CylceKin.ErgEntries - ErgEntries("\\" & ErgEntry.Head).ValueString = MODdata.CylceKin.GetValueString(ErgEntry.Head) - Next - - 'EposICE - sum = 0 - For t = 0 To t1 - sum += Math.Max(0, MODdata.Pe(t)) - Next - ErgEntries("\\EposICE").ValueString = (sum / 3600) - - 'EnegICE - sum = 0 - For t = 0 To t1 - sum += Math.Min(0, MODdata.Pe(t)) - Next - ErgEntries("\\EnegICE").ValueString = (sum / 3600) - - End If - - 'Create Output-string: - First = True - - For Each key In ErgEntryList - If Not First Then s.Append(",") - s.Append(ErgEntries(key).ValueString) - First = False - Next - - Return s.ToString - - End Function - - Private Function HeadInit() As Boolean - Dim MsgSrc As String - - MsgSrc = "SUMALL/Output" - - 'Open file - Try - Ferg = My.Computer.FileSystem.OpenTextFileWriter(ERGpath, True, FileFormat) - Ferg.AutoFlush = True - Catch ex As Exception - WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & ERGpath & ")", MsgSrc) - Return False - End Try - - '*** Header / Units - Ferg.WriteLine("Job,Input File,Cycle," & ErgHead()) - Ferg.WriteLine("[-],[-],[-]," & ErgUnits()) - - 'Close file (will open after each job) - Ferg.Close() - - HeadInitialized = True - - Return True - - End Function - - Public Function AusgERG(ByVal NrOfRunStr As String, ByVal GenFilename As String, ByVal CycleFilename As String, ByVal AbortedByError As Boolean) As Boolean - Dim str As String - Dim MsgSrc As String - Dim dic As Dictionary(Of String, Object) - Dim dic0 As Dictionary(Of String, Object) - Dim dic1 As Dictionary(Of String, Object) - Dim key As String - - MsgSrc = "SUMALL/Output" - - If Not HeadInitialized Then - If Not HeadInit() Then Return False - End If - - 'JSON - dic = New Dictionary(Of String, Object) - - 'Open file - Try - Ferg = My.Computer.FileSystem.OpenTextFileWriter(ERGpath, True, FileFormat) - Ferg.AutoFlush = True - Catch ex As Exception - WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & ERGpath & ")", MsgSrc) - Return False - End Try - - str = NrOfRunStr & "," & GenFilename & "," & CycleFilename & "," - dic.Add("Job", GenFilename) - dic.Add("Cycle", CycleFilename) - - If AbortedByError Then - Ferg.WriteLine(str & "Aborted due to Error!") - dic.Add("AbortedByError", True) - Else - Ferg.WriteLine(str & ErgLine()) - dic.Add("AbortedByError", False) - - dic1 = New Dictionary(Of String, Object) - For Each key In ErgEntryList - dic0 = New Dictionary(Of String, Object) - dic0.Add("Value", ErgEntries(key).ValueString) - dic0.Add("Unit", ErgEntries(key).Unit) - dic1.Add(ErgEntries(key).Head, dic0) - Next - dic.Add("Results", dic1) - - End If - - ResList.Add(dic) - - - 'Close file - Ferg.Close() - Ferg = Nothing - - Return True - - End Function - - Public Function WriteJSON() As Boolean - - ergJSON.Content("Body").add("Results", ResList) - - Try - Return ergJSON.WriteFile(ERGpath & ".json") - Catch ex As Exception - Return False - End Try - - End Function - - Private Sub AddToErg(ByVal IDstring As String, ByVal Head As String, ByVal Unit As String) - If Not ErgEntries.ContainsKey(IDstring) Then - ErgEntries.Add(IDstring, New cErgEntry(Head, Unit)) - ErgEntryList.Add(IDstring) - End If - End Sub - - Private Sub AddToErg(ByVal IDstring As String, ByVal Head As String, ByVal Unit As String, ByVal PerKm As Boolean) - If PerKm Then - If Not ErgEntries.ContainsKey(IDstring & "_km") Then - ErgEntries.Add(IDstring & "_km", New cErgEntry(Head, Unit)) - ErgEntryList.Add(IDstring & "_km") - End If - Else - If Not ErgEntries.ContainsKey(IDstring) Then - ErgEntries.Add(IDstring, New cErgEntry(Head, Unit)) - ErgEntryList.Add(IDstring) - End If - End If - - End Sub - - Public Function Init(ByVal GenFile As String) As Boolean - Dim GENs As New List(Of String) - Dim str As String - Dim str1 As String - Dim iGEN As Integer - Dim file As New cFile_V3 - Dim GEN0 As cGEN - Dim MAP0 As cMAP - Dim ENG0 As cENG - Dim Em0 As cEmComp - Dim HEVorEVdone As Boolean - Dim EVdone As Boolean - Dim EngOnly As Boolean - Dim NonEngOnly As Boolean - Dim ErgEntry As cErgEntry - Dim CylceKin As cCycleKin - Dim i1 As Integer - Dim i2 As Integer - Dim iDim As Integer - Dim dic As Dictionary(Of String, Object) - - - Dim MsgSrc As String - - MsgSrc = "SUMALL/Init" - - 'Check if file exists - If Not IO.File.Exists(GenFile) Then - WorkerMsg(tMsgID.Err, "Job file not found! (" & GenFile & ")", MsgSrc) - Return False - End If - - 'Define Output-path - If (PHEMmode = tPHEMmode.ModeBATCH) Then - Select Case UCase(Cfg.BATCHoutpath) - Case sKey.WorkDir - ERGpath = Cfg.WorkDPath & fFILE(GenFile, False) & "_BATCH.vsum" - Case sKey.GenPath - ERGpath = fFileWoExt(GenFile) & "_BATCH.vsum" - Case Else - ERGpath = Cfg.BATCHoutpath & fFILE(GenFile, False) & "_BATCH.vsum" - End Select - Else - ERGpath = fFileWoExt(GenFile) & ".vsum" - End If - - 'Open file - Try - 'Open file - Ferg = My.Computer.FileSystem.OpenTextFileWriter(ERGpath, False, FileFormat) - Ferg.AutoFlush = True - Catch ex As Exception - WorkerMsg(tMsgID.Err, "Cannot write to .vsum file (" & ERGpath & ")", MsgSrc) - Return False - End Try - - 'JSON - ergJSON = New cJSON - - dic = New Dictionary(Of String, Object) - dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")") - dic.Add("Date", Now.ToString) - dic.Add("AppVersion", VECTOvers) - dic.Add("FileVersion", FormatVersion) - ergJSON.Content.Add("Header", dic) - ergJSON.Content.Add("Body", New Dictionary(Of String, Object)) - dic = New Dictionary(Of String, Object) - dic.Add("Air Density [kg/m3]", Cfg.AirDensity) - dic.Add("Distance Correction", Cfg.WegKorJa) - ergJSON.Content("Body").add("Settings", dic) - - ResList = New List(Of Dictionary(Of String, Object)) - - 'Info - Ferg.WriteLine("VECTO results") - Ferg.WriteLine("VECTO " & VECTOvers) - Ferg.WriteLine(Now.ToString) - Ferg.WriteLine("air density [kg/m3]: " & Cfg.AirDensity) - If Cfg.WegKorJa Then - Ferg.WriteLine("Distance Correction ON") - Else - Ferg.WriteLine("Distance Correction OFF") - End If - - 'Close file (will open after each job) - Ferg.Close() - - 'Add file to signing list - Lic.FileSigning.AddFile(ERGpath) - If Cfg.JSON Then Lic.FileSigning.AddFile(ERGpath & ".json") - - - ErgEntries = New Dictionary(Of String, cErgEntry) - ErgEntryList = New List(Of String) - - - '********************** GEN-Liste raussuchen. Bei ADVANCE aus Flotte sonst aus Jobliste '********************** |@@| Select GEN-list for ADVANCE either from Fleet or from Job-list '********************** - For Each str In JobFileList - GENs.Add(fFileRepl(str)) - Next - iGEN = GENs.Count - 1 - - - '********************** Create Erg-entries '********************** - EVdone = False - HEVorEVdone = False - EngOnly = False - NonEngOnly = False - - 'Vehicle type-independent - AddToErg("\\T", "time", "[s]") - - 'For each GEN-file check Mode and Map - For Each str In GENs - - GEN0 = New cGEN - - GEN0.FilePath = str - - Try - If Not GEN0.ReadFile Then - WorkerMsg(tMsgID.Err, "Can't read .gen file '" & str & "' !", MsgSrc) - Return False - End If - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & str & ")", MsgSrc) - Return False - End Try - - If GEN0.EngOnly Then - - If Not EngOnly Then - - 'nothing... - - EngOnly = True - - End If - - Else - - If Not NonEngOnly Then - - AddToErg("\\S", "distance", "[km]") - AddToErg("\\V", "speed", "[km/h]") - AddToErg("\\G", "∆altitude", "[m]") - - NonEngOnly = True - - End If - - 'Auxiliary energy consumption - If GEN0.AuxDef Then - For Each str1 In GEN0.AuxPaths.Keys - AddToErg("\\Eaux_" & UCase(str1), "Eaux_" & str1, "[kWh]") - Next - End If - - End If - - 'Conventional vehicles ... - 'AddToErg("\\n_norm", "n_norm", "[-]") - 'AddToErg("\\Pe_norm", "Pe_norm", "[-]") - AddToErg("\\Ppos", "Ppos", "[kW]") - AddToErg("\\Pneg", "Pneg", "[kW]") - - 'From the Engine-Map - ENG0 = New cENG - ENG0.FilePath = GEN0.PathENG - - Try - If Not ENG0.ReadFile Then Return False - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & GEN0.PathENG & ")", MsgSrc) - Return False - End Try - - MAP0 = New cMAP - MAP0.FilePath = ENG0.PathMAP - - Try - If Not MAP0.ReadFile(False) Then Return False 'Fehlermeldungen werden auch bei "MsgOutput = False" ausgegeben - Catch ex As Exception - WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc) - Return False - End Try - - - For Each str1 In MAP0.EmList - - Em0 = MAP0.EmComponents(str1) - - If Em0.WriteOutput Then - - 'Dump x/h if ADVANCE mode -or- EngineOnly -or- Units not in x/h and therefore Conversion into x/km is not possible - If Em0.NormID = tEmNorm.x Or GEN0.EngOnly Then - AddToErg(Em0.IDstring, Em0.Name, Em0.Unit, False) - Else - AddToErg(Em0.IDstring, Em0.Name, "[" & Em0.RawUnit & "/km]", True) - End If - - End If - - Next - - - - - Next - - - If EngOnly Then - - 'currently nothing - - End If - - If NonEngOnly Then - - 'Vehicle-related fields - AddToErg("\\Pbrake", "Pbrake", "[kW]") - AddToErg("\\EposICE", "EposICE", "[kWh]") - AddToErg("\\EnegICE", "EnegICE", "[kWh]") - AddToErg("\\Eair", "Eair", "[kWh]") - AddToErg("\\Eroll", "Eroll", "[kWh]") - AddToErg("\\Egrad", "Egrad", "[kWh]") - AddToErg("\\Eacc", "Eacc", "[kWh]") - AddToErg("\\Eaux", "Eaux", "[kWh]") - AddToErg("\\Ebrake", "Ebrake", "[kWh]") - AddToErg("\\Etransm", "Etransm", "[kWh]") - AddToErg("\\Mass", "Mass", "[kg]") - AddToErg("\\Loading", "Loading", "[kg]") - - 'CylceKin - CylceKin = New cCycleKin - For Each ErgEntry In CylceKin.ErgEntries - AddToErg("\\" & ErgEntry.Head, ErgEntry.Head, ErgEntry.Unit) - Next - - End If - - 'ErgListe sortieren damit g/km und g/h nebeneinander liegen |@@| Sort ErgListe so that g/km and g/h are side-by-side - iDim = ErgEntryList.Count - 1 - - For i1 = 0 To iDim - 1 - str = ErgEntries(ErgEntryList(i1)).Head - For i2 = i1 + 1 To iDim - If ErgEntries(ErgEntryList(i2)).Head = str Then - ErgEntryList.Insert(i1 + 1, ErgEntryList(i2)) - ErgEntryList.RemoveAt(i2 + 1) - End If - Next - Next - - 'Sort Aux - For i1 = 0 To iDim - 1 - str = ErgEntries(ErgEntryList(i1)).Head - If str.Length > 4 AndAlso Left(str, 4) = "Eaux" Then - For i2 = i1 + 1 To iDim - If ErgEntries(ErgEntryList(i2)).Head.Length > 4 AndAlso Left(ErgEntries(ErgEntryList(i2)).Head, 4) = "Eaux" Then - ErgEntryList.Insert(i1 + 1, ErgEntryList(i2)) - ErgEntryList.RemoveAt(i2 + 1) - End If - Next - End If - Next - - Return True - - End Function - - Public ReadOnly Property ErgFile As String - Get - Return ERGpath - End Get - End Property - -End Class - -Public Class cErgEntry - Public Head As String - Public Unit As String - Public MyVal As Object - - Public Sub New(ByVal HeadStr As String, ByVal UnitStr As String) - Head = HeadStr - Unit = UnitStr - MyVal = Nothing - End Sub - - Public Property ValueString As Object - Get - If MyVal Is Nothing Then - Return "-" - Else - Return MyVal - End If - End Get - Set(value As Object) - MyVal = value - End Set - End Property - - - -End Class diff --git a/VECTO/cEmComp.vb b/VECTO/cEmComp.vb deleted file mode 100644 index 1c1b13c25005ce1c29e011aea819bcf48b6a0bae..0000000000000000000000000000000000000000 --- a/VECTO/cEmComp.vb +++ /dev/null @@ -1,80 +0,0 @@ -Public Class cEmComp - - Public Name As String - - 'IDstring: - ' Def-Komponente: IDstring = sKey (upper case) - ' Cstm-Komponente (tMapComp.Undefined): IDstring = Name (upper case) - Public IDstring As String - - Public Unit As String - Public NormID As tEmNorm - Public MapCompID As tMapComp = tMapComp.Undefined - Public Col As Integer - Public RawVals As System.Collections.Generic.List(Of Single) - Public FinalVals As System.Collections.Generic.List(Of Single) - - Public WriteOutput As Boolean - - 'Totals/Average Values - Public FinalAvg As Single 'Durchschnittswert [g/h] - Private FinalSum As Single 'Summe [g] - Private FinalAvgPos As Single 'Durchschnittswert ohne negative Werte [g/h] - Private FinalSumPos As Single 'Summe ohne negative Werte [g] - - Public Sub New() - RawVals = New System.Collections.Generic.List(Of Single) - FinalVals = RawVals - NormID = tEmNorm.x - WriteOutput = True - End Sub - - Public ReadOnly Property RawUnit As String - Get - Dim txt As String - - txt = Me.Unit - txt = txt.Replace("[", "") - txt = txt.Replace("]", "") - - If NormID = tEmNorm.x OrElse Not txt.Contains("/") Then - Return txt - Else - Return Left(txt, txt.IndexOf("/")) - End If - - End Get - End Property - - Public Sub SumCalc() - Dim x As Single - Dim sum As Double - Dim sumPos As Double - - sum = 0 - sumPos = 0 - For Each x In FinalVals - sum += x - sumPos += Math.Max(x, 0) - Next - - 'Averaged - FinalAvg = CSng(sum / FinalVals.Count) - FinalAvgPos = CSng(sumPos / FinalVals.Count) - - 'Total (g/h converted into g) - Select Case NormID - Case tEmNorm.x - FinalSum = sum - FinalSumPos = sumPos - Case Else 'tEmNorm.x_h, tEmNorm.x_hPnenn, tEmNorm.x_kWh - FinalSum = sum / 3600 - FinalSumPos = sumPos / 3600 - End Select - - End Sub - - - - -End Class diff --git a/VECTO/cVECTO.vb b/VECTO/cVECTO.vb deleted file mode 100644 index ddd87c96f54ef730fb7e1cc658232485a3394ba0..0000000000000000000000000000000000000000 --- a/VECTO/cVECTO.vb +++ /dev/null @@ -1,154 +0,0 @@ -Imports System.Collections.Generic - -Public Class cVECTO - Public Mode As tVECTOmode - Public CurrentMission As cMission - Public Missions As Dictionary(Of tMission, cMission) - Public SegmentTable As cSegmentTable - - - Public Sub New() - Mode = tVECTOmode.Declaration - End Sub - - Public Function Init() As Boolean - - Dim file As New cFile_V3 - Dim m0 As cMission - Dim s0 As cSegmentTableEntry - Dim line As String() - Dim i As Integer - - 'Initialize - Missions = New Dictionary(Of tMission, cMission) - SegmentTable = New cSegmentTable - - If Not IO.Directory.Exists(MyDeclPath) Then - GUImsg(tMsgID.Err, "Failed to load Declaration Config!") - Return False - End If - - 'Missions - If Not file.OpenRead(MyDeclPath & "Missions.csv") Then - GUImsg(tMsgID.Err, "Failed to load Declaration Config (Mission Definitions)!") - Return False - End If - - Try - 'Header - line = file.ReadLine - 'Data - Do While Not file.EndOfFile - m0 = New cMission - line = file.ReadLine - m0.MissionID = CType(CInt(line(0)), tMission) - m0.NameStr = line(1) - m0.CyclePath = MyDeclPath & line(2) - Missions.Add(m0.MissionID, m0) - Loop - Catch ex As Exception - GUImsg(tMsgID.Err, "Failed to load Declaration Config (Mission Definitions)!") - file.Close() - Return False - End Try - - file.Close() - - 'Segment Table - If Not file.OpenRead(MyDeclPath & "SegmentTable.csv") Then - GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)!") - Return False - End If - - Try - 'Header - line = file.ReadLine - 'Data - Do While Not file.EndOfFile - line = file.ReadLine - s0 = New cSegmentTableEntry - s0.VehCat = CType(CInt(line(0)), tVehCat) - s0.AxleConf = CType(CInt(line(1)), tAxleConf) - s0.MaxGVW = CSng(line(2)) - s0.VehClass = line(3) - For i = 4 To 13 - If Trim(UCase(line((i)))) = "X" Or Trim(UCase(line((i)))) = "XX" Then - s0.MissionList.Add(CType(CInt(i - 4), tMission)) - End If - Next - SegmentTable.SegTableEntries.Add(s0) - Loop - Catch ex As Exception - file.Close() - GUImsg(tMsgID.Err, "Failed to load Declaration Config (Segment Table)!") - Return False - End Try - - GUImsg(tMsgID.Normal, "Declaration Config loaded.") - - Return True - - End Function - - - - - - - -End Class - -Public Class cMission - Public MissionID As tMission - Public NameStr As String - Public CyclePath As String -End Class - -Public Class cSegmentTable - Public SegTableEntries As New List(Of cSegmentTableEntry) - - Public Function ConfigIsValid(ByVal VehCat As tVehCat, ByVal AxleConf As tAxleConf, ByVal MaxGVW As Single) As Boolean - Dim s0 As cSegmentTableEntry - - For Each s0 In SegTableEntries - If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxGVW Then - Return True - End If - Next - - Return False - - End Function - - Public Function SetRef(ByRef SegTableEntryRef As cSegmentTableEntry, ByVal VehCat As tVehCat, ByVal AxleConf As tAxleConf, ByVal MaxGVW As Single) As Boolean - Dim s0 As cSegmentTableEntry - - For Each s0 In SegTableEntries - If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxGVW Then - SegTableEntryRef = s0 - Return True - End If - Next - - SegTableEntryRef = Nothing - Return False - - End Function - - -End Class - - -Public Class cSegmentTableEntry - Public VehCat As tVehCat - Public AxleConf As tAxleConf - Public MaxGVW As Single - Public VehClass As String - Public MissionList As New List(Of tMission) - - - -End Class - - - diff --git a/VECTO/cVRES.vb b/VECTO/cVRES.vb new file mode 100644 index 0000000000000000000000000000000000000000..c0fc448d5f0eed4b51064088653f207f1110d82c --- /dev/null +++ b/VECTO/cVRES.vb @@ -0,0 +1,255 @@ +Imports System.Collections.Generic +Imports iTextSharp.text.pdf +Imports System.IO + + + + + +Public Class cVRES + + Public FilePath As String + + Public SingleResults As New List(Of cVRESsingle) + + Public Sub New() + ResetMe() + End Sub + + Public Sub ResetMe() + SingleResults.Clear() + End Sub + + Public Function SetVals(ByVal VREStype As tLoading) As Boolean + Dim VRESsingleRef As cVRESsingle + Dim t1 As Integer + Dim t As Integer + Dim MsgSrc As String + Dim Vquer As Single + Dim sum As Double + + MsgSrc = "SUM/SetVals" + + t1 = MODdata.tDim + + 'Average Speed calculation + sum = 0 + For t = 0 To t1 + sum += MODdata.Vh.V(t) + Next + Vquer = 3.6 * sum / (t1 + 1) + + If Vquer = 0 Then + WorkerMsg(tMsgID.Err, "Average Speed = 0 ?!", MsgSrc) + Return False + End If + + VRESsingleRef = New cVRESsingle + + VRESsingleRef.DescStr = ConvLoading(VREStype) + + VRESsingleRef.Loading = VEH.Loading / 1000 + VRESsingleRef.FCl100km = (100 * MODdata.FCavg / Vquer) / (Cfg.FuelDens * 1000) + If VRESsingleRef.Loading > 0 Then VRESsingleRef.FCl100tkm = VRESsingleRef.FCl100km / VRESsingleRef.Loading + VRESsingleRef.CO2gkm = Cfg.CO2perFC * (MODdata.FCavg / Vquer) + If VRESsingleRef.Loading > 0 Then VRESsingleRef.CO2gtkm = VRESsingleRef.CO2gkm / VRESsingleRef.Loading + VRESsingleRef.AvgSpeed = Vquer + + VRESsingleRef.FCerror = MODdata.FCerror + + SingleResults.Add(VRESsingleRef) + + Return True + + End Function + + + Public Function Output() As Boolean + Dim file As New cFile_V3 + Dim MsgSrc As String + Dim x As Integer + Dim VRESsingleRef As cVRESsingle + Dim pdfTemplate As String + Dim pdfout As String + Dim pdfReader As PdfReader + Dim pdfStamper As PdfStamper + + + MsgSrc = "SUM/Output" + + If Not file.OpenWrite(FilePath & ".vres", vbTab) Then + WorkerMsg(tMsgID.Err, "Can't write to " & FilePath & ".vres", MsgSrc) + Return False + End If + + file.WriteLine(" _ ________________________ ") + file.WriteLine("| | / ____ ______ __ __ \") + file.WriteLine("| | / / __/ / / / / / / / /") + file.WriteLine("| |/ / /___/ /___ / / / /_/ / ") + file.WriteLine("|___/_____/\____/ /_/ \____/ ") + + x = CInt((31 - 4 - Len(VECTOvers)) / 2) + file.WriteLine(Space(x) & "~ " & VECTOvers & " ~" & Space(x)) + file.WriteLine(" ") + file.WriteLine("Date:" & vbTab & Now.ToString) + file.WriteLine(" ") + file.WriteLine("Specifications") + + If Declaration.Active Then + file.WriteLine(vbTab & "Mission: " & vbTab & Declaration.CurrentMission.NameStr) + file.WriteLine(vbTab & "HDV Class: " & vbTab & Declaration.SegRef.HDVclass) + Else + file.WriteLine(vbTab & "Cycle: " & vbTab & fFILE(CurrentCycleFile, False)) + End If + + file.WriteLine(" ") + file.WriteLine("Results:") + file.WriteLine(" ") + file.WriteLine(vbTab & "Efficiency Index (FCrel): " & vbTab & "N/A") + file.WriteLine(" ") + file.WriteLine("Single Results:") + + For Each VRESsingleRef In SingleResults + file.WriteLine(vbTab & VRESsingleRef.DescStr) + file.WriteLine(vbTab & vbTab & "Loading: " & vbTab & VRESsingleRef.Loading & vbTab & "[t]") + file.WriteLine(vbTab & vbTab & "Average Speed: " & vbTab & VRESsingleRef.AvgSpeed.ToString & vbTab & "[km/h]") + file.WriteLine(vbTab & vbTab & "Fuel Consumption" & vbTab & vbTab & "CO2 Emissions") + + If VRESsingleRef.FCerror Then + file.WriteLine(vbTab & vbTab & "ERROR") + Else + file.WriteLine(vbTab & vbTab & VRESsingleRef.FCl100km.ToString("#.0") & vbTab & "[l/100km]" & vbTab & VRESsingleRef.CO2gkm.ToString("#.0") & vbTab & "[g/km]") + If VRESsingleRef.Loading = 0 Then + file.WriteLine(vbTab & vbTab & "-" & vbTab & "[l/100tkm]" & vbTab & "-" & vbTab & "[g/tkm]") + Else + file.WriteLine(vbTab & vbTab & VRESsingleRef.FCl100tkm.ToString("#.0") & vbTab & "[l/100tkm]" & vbTab & VRESsingleRef.CO2gtkm.ToString("#.0") & vbTab & "[g/tkm]") + End If + End If + + + Next + + file.Close() + + 'Add file to signing list + Lic.FileSigning.AddFile(FilePath & ".vres") + + 'pdf Output + If Declaration.Active Then + + pdfTemplate = MyDeclPath & "reptemp.pdf" + pdfout = FilePath & ".pdf" + + Try + + pdfReader = New PdfReader(pdfTemplate) + pdfStamper = New PdfStamper(pdfReader, New FileStream(pdfout, FileMode.Create)) + + Dim pdfFormFields As AcroFields = pdfStamper.AcroFields + + + pdfFormFields.SetField("version", VECTOvers) + pdfFormFields.SetField("date", Now.ToString) + pdfFormFields.SetField("mission", Declaration.CurrentMission.NameStr) + pdfFormFields.SetField("HDVclass", Declaration.SegRef.HDVclass) + + VRESsingleRef = SingleResults(1) + pdfFormFields.SetField("load1", VRESsingleRef.Loading.ToString & " [t]") + pdfFormFields.SetField("speed1", VRESsingleRef.AvgSpeed.ToString("#.0") & " [km/h]") + pdfFormFields.SetField("FC11", VRESsingleRef.FCl100km.ToString("#.0") & " [l/100km]") + pdfFormFields.SetField("FC12", VRESsingleRef.FCl100tkm.ToString("#.0") & " [l/100tkm]") + + pdfFormFields.SetField("CO211", VRESsingleRef.CO2gkm.ToString("#.0") & " [g/km]") + pdfFormFields.SetField("CO212", VRESsingleRef.CO2gtkm.ToString("#.0") & " [g/tkm]") + + VRESsingleRef = SingleResults(0) + pdfFormFields.SetField("load2", VRESsingleRef.Loading.ToString & " [t]") + pdfFormFields.SetField("speed2", VRESsingleRef.AvgSpeed.ToString("#.0") & " [km/h]") + pdfFormFields.SetField("FC21", VRESsingleRef.FCl100km.ToString("#.0") & " [l/100km]") + pdfFormFields.SetField("FC22", "- [l/100tkm]") + + pdfFormFields.SetField("CO221", VRESsingleRef.CO2gkm.ToString("#.0") & " [g/km]") + pdfFormFields.SetField("CO222", "- [g/tkm]") + + VRESsingleRef = SingleResults(2) + pdfFormFields.SetField("load3", VRESsingleRef.Loading.ToString & " [t]") + pdfFormFields.SetField("speed3", VRESsingleRef.AvgSpeed.ToString("#.0") & " [km/h]") + pdfFormFields.SetField("FC31", VRESsingleRef.FCl100km.ToString("#.0") & " [l/100km]") + pdfFormFields.SetField("FC32", VRESsingleRef.FCl100tkm.ToString("#.0") & " [l/100tkm]") + + pdfFormFields.SetField("CO231", VRESsingleRef.CO2gkm.ToString("#.0") & " [g/km]") + pdfFormFields.SetField("CO232", VRESsingleRef.CO2gtkm.ToString("#.0") & " [g/tkm]") + + + ' flatten the form to remove editting options, set it to false + ' to leave the form open to subsequent manual edits + pdfStamper.FormFlattening = True + + ' close the pdf + pdfStamper.Close() + + Catch ex As Exception + + WorkerMsg(tMsgID.Err, "Failed to write pdf file (" & pdfout & ")!", MsgSrc) + + End Try + + + + + + + End If + + + + + + + + + + + + + + + + + + + + + + + + + + Return True + + + + End Function + +End Class + +Public Class cVRESsingle + Public Loading As Single + Public AvgSpeed As Single + Public FCl100km As Single + Public FCl100tkm As Single + Public CO2gkm As Single + Public CO2gtkm As Single + Public DescStr As String + Public FCerror As Boolean + + Public Sub ResetMe() + FCl100km = 0 + FCl100tkm = 0 + CO2gkm = 0 + CO2gtkm = 0 + DescStr = "" + End Sub + + +End Class diff --git a/VECTO/cVSUM.vb b/VECTO/cVSUM.vb index ce20c630dc877680787077ab37f71767e3e68780..ace570c53058c61b4d870710e226b45d0287424a 100644 --- a/VECTO/cVSUM.vb +++ b/VECTO/cVSUM.vb @@ -1,179 +1,652 @@ Imports System.Collections.Generic -Public Class cVSUM +Class cVSUM - Public FilePath As String + Private Const FormatVersion As String = "1.0" - Public VehConfig As String - Public EffIdx As Single + Private VSUMpath As String + Private Fvsum As System.IO.StreamWriter + Private HeadInitialized As Boolean - Public SingleResults As New List(Of cVSUMsingle) + Private VSUMentries As Dictionary(Of String, cVSUMentry) + Private VSUMentryList As List(Of String) 'Wird benötigt weil Dictionary nicht sortiert ist + Private vsumJSON As cJSON + Private ResList As List(Of Dictionary(Of String, Object)) Public Sub New() - ResetMe() + HeadInitialized = False + VSUMpath = "" End Sub - Public Sub ResetMe() - VehConfig = "" - EffIdx = 0 - SingleResults.Clear() - End Sub + Public Function VSUMhead() As String + Dim s As New System.Text.StringBuilder + Dim key As String + Dim First As Boolean + + First = True + For Each key In VSUMentryList + If Not First Then s.Append(",") + s.Append(VSUMentries(key).Head) + First = False + Next + + Return s.ToString + + End Function + + Public Function VSUMunits() As String + Dim s As New System.Text.StringBuilder + Dim First As Boolean + Dim key As String + + First = True + For Each key In VSUMentryList + If Not First Then s.Append(",") + s.Append(VSUMentries(key).Unit) + First = False + Next - Public Function SetVals(ByVal VSUMtype As tVSUM) As Boolean - Dim Em0 As cEmComp - Dim VSUMsingleRef As cVSUMsingle + Return s.ToString + + End Function + + Public Function VSUMline() As String + Dim VSUMentry As cVSUMentry + Dim s As New System.Text.StringBuilder Dim t1 As Integer - Dim t As Integer - Dim MsgSrc As String Dim Vquer As Single Dim sum As Double + Dim t As Integer + Dim key As String + Dim First As Boolean + + For Each VSUMentry In VSUMentries.Values + VSUMentry.ValueString = Nothing + Next - MsgSrc = "SUM/SetVals" + t1 = MODdata.tDim + + 'Vehicle type-independent + VSUMentries("\\T").ValueString = (t1 + 1) + + 'Length, Speed, Slope + If Not VEC.EngOnly Then + + 'Average-Speed. calculation + sum = 0 + For t = 0 To t1 + sum += MODdata.Vh.V(t) + Next + Vquer = 3.6 * sum / (t1 + 1) + + VSUMentries("\\S").ValueString = (Vquer * (t1 + 1) / 3600) + VSUMentries("\\V").ValueString = Vquer + + 'altitude change + VSUMentries("\\G").ValueString = MODdata.Vh.AltIntp(Vquer * (t1 + 1) / 3.6) - MODdata.Vh.AltIntp(0) + + 'Auxiliary energy consumption + If VEC.AuxDef Then + For Each key In VEC.AuxPaths.Keys + sum = 0 + For t = 0 To t1 + sum += MODdata.Paux(key)(t) + Next + VSUMentries("\\Eaux_" & UCase(key)).ValueString = sum / 3600 + Next + End If - VehConfig = fAxleConfName(VEH.AxleConf) - EffIdx = 0 - If Not MODdata.Em.EmDefComp.ContainsKey(tMapComp.FC) Then - WorkerMsg(tMsgID.Err, sKey.MAP.FC & " not found!", MsgSrc) - Return False End If - Em0 = MODdata.Em.EmDefComp(tMapComp.FC) - t1 = MODdata.tDim + 'FC + If MODdata.FCerror Then + If VEC.EngOnly Then + VSUMentries("FC_h").ValueString = "ERROR" + Else + VSUMentries("FC_km").ValueString = "ERROR" + End If + + If Declaration.Active Then + If VEC.EngOnly Then + VSUMentries("FCc_h").ValueString = "ERROR" + Else + VSUMentries("FCc_km").ValueString = "ERROR" + End If + End If + + Else + If VEC.EngOnly Then + VSUMentries("FC_h").ValueString = MODdata.FCavg + Else + VSUMentries("FC_km").ValueString = (MODdata.FCavg / Vquer) + End If + + If Declaration.Active Then + If VEC.EngOnly Then + VSUMentries("FCc_h").ValueString = MODdata.FCavg * MODdata.CorrFactor + Else + VSUMentries("FCc_km").ValueString = (MODdata.FCavg * MODdata.CorrFactor / Vquer) + End If + End If + + End If - 'Average Speed calculation + 'Power, Revolutions + + 'Ppos sum = 0 For t = 0 To t1 - sum += MODdata.Vh.V(t) + sum += Math.Max(0, MODdata.Pe(t)) Next - Vquer = 3.6 * sum / (t1 + 1) + VSUMentries("\\Ppos").ValueString = (sum / (t1 + 1)) + + 'Pneg + sum = 0 + For t = 0 To t1 + sum += Math.Min(0, MODdata.Pe(t)) + Next + VSUMentries("\\Pneg").ValueString = (sum / (t1 + 1)) + + + + 'Only Entire-vehicle (not EngOnly) + If Not VEC.EngOnly Then + + 'Pbrake-norm + sum = 0 + For t = 0 To t1 + sum += MODdata.Pbrake(t) + Next + VSUMentries("\\Pbrake").ValueString = (sum / (t1 + 1)) + + 'Eair + sum = 0 + For t = 0 To t1 + sum += MODdata.Pluft(t) + Next + VSUMentries("\\Eair").ValueString = (-sum / 3600) + + 'Eroll + sum = 0 + For t = 0 To t1 + sum += MODdata.Proll(t) + Next + VSUMentries("\\Eroll").ValueString = (-sum / 3600) + + 'Egrad + sum = 0 + For t = 0 To t1 + sum += MODdata.Pstg(t) + Next + VSUMentries("\\Egrad").ValueString = (-sum / 3600) + + 'Eacc + sum = 0 + For t = 0 To t1 + sum += MODdata.Pa(t) + MODdata.PaGB(t) + MODdata.PaEng(t) + Next + VSUMentries("\\Eacc").ValueString = (-sum / 3600) + + 'Eaux + sum = 0 + For t = 0 To t1 + sum += MODdata.PauxSum(t) + Next + VSUMentries("\\Eaux").ValueString = (-sum / 3600) + + 'Ebrake + sum = 0 + For t = 0 To t1 + sum += MODdata.Pbrake(t) + Next + VSUMentries("\\Ebrake").ValueString = (sum / 3600) + + 'Etransm + sum = 0 + For t = 0 To t1 + sum += MODdata.PlossDiff(t) + MODdata.PlossGB(t) + Next + VSUMentries("\\Etransm").ValueString = (-sum / 3600) + + 'Masse, Loading + VSUMentries("\\Mass").ValueString = (VEH.Mass + VEH.MassExtra) + VSUMentries("\\Loading").ValueString = VEH.Loading + + 'CylceKin + For Each VSUMentry In MODdata.CylceKin.VSUMentries + VSUMentries("\\" & VSUMentry.Head).ValueString = MODdata.CylceKin.GetValueString(VSUMentry.Head) + Next + + 'EposICE + sum = 0 + For t = 0 To t1 + sum += Math.Max(0, MODdata.Pe(t)) + Next + VSUMentries("\\EposICE").ValueString = (sum / 3600) + + 'EnegICE + sum = 0 + For t = 0 To t1 + sum += Math.Min(0, MODdata.Pe(t)) + Next + VSUMentries("\\EnegICE").ValueString = (sum / 3600) - If Vquer = 0 Then - WorkerMsg(tMsgID.Err, "Average Speed = 0 ?!", MsgSrc) - Return False End If - VSUMsingleRef = New cVSUMsingle + 'Create Output-string: + First = True + + For Each key In VSUMentryList + If Not First Then s.Append(",") + s.Append(VSUMentries(key).ValueString) + First = False + Next + + Return s.ToString + + End Function + + Private Function HeadInit() As Boolean + Dim MsgSrc As String + + MsgSrc = "SUMALL/Output" - Select Case VSUMtype - Case tVSUM.EmptyLoaded - VSUMsingleRef.DescStr = "Empty Loading" + 'Open file + Try + Fvsum = My.Computer.FileSystem.OpenTextFileWriter(VSUMpath, True, FileFormat) + Fvsum.AutoFlush = True + Catch ex As Exception + WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & VSUMpath & ")", MsgSrc) + Return False + End Try - Case tVSUM.FullLoaded - VSUMsingleRef.DescStr = "Full Loading" + '*** Header / Units + Fvsum.WriteLine("Job,Input File,Cycle," & VSUMhead()) + Fvsum.WriteLine("[-],[-],[-]," & VSUMunits()) - Case tVSUM.RefLoaded - VSUMsingleRef.DescStr = "Reference Loading" + 'Close file (will open after each job) + Fvsum.Close() - Case Else ' tVSUM.UserDefLoaded - VSUMsingleRef.DescStr = "User-defined Loading" - End Select + HeadInitialized = True - VSUMsingleRef.Loading = VEH.Loading / 1000 - VSUMsingleRef.FCl100km = (100 * Em0.FinalAvg / Vquer) / (Cfg.FuelDens * 1000) - If VSUMsingleRef.Loading > 0 Then VSUMsingleRef.FCl100tkm = VSUMsingleRef.FCl100km / VSUMsingleRef.Loading - VSUMsingleRef.CO2gkm = Cfg.CO2perFC * (Em0.FinalAvg / Vquer) - If VSUMsingleRef.Loading > 0 Then VSUMsingleRef.CO2gtkm = VSUMsingleRef.CO2gkm / VSUMsingleRef.Loading - VSUMsingleRef.AvgSpeed = Vquer + Return True - VSUMsingleRef.FCerror = FCerror + End Function + + Public Function AusgVSUM(ByVal NrOfRunStr As String, ByVal GenFilename As String, ByVal CycleFilename As String, ByVal AbortedByError As Boolean) As Boolean + Dim str As String + Dim MsgSrc As String + Dim dic As Dictionary(Of String, Object) + Dim dic0 As Dictionary(Of String, Object) + Dim dic1 As Dictionary(Of String, Object) + Dim key As String - SingleResults.Add(VSUMsingleRef) + MsgSrc = "SUMALL/Output" + + If Not HeadInitialized Then + If Not HeadInit() Then Return False + End If + + 'JSON + dic = New Dictionary(Of String, Object) + + 'Open file + Try + Fvsum = My.Computer.FileSystem.OpenTextFileWriter(VSUMpath, True, FileFormat) + Fvsum.AutoFlush = True + Catch ex As Exception + WorkerMsg(tMsgID.Err, "Cannot access .vsum file (" & VSUMpath & ")", MsgSrc) + Return False + End Try + + str = NrOfRunStr & "," & GenFilename & "," & CycleFilename & "," + dic.Add("Job", GenFilename) + dic.Add("Cycle", CycleFilename) + + If AbortedByError Then + Fvsum.WriteLine(str & "Aborted due to Error!") + dic.Add("AbortedByError", True) + Else + Fvsum.WriteLine(str & VSUMline()) + dic.Add("AbortedByError", False) + + dic1 = New Dictionary(Of String, Object) + For Each key In VSUMentryList + dic0 = New Dictionary(Of String, Object) + dic0.Add("Value", VSUMentries(key).ValueString) + dic0.Add("Unit", VSUMentries(key).Unit) + dic1.Add(VSUMentries(key).Head, dic0) + Next + dic.Add("Results", dic1) + + End If + + ResList.Add(dic) + + + 'Close file + Fvsum.Close() + Fvsum = Nothing Return True End Function + Public Function WriteJSON() As Boolean - Public Function Output() As Boolean + vsumJSON.Content("Body").add("Results", ResList) + + Try + Return vsumJSON.WriteFile(VSUMpath & ".json") + Catch ex As Exception + Return False + End Try + + End Function + + Private Sub AddToVSUM(ByVal IDstring As String, ByVal Head As String, ByVal Unit As String) + If Not VSUMentries.ContainsKey(IDstring) Then + VSUMentries.Add(IDstring, New cVSUMentry(Head, Unit)) + VSUMentryList.Add(IDstring) + End If + End Sub + + Public Function Init(ByVal GenFile As String) As Boolean + Dim GENs As New List(Of String) + Dim str As String + Dim str1 As String + Dim iGEN As Integer Dim file As New cFile_V3 + Dim GEN0 As cVECTO + Dim MAP0 As cMAP + Dim ENG0 As cENG + Dim HEVorEVdone As Boolean + Dim EVdone As Boolean + Dim EngOnly As Boolean + Dim NonEngOnly As Boolean + Dim VSUMentry As cVSUMentry + Dim CylceKin As cCycleKin + Dim i1 As Integer + Dim i2 As Integer + Dim iDim As Integer + Dim dic As Dictionary(Of String, Object) + + Dim MsgSrc As String - Dim x As Integer - Dim VSUMsingleRef As cVSUMsingle + MsgSrc = "SUMALL/Init" - MsgSrc = "SUM/Output" + 'Check if file exists + If Not IO.File.Exists(GenFile) Then + WorkerMsg(tMsgID.Err, "Job file not found! (" & GenFile & ")", MsgSrc) + Return False + End If + + 'Define Output-path + If (PHEMmode = tPHEMmode.ModeBATCH) Then + Select Case UCase(Cfg.BATCHoutpath) + Case sKey.WorkDir + VSUMpath = Cfg.WorkDPath & fFILE(GenFile, False) & "_BATCH.vsum" + Case sKey.GenPath + VSUMpath = fFileWoExt(GenFile) & "_BATCH.vsum" + Case Else + VSUMpath = Cfg.BATCHoutpath & fFILE(GenFile, False) & "_BATCH.vsum" + End Select + Else + VSUMpath = fFileWoExt(GenFile) & ".vsum" + End If - If Not file.OpenWrite(FilePath, vbTab) Then - WorkerMsg(tMsgID.Err, "Can't write to " & FilePath, MsgSrc) + 'Open file + Try + 'Open file + Fvsum = My.Computer.FileSystem.OpenTextFileWriter(VSUMpath, False, FileFormat) + Fvsum.AutoFlush = True + Catch ex As Exception + WorkerMsg(tMsgID.Err, "Cannot write to .vsum file (" & VSUMpath & ")", MsgSrc) Return False + End Try + + 'JSON + vsumJSON = New cJSON + + dic = New Dictionary(Of String, Object) + dic.Add("CreatedBy", Lic.LicString & " (" & Lic.GUID & ")") + dic.Add("Date", Now.ToString) + dic.Add("AppVersion", VECTOvers) + dic.Add("FileVersion", FormatVersion) + vsumJSON.Content.Add("Header", dic) + vsumJSON.Content.Add("Body", New Dictionary(Of String, Object)) + dic = New Dictionary(Of String, Object) + dic.Add("Air Density [kg/m3]", Cfg.AirDensity) + dic.Add("Distance Correction", Cfg.WegKorJa) + vsumJSON.Content("Body").add("Settings", dic) + + ResList = New List(Of Dictionary(Of String, Object)) + + 'Info + Fvsum.WriteLine("VECTO results") + Fvsum.WriteLine("VECTO " & VECTOvers) + Fvsum.WriteLine(Now.ToString) + Fvsum.WriteLine("air density [kg/m3]: " & Cfg.AirDensity) + If Cfg.WegKorJa Then + Fvsum.WriteLine("Distance Correction ON") + Else + Fvsum.WriteLine("Distance Correction OFF") End If - file.WriteLine(" _ ________________________ ") - file.WriteLine("| | / ____ ______ __ __ \") - file.WriteLine("| | / / __/ / / / / / / / /") - file.WriteLine("| |/ / /___/ /___ / / / /_/ / ") - file.WriteLine("|___/_____/\____/ /_/ \____/ ") - - x = CInt((31 - 4 - Len(VECTOvers)) / 2) - file.WriteLine(Space(x) & "~ " & VECTOvers & " ~" & Space(x)) - file.WriteLine(" ") - file.WriteLine("Date:" & vbTab & Now.ToString) - file.WriteLine(" ") - file.WriteLine("Specifications") - 'TODO: Mission without Cycle-name - file.WriteLine(vbTab & "Mission: " & vbTab & fFILE(CurrentCycleFile, False)) - file.WriteLine(vbTab & "Vehicle Class: " & vbTab & VehConfig) - 'TODO: Test Setup - file.WriteLine(vbTab & "Vehicle Setup: " & vbTab & "") - file.WriteLine(" ") - file.WriteLine("Results from CO2-Simulator:") - file.WriteLine(" ") - file.WriteLine(vbTab & "Efficiency Index (FCrel): " & vbTab & EffIdx.ToString) - file.WriteLine(" ") - file.WriteLine("Single Results:") - - For Each VSUMsingleRef In SingleResults - file.WriteLine(vbTab & VSUMsingleRef.DescStr) - file.WriteLine(vbTab & vbTab & "Loading: " & vbTab & VSUMsingleRef.Loading & vbTab & "[t]") - file.WriteLine(vbTab & vbTab & "Average Speed: " & vbTab & VSUMsingleRef.AvgSpeed.ToString & vbTab & "[km/h]") - file.WriteLine(vbTab & vbTab & "Fuel Consumption" & vbTab & vbTab & "CO2 Emissions") - - If VSUMsingleRef.FCerror Then - file.WriteLine(vbTab & vbTab & "ERROR") + 'Close file (will open after each job) + Fvsum.Close() + + 'Add file to signing list + Lic.FileSigning.AddFile(VSUMpath) + Lic.FileSigning.AddFile(VSUMpath & ".json") + + + VSUMentries = New Dictionary(Of String, cVSUMentry) + VSUMentryList = New List(Of String) + + + '********************** GEN-Liste raussuchen. Bei ADVANCE aus Flotte sonst aus Jobliste '********************** |@@| Select GEN-list for ADVANCE either from Fleet or from Job-list '********************** + For Each str In JobFileList + GENs.Add(fFileRepl(str)) + Next + iGEN = GENs.Count - 1 + + + '********************** Create VSUM-Entries '********************** + EVdone = False + HEVorEVdone = False + EngOnly = False + NonEngOnly = False + + 'Vehicle type-independent + AddToVSUM("\\T", "time", "[s]") + + 'For each GEN-file check Mode and Map + For Each str In GENs + + GEN0 = New cVECTO + + GEN0.FilePath = str + + Try + If Not GEN0.ReadFile Then + WorkerMsg(tMsgID.Err, "Can't read .gen file '" & str & "' !", MsgSrc) + Return False + End If + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & str & ")", MsgSrc) + Return False + End Try + + If GEN0.EngOnly Then + + If Not EngOnly Then + + 'nothing... + + EngOnly = True + + End If + Else - file.WriteLine(vbTab & vbTab & VSUMsingleRef.FCl100km.ToString("#.0") & vbTab & "[l/100km]" & vbTab & VSUMsingleRef.CO2gkm.ToString("#.0") & vbTab & "[g/km]") - If VSUMsingleRef.Loading = 0 Then - file.WriteLine(vbTab & vbTab & "-" & vbTab & "[l/100tkm]" & vbTab & "-" & vbTab & "[g/tkm]") - Else - file.WriteLine(vbTab & vbTab & VSUMsingleRef.FCl100tkm.ToString("#.0") & vbTab & "[l/100tkm]" & vbTab & VSUMsingleRef.CO2gtkm.ToString("#.0") & vbTab & "[g/tkm]") + + If Not NonEngOnly Then + + AddToVSUM("\\S", "distance", "[km]") + AddToVSUM("\\V", "speed", "[km/h]") + AddToVSUM("\\G", "∆altitude", "[m]") + + NonEngOnly = True + End If + + 'Auxiliary energy consumption + If GEN0.AuxDef Then + For Each str1 In GEN0.AuxPaths.Keys + AddToVSUM("\\Eaux_" & UCase(str1), "Eaux_" & str1, "[kWh]") + Next + End If + End If + 'Conventional vehicles ... + AddToVSUM("\\Ppos", "Ppos", "[kW]") + AddToVSUM("\\Pneg", "Pneg", "[kW]") + + 'From the Engine-Map + ENG0 = New cENG + ENG0.FilePath = GEN0.PathENG + + Try + If Not ENG0.ReadFile Then Return False + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & GEN0.PathENG & ")", MsgSrc) + Return False + End Try + + MAP0 = New cMAP + MAP0.FilePath = ENG0.PathMAP + + Try + If Not MAP0.ReadFile(False) Then Return False 'Fehlermeldungen werden auch bei "MsgOutput = False" ausgegeben + Catch ex As Exception + WorkerMsg(tMsgID.Err, "File read error! (" & ENG0.PathMAP & ")", MsgSrc) + Return False + End Try + + If GEN0.EngOnly Then + AddToVSUM("FC_h", "FC", "[g/h]") + Else + AddToVSUM("FC_km", "FC", "[g/km]") + End If + + If Declaration.Active Then + If GEN0.EngOnly Then + AddToVSUM("FCc_h", "FC corrected", "[g/h]") + Else + AddToVSUM("FCc_km", "FC corrected", "[g/km]") + End If + End If Next - file.Close() - 'Add file to signing list - Lic.FileSigning.AddFile(FilePath) + If EngOnly Then + 'currently nothing + + End If + + If NonEngOnly Then + + 'Vehicle-related fields + AddToVSUM("\\Pbrake", "Pbrake", "[kW]") + AddToVSUM("\\EposICE", "EposICE", "[kWh]") + AddToVSUM("\\EnegICE", "EnegICE", "[kWh]") + AddToVSUM("\\Eair", "Eair", "[kWh]") + AddToVSUM("\\Eroll", "Eroll", "[kWh]") + AddToVSUM("\\Egrad", "Egrad", "[kWh]") + AddToVSUM("\\Eacc", "Eacc", "[kWh]") + AddToVSUM("\\Eaux", "Eaux", "[kWh]") + AddToVSUM("\\Ebrake", "Ebrake", "[kWh]") + AddToVSUM("\\Etransm", "Etransm", "[kWh]") + AddToVSUM("\\Mass", "Mass", "[kg]") + AddToVSUM("\\Loading", "Loading", "[kg]") + + 'CylceKin + CylceKin = New cCycleKin + For Each VSUMentry In CylceKin.VSUMentries + AddToVSUM("\\" & VSUMentry.Head, VSUMentry.Head, VSUMentry.Unit) + Next + + End If + + 'ErgListe sortieren damit g/km und g/h nebeneinander liegen |@@| Sort ErgListe so that g/km and g/h are side-by-side + iDim = VSUMentryList.Count - 1 + + For i1 = 0 To iDim - 1 + str = VSUMentries(VSUMentryList(i1)).Head + For i2 = i1 + 1 To iDim + If VSUMentries(VSUMentryList(i2)).Head = str Then + VSUMentryList.Insert(i1 + 1, VSUMentryList(i2)) + VSUMentryList.RemoveAt(i2 + 1) + End If + Next + Next + + 'Sort Aux + For i1 = 0 To iDim - 1 + str = VSUMentries(VSUMentryList(i1)).Head + If str.Length > 4 AndAlso Left(str, 4) = "Eaux" Then + For i2 = i1 + 1 To iDim + If VSUMentries(VSUMentryList(i2)).Head.Length > 4 AndAlso Left(VSUMentries(VSUMentryList(i2)).Head, 4) = "Eaux" Then + VSUMentryList.Insert(i1 + 1, VSUMentryList(i2)) + VSUMentryList.RemoveAt(i2 + 1) + End If + Next + End If + Next Return True End Function + Public ReadOnly Property VSUMfile As String + Get + Return VSUMpath + End Get + End Property + End Class -Public Class cVSUMsingle - Public Loading As Single - Public AvgSpeed As Single - Public FCl100km As Single - Public FCl100tkm As Single - Public CO2gkm As Single - Public CO2gtkm As Single - Public DescStr As String - Public FCerror As Boolean - - Public Sub ResetMe() - FCl100km = 0 - FCl100tkm = 0 - CO2gkm = 0 - CO2gtkm = 0 - DescStr = "" +Public Class cVSUMentry + Public Head As String + Public Unit As String + Public MyVal As Object + + Public Sub New(ByVal HeadStr As String, ByVal UnitStr As String) + Head = HeadStr + Unit = UnitStr + MyVal = Nothing End Sub + Public Property ValueString As Object + Get + If MyVal Is Nothing Then + Return "-" + Else + Return MyVal + End If + End Get + Set(value As Object) + MyVal = value + End Set + End Property + + End Class