From 7d99cc2860d8a922869eb92cd587e0f9f0ca8967 Mon Sep 17 00:00:00 2001
From: "Burns, Terry" <Terry.Burns@ricardo.com>
Date: Thu, 23 Oct 2014 13:35:46 +0000
Subject: [PATCH] Electrical and Pneumatics Validation Almost Complete -
 Checkpoin saftery checkin

git-tfs-id: [http://tfs00.element.root.com:8080/tfs/TFSCollection]$/VECTO;C1648
---
 AuxillaryTestHarness/Dashboard.Designer.vb    | 1154 +++++++++++++----
 AuxillaryTestHarness/Dashboard.resx           |    9 +-
 AuxillaryTestHarness/Dashboard.vb             |  331 ++++-
 .../Pneumatics/IPneumaticUserInputsConfig.vb  |   24 +-
 .../IPneumaticsAuxilliariesConfig.vb          |    2 +-
 .../M3_AveragePneumaticLoadDemand.vb          |    4 +-
 .../Pneumatics/PneumaticUserInputsConfig.vb   |   14 +-
 .../PneumaticsAuxilliariesConfig.vb           |    4 +-
 .../AveragePneumaticLoadDemandTests.vb        |    4 +-
 9 files changed, 1252 insertions(+), 294 deletions(-)

diff --git a/AuxillaryTestHarness/Dashboard.Designer.vb b/AuxillaryTestHarness/Dashboard.Designer.vb
index 1b0cf9fe4d..ec1ec8be9e 100644
--- a/AuxillaryTestHarness/Dashboard.Designer.vb
+++ b/AuxillaryTestHarness/Dashboard.Designer.vb
@@ -23,18 +23,25 @@ Partial Class Dashboard
     <System.Diagnostics.DebuggerStepThrough()> _
     Private Sub InitializeComponent()
         Me.components = New System.ComponentModel.Container()
-        Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle4 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle5 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle6 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle7 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle8 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle9 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle10 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle11 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
-        Dim DataGridViewCellStyle12 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle13 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle14 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle15 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle16 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle17 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle18 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle19 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle20 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle21 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle22 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle23 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Dim DataGridViewCellStyle24 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+        Me.brcElecConsumers = New System.Windows.Forms.BindingSource(Me.components)
+        Me.Panel1 = New System.Windows.Forms.Panel()
+        Me.btnCancel = New System.Windows.Forms.Button()
+        Me.btnFinish = New System.Windows.Forms.Button()
+        Me.btnForward = New System.Windows.Forms.Button()
+        Me.btnBack = New System.Windows.Forms.Button()
+        Me.btnStart = New System.Windows.Forms.Button()
         Me.tabMain = New System.Windows.Forms.TabControl()
         Me.tabGeneralConfig = New System.Windows.Forms.TabPage()
         Me.cboCycle = New System.Windows.Forms.ComboBox()
@@ -51,26 +58,77 @@ Partial Class Dashboard
         Me.chkSmartElectricals = New System.Windows.Forms.CheckBox()
         Me.Label6 = New System.Windows.Forms.Label()
         Me.gvElectricalConsumables = New System.Windows.Forms.DataGridView()
-        Me.brcElecConsumers = New System.Windows.Forms.BindingSource(Me.components)
         Me.txtDoorActuationTimeSeconds = New System.Windows.Forms.TextBox()
+        Me.txtAlternatorGearEfficiency = New System.Windows.Forms.TextBox()
+        Me.txtAlternatorMapPath = New System.Windows.Forms.TextBox()
+        Me.txtPowernetVoltage = New System.Windows.Forms.TextBox()
         Me.labelDoorActuationTimeSeconds = New System.Windows.Forms.Label()
         Me.Label5 = New System.Windows.Forms.Label()
-        Me.txtAlternatorGearEfficiency = New System.Windows.Forms.TextBox()
         Me.Label4 = New System.Windows.Forms.Label()
-        Me.txtAlternatorMapPath = New System.Windows.Forms.TextBox()
         Me.Label1 = New System.Windows.Forms.Label()
-        Me.txtPowernetVoltage = New System.Windows.Forms.TextBox()
         Me.tabPneumaticConfig = New System.Windows.Forms.TabPage()
+        Me.pnlPneumaticsUserInput = New System.Windows.Forms.Panel()
+        Me.Button1 = New System.Windows.Forms.Button()
+        Me.btnCompressorMap = New System.Windows.Forms.Button()
+        Me.Label10 = New System.Windows.Forms.Label()
+        Me.lblCompressorType = New System.Windows.Forms.Label()
+        Me.lblActuationsMap = New System.Windows.Forms.Label()
+        Me.chkSmartAirCompression = New System.Windows.Forms.CheckBox()
+        Me.lblSmartRegeneration = New System.Windows.Forms.Label()
+        Me.chkSmartRegeneration = New System.Windows.Forms.CheckBox()
+        Me.lblAdBlueDosing = New System.Windows.Forms.Label()
+        Me.chkRetarderBrake = New System.Windows.Forms.CheckBox()
+        Me.lblSmartAirCompression = New System.Windows.Forms.Label()
+        Me.txtKneelingHeightMillimeters = New System.Windows.Forms.TextBox()
+        Me.lblAirSuspensionControl = New System.Windows.Forms.Label()
+        Me.cboDoors = New System.Windows.Forms.ComboBox()
+        Me.lblRetarderBrake = New System.Windows.Forms.Label()
+        Me.cboCompressorType = New System.Windows.Forms.ComboBox()
+        Me.txtCompressorMap = New System.Windows.Forms.TextBox()
+        Me.lblCompressorGearEfficiency = New System.Windows.Forms.Label()
+        Me.txtCompressorGearRatio = New System.Windows.Forms.TextBox()
+        Me.lblCompressorGearRatio = New System.Windows.Forms.Label()
+        Me.txtCompressorGearEfficiency = New System.Windows.Forms.TextBox()
+        Me.lblCompressorMap = New System.Windows.Forms.Label()
+        Me.cboAirSuspensionControl = New System.Windows.Forms.ComboBox()
+        Me.lblDoors = New System.Windows.Forms.Label()
+        Me.cboAdBlueDosing = New System.Windows.Forms.ComboBox()
+        Me.lblKneelingHeightMillimeters = New System.Windows.Forms.Label()
+        Me.txtActuationsMap = New System.Windows.Forms.TextBox()
+        Me.pnlPneumaticAuxillaries = New System.Windows.Forms.Panel()
+        Me.lblPneumaticAuxillariesTitle = New System.Windows.Forms.Label()
+        Me.lblAdBlueNIperMinute = New System.Windows.Forms.Label()
+        Me.lblAirControlledSuspensionNIperMinute = New System.Windows.Forms.Label()
+        Me.lblBrakingNoRetarderNIperKG = New System.Windows.Forms.Label()
+        Me.lblBrakingWithRetarderNIperKG = New System.Windows.Forms.Label()
+        Me.lblBreakingPerKneelingNIperKGinMM = New System.Windows.Forms.Label()
+        Me.lblDeadVolBlowOutsPerLitresperHour = New System.Windows.Forms.Label()
+        Me.lblDeadVolumeLitres = New System.Windows.Forms.Label()
+        Me.lblNonSmartRegenFractionTotalAirDemand = New System.Windows.Forms.Label()
+        Me.lblOverrunUtilisationForCompressionFraction = New System.Windows.Forms.Label()
+        Me.lblPerDoorOpeningNI = New System.Windows.Forms.Label()
+        Me.lblPerStopBrakeActuationNIperKG = New System.Windows.Forms.Label()
+        Me.lblSmartRegenFractionTotalAirDemand = New System.Windows.Forms.Label()
+        Me.txtAdBlueNIperMinute = New System.Windows.Forms.TextBox()
+        Me.txtAirControlledSuspensionNIperMinute = New System.Windows.Forms.TextBox()
+        Me.txtBrakingNoRetarderNIperKG = New System.Windows.Forms.TextBox()
+        Me.txtBrakingWithRetarderNIperKG = New System.Windows.Forms.TextBox()
+        Me.txtBreakingPerKneelingNIperKGinMM = New System.Windows.Forms.TextBox()
+        Me.txtDeadVolBlowOutsPerLitresperHour = New System.Windows.Forms.TextBox()
+        Me.txtDeadVolumeLitres = New System.Windows.Forms.TextBox()
+        Me.txtNonSmartRegenFractionTotalAirDemand = New System.Windows.Forms.TextBox()
+        Me.txtOverrunUtilisationForCompressionFraction = New System.Windows.Forms.TextBox()
+        Me.txtPerDoorOpeningNI = New System.Windows.Forms.TextBox()
+        Me.txtPerStopBrakeActuationNIperKG = New System.Windows.Forms.TextBox()
+        Me.txtSmartRegenFractionTotalAirDemand = New System.Windows.Forms.TextBox()
         Me.tabHVACConfig = New System.Windows.Forms.TabPage()
         Me.tabPlayground = New System.Windows.Forms.TabPage()
-        Me.Panel1 = New System.Windows.Forms.Panel()
-        Me.btnCancel = New System.Windows.Forms.Button()
-        Me.btnFinish = New System.Windows.Forms.Button()
-        Me.btnForward = New System.Windows.Forms.Button()
-        Me.btnBack = New System.Windows.Forms.Button()
-        Me.btnStart = New System.Windows.Forms.Button()
+        Me.TabPage1 = New System.Windows.Forms.TabPage()
         Me.resultCardContextMenu = New System.Windows.Forms.ContextMenuStrip(Me.components)
         Me.DeleteToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+        Me.ErrorProvider = New System.Windows.Forms.ErrorProvider(Me.components)
+        CType(Me.brcElecConsumers,System.ComponentModel.ISupportInitialize).BeginInit
+        Me.Panel1.SuspendLayout
         Me.tabMain.SuspendLayout
         Me.tabGeneralConfig.SuspendLayout
         Me.tabElectricalConfig.SuspendLayout
@@ -78,11 +136,72 @@ Partial Class Dashboard
         CType(Me.gvResultsCardTraction,System.ComponentModel.ISupportInitialize).BeginInit
         CType(Me.gvResultsCardIdle,System.ComponentModel.ISupportInitialize).BeginInit
         CType(Me.gvElectricalConsumables,System.ComponentModel.ISupportInitialize).BeginInit
-        CType(Me.brcElecConsumers,System.ComponentModel.ISupportInitialize).BeginInit
-        Me.Panel1.SuspendLayout
+        Me.tabPneumaticConfig.SuspendLayout
+        Me.pnlPneumaticsUserInput.SuspendLayout
+        Me.pnlPneumaticAuxillaries.SuspendLayout
         Me.resultCardContextMenu.SuspendLayout
+        CType(Me.ErrorProvider,System.ComponentModel.ISupportInitialize).BeginInit
         Me.SuspendLayout
         '
+        'Panel1
+        '
+        Me.Panel1.Controls.Add(Me.btnCancel)
+        Me.Panel1.Controls.Add(Me.btnFinish)
+        Me.Panel1.Controls.Add(Me.btnForward)
+        Me.Panel1.Controls.Add(Me.btnBack)
+        Me.Panel1.Controls.Add(Me.btnStart)
+        Me.Panel1.Controls.Add(Me.tabMain)
+        Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
+        Me.Panel1.Location = New System.Drawing.Point(0, 0)
+        Me.Panel1.Name = "Panel1"
+        Me.Panel1.Size = New System.Drawing.Size(945, 712)
+        Me.Panel1.TabIndex = 1
+        '
+        'btnCancel
+        '
+        Me.btnCancel.Location = New System.Drawing.Point(827, 670)
+        Me.btnCancel.Name = "btnCancel"
+        Me.btnCancel.Size = New System.Drawing.Size(75, 23)
+        Me.btnCancel.TabIndex = 5
+        Me.btnCancel.Text = "Cancel"
+        Me.btnCancel.UseVisualStyleBackColor = true
+        '
+        'btnFinish
+        '
+        Me.btnFinish.Location = New System.Drawing.Point(745, 671)
+        Me.btnFinish.Name = "btnFinish"
+        Me.btnFinish.Size = New System.Drawing.Size(75, 23)
+        Me.btnFinish.TabIndex = 4
+        Me.btnFinish.Text = "Finish  >|"
+        Me.btnFinish.UseVisualStyleBackColor = true
+        '
+        'btnForward
+        '
+        Me.btnForward.Location = New System.Drawing.Point(621, 671)
+        Me.btnForward.Name = "btnForward"
+        Me.btnForward.Size = New System.Drawing.Size(75, 23)
+        Me.btnForward.TabIndex = 3
+        Me.btnForward.Text = "Fwd >>"
+        Me.btnForward.UseVisualStyleBackColor = true
+        '
+        'btnBack
+        '
+        Me.btnBack.Location = New System.Drawing.Point(537, 671)
+        Me.btnBack.Name = "btnBack"
+        Me.btnBack.Size = New System.Drawing.Size(75, 23)
+        Me.btnBack.TabIndex = 2
+        Me.btnBack.Text = "<< Back"
+        Me.btnBack.UseVisualStyleBackColor = true
+        '
+        'btnStart
+        '
+        Me.btnStart.Location = New System.Drawing.Point(420, 671)
+        Me.btnStart.Name = "btnStart"
+        Me.btnStart.Size = New System.Drawing.Size(75, 23)
+        Me.btnStart.TabIndex = 1
+        Me.btnStart.Text = "|< Start"
+        Me.btnStart.UseVisualStyleBackColor = true
+        '
         'tabMain
         '
         Me.tabMain.AccessibleDescription = ""
@@ -91,10 +210,11 @@ Partial Class Dashboard
         Me.tabMain.Controls.Add(Me.tabPneumaticConfig)
         Me.tabMain.Controls.Add(Me.tabHVACConfig)
         Me.tabMain.Controls.Add(Me.tabPlayground)
-        Me.tabMain.Location = New System.Drawing.Point(13, 14)
+        Me.tabMain.Controls.Add(Me.TabPage1)
+        Me.tabMain.Location = New System.Drawing.Point(12, 12)
         Me.tabMain.Name = "tabMain"
         Me.tabMain.SelectedIndex = 0
-        Me.tabMain.Size = New System.Drawing.Size(894, 636)
+        Me.tabMain.Size = New System.Drawing.Size(917, 636)
         Me.tabMain.TabIndex = 0
         Me.tabMain.Tag = ""
         '
@@ -107,7 +227,7 @@ Partial Class Dashboard
         Me.tabGeneralConfig.Location = New System.Drawing.Point(4, 22)
         Me.tabGeneralConfig.Name = "tabGeneralConfig"
         Me.tabGeneralConfig.Padding = New System.Windows.Forms.Padding(3)
-        Me.tabGeneralConfig.Size = New System.Drawing.Size(886, 610)
+        Me.tabGeneralConfig.Size = New System.Drawing.Size(909, 610)
         Me.tabGeneralConfig.TabIndex = 0
         Me.tabGeneralConfig.Text = "GeneralConfig"
         Me.tabGeneralConfig.UseVisualStyleBackColor = true
@@ -158,114 +278,114 @@ Partial Class Dashboard
         Me.tabElectricalConfig.Controls.Add(Me.Label6)
         Me.tabElectricalConfig.Controls.Add(Me.gvElectricalConsumables)
         Me.tabElectricalConfig.Controls.Add(Me.txtDoorActuationTimeSeconds)
+        Me.tabElectricalConfig.Controls.Add(Me.txtAlternatorGearEfficiency)
+        Me.tabElectricalConfig.Controls.Add(Me.txtAlternatorMapPath)
+        Me.tabElectricalConfig.Controls.Add(Me.txtPowernetVoltage)
         Me.tabElectricalConfig.Controls.Add(Me.labelDoorActuationTimeSeconds)
         Me.tabElectricalConfig.Controls.Add(Me.Label5)
-        Me.tabElectricalConfig.Controls.Add(Me.txtAlternatorGearEfficiency)
         Me.tabElectricalConfig.Controls.Add(Me.Label4)
-        Me.tabElectricalConfig.Controls.Add(Me.txtAlternatorMapPath)
         Me.tabElectricalConfig.Controls.Add(Me.Label1)
-        Me.tabElectricalConfig.Controls.Add(Me.txtPowernetVoltage)
         Me.tabElectricalConfig.Location = New System.Drawing.Point(4, 22)
         Me.tabElectricalConfig.Name = "tabElectricalConfig"
         Me.tabElectricalConfig.Padding = New System.Windows.Forms.Padding(3)
-        Me.tabElectricalConfig.Size = New System.Drawing.Size(886, 610)
+        Me.tabElectricalConfig.Size = New System.Drawing.Size(909, 610)
         Me.tabElectricalConfig.TabIndex = 1
         Me.tabElectricalConfig.Text = "ElectricalConfig"
         Me.tabElectricalConfig.UseVisualStyleBackColor = true
         '
         'gvResultsCardOverrun
         '
-        DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvResultsCardOverrun.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1
+        DataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle13.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvResultsCardOverrun.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle13
         Me.gvResultsCardOverrun.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
-        DataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText
-        DataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
-        Me.gvResultsCardOverrun.DefaultCellStyle = DataGridViewCellStyle2
+        DataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Window
+        DataGridViewCellStyle14.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.ControlText
+        DataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
+        Me.gvResultsCardOverrun.DefaultCellStyle = DataGridViewCellStyle14
         Me.gvResultsCardOverrun.Location = New System.Drawing.Point(590, 451)
         Me.gvResultsCardOverrun.Name = "gvResultsCardOverrun"
-        DataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvResultsCardOverrun.RowHeadersDefaultCellStyle = DataGridViewCellStyle3
+        DataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle15.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle15.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle15.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle15.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle15.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvResultsCardOverrun.RowHeadersDefaultCellStyle = DataGridViewCellStyle15
         Me.gvResultsCardOverrun.Size = New System.Drawing.Size(246, 125)
         Me.gvResultsCardOverrun.TabIndex = 18
         '
         'gvResultsCardTraction
         '
-        DataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvResultsCardTraction.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle4
+        DataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle16.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle16.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle16.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle16.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle16.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvResultsCardTraction.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle16
         Me.gvResultsCardTraction.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
-        DataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText
-        DataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
-        Me.gvResultsCardTraction.DefaultCellStyle = DataGridViewCellStyle5
+        DataGridViewCellStyle17.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle17.BackColor = System.Drawing.SystemColors.Window
+        DataGridViewCellStyle17.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle17.ForeColor = System.Drawing.SystemColors.ControlText
+        DataGridViewCellStyle17.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle17.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle17.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
+        Me.gvResultsCardTraction.DefaultCellStyle = DataGridViewCellStyle17
         Me.gvResultsCardTraction.Location = New System.Drawing.Point(311, 451)
         Me.gvResultsCardTraction.Name = "gvResultsCardTraction"
-        DataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvResultsCardTraction.RowHeadersDefaultCellStyle = DataGridViewCellStyle6
+        DataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle18.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle18.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle18.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle18.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle18.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle18.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvResultsCardTraction.RowHeadersDefaultCellStyle = DataGridViewCellStyle18
         Me.gvResultsCardTraction.Size = New System.Drawing.Size(258, 125)
         Me.gvResultsCardTraction.TabIndex = 17
         '
         'gvResultsCardIdle
         '
-        DataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvResultsCardIdle.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle7
+        DataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle19.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle19.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle19.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle19.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle19.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle19.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvResultsCardIdle.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle19
         Me.gvResultsCardIdle.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
-        DataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText
-        DataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
-        Me.gvResultsCardIdle.DefaultCellStyle = DataGridViewCellStyle8
+        DataGridViewCellStyle20.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle20.BackColor = System.Drawing.SystemColors.Window
+        DataGridViewCellStyle20.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle20.ForeColor = System.Drawing.SystemColors.ControlText
+        DataGridViewCellStyle20.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle20.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle20.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
+        Me.gvResultsCardIdle.DefaultCellStyle = DataGridViewCellStyle20
         Me.gvResultsCardIdle.Location = New System.Drawing.Point(35, 451)
         Me.gvResultsCardIdle.Name = "gvResultsCardIdle"
-        DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvResultsCardIdle.RowHeadersDefaultCellStyle = DataGridViewCellStyle9
+        DataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle21.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle21.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle21.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle21.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle21.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle21.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvResultsCardIdle.RowHeadersDefaultCellStyle = DataGridViewCellStyle21
         Me.gvResultsCardIdle.Size = New System.Drawing.Size(256, 125)
         Me.gvResultsCardIdle.TabIndex = 16
         '
@@ -283,9 +403,9 @@ Partial Class Dashboard
         Me.Label8.AutoSize = true
         Me.Label8.Location = New System.Drawing.Point(308, 435)
         Me.Label8.Name = "Label8"
-        Me.Label8.Size = New System.Drawing.Size(84, 13)
+        Me.Label8.Size = New System.Drawing.Size(98, 13)
         Me.Label8.TabIndex = 14
-        Me.Label8.Text = "Results Traction"
+        Me.Label8.Text = "Results TractionOn"
         '
         'Label7
         '
@@ -319,34 +439,34 @@ Partial Class Dashboard
         '
         Me.gvElectricalConsumables.AllowUserToOrderColumns = true
         Me.gvElectricalConsumables.AutoGenerateColumns = false
-        DataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvElectricalConsumables.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle10
+        DataGridViewCellStyle22.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle22.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle22.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle22.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle22.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle22.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle22.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvElectricalConsumables.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle22
         Me.gvElectricalConsumables.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
         Me.gvElectricalConsumables.DataSource = Me.brcElecConsumers
-        DataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle11.BackColor = System.Drawing.SystemColors.Window
-        DataGridViewCellStyle11.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle11.ForeColor = System.Drawing.SystemColors.ControlText
-        DataGridViewCellStyle11.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle11.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
-        Me.gvElectricalConsumables.DefaultCellStyle = DataGridViewCellStyle11
+        DataGridViewCellStyle23.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle23.BackColor = System.Drawing.SystemColors.Window
+        DataGridViewCellStyle23.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle23.ForeColor = System.Drawing.SystemColors.ControlText
+        DataGridViewCellStyle23.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle23.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle23.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
+        Me.gvElectricalConsumables.DefaultCellStyle = DataGridViewCellStyle23
         Me.gvElectricalConsumables.Location = New System.Drawing.Point(33, 170)
         Me.gvElectricalConsumables.Name = "gvElectricalConsumables"
-        DataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
-        DataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control
-        DataGridViewCellStyle12.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
-        DataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText
-        DataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight
-        DataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText
-        DataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
-        Me.gvElectricalConsumables.RowHeadersDefaultCellStyle = DataGridViewCellStyle12
+        DataGridViewCellStyle24.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+        DataGridViewCellStyle24.BackColor = System.Drawing.SystemColors.Control
+        DataGridViewCellStyle24.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        DataGridViewCellStyle24.ForeColor = System.Drawing.SystemColors.WindowText
+        DataGridViewCellStyle24.SelectionBackColor = System.Drawing.SystemColors.Highlight
+        DataGridViewCellStyle24.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+        DataGridViewCellStyle24.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+        Me.gvElectricalConsumables.RowHeadersDefaultCellStyle = DataGridViewCellStyle24
         Me.gvElectricalConsumables.Size = New System.Drawing.Size(803, 250)
         Me.gvElectricalConsumables.TabIndex = 10
         '
@@ -357,6 +477,27 @@ Partial Class Dashboard
         Me.txtDoorActuationTimeSeconds.Size = New System.Drawing.Size(100, 20)
         Me.txtDoorActuationTimeSeconds.TabIndex = 9
         '
+        'txtAlternatorGearEfficiency
+        '
+        Me.txtAlternatorGearEfficiency.Location = New System.Drawing.Point(161, 69)
+        Me.txtAlternatorGearEfficiency.Name = "txtAlternatorGearEfficiency"
+        Me.txtAlternatorGearEfficiency.Size = New System.Drawing.Size(100, 20)
+        Me.txtAlternatorGearEfficiency.TabIndex = 6
+        '
+        'txtAlternatorMapPath
+        '
+        Me.txtAlternatorMapPath.Location = New System.Drawing.Point(161, 43)
+        Me.txtAlternatorMapPath.Name = "txtAlternatorMapPath"
+        Me.txtAlternatorMapPath.Size = New System.Drawing.Size(319, 20)
+        Me.txtAlternatorMapPath.TabIndex = 4
+        '
+        'txtPowernetVoltage
+        '
+        Me.txtPowernetVoltage.Location = New System.Drawing.Point(161, 16)
+        Me.txtPowernetVoltage.Name = "txtPowernetVoltage"
+        Me.txtPowernetVoltage.Size = New System.Drawing.Size(100, 20)
+        Me.txtPowernetVoltage.TabIndex = 2
+        '
         'labelDoorActuationTimeSeconds
         '
         Me.labelDoorActuationTimeSeconds.AutoSize = true
@@ -375,59 +516,581 @@ Partial Class Dashboard
         Me.Label5.TabIndex = 7
         Me.Label5.Text = "AlternatorGearEfficiency"
         '
-        'txtAlternatorGearEfficiency
-        '
-        Me.txtAlternatorGearEfficiency.Location = New System.Drawing.Point(161, 73)
-        Me.txtAlternatorGearEfficiency.Name = "txtAlternatorGearEfficiency"
-        Me.txtAlternatorGearEfficiency.Size = New System.Drawing.Size(100, 20)
-        Me.txtAlternatorGearEfficiency.TabIndex = 6
-        '
         'Label4
         '
         Me.Label4.AutoSize = true
-        Me.Label4.Location = New System.Drawing.Point(27, 47)
+        Me.Label4.Location = New System.Drawing.Point(30, 47)
         Me.Label4.Name = "Label4"
         Me.Label4.Size = New System.Drawing.Size(73, 13)
         Me.Label4.TabIndex = 5
         Me.Label4.Text = "AlternatorMap"
         '
-        'txtAlternatorMapPath
-        '
-        Me.txtAlternatorMapPath.Location = New System.Drawing.Point(161, 43)
-        Me.txtAlternatorMapPath.Name = "txtAlternatorMapPath"
-        Me.txtAlternatorMapPath.Size = New System.Drawing.Size(319, 20)
-        Me.txtAlternatorMapPath.TabIndex = 4
-        '
         'Label1
         '
         Me.Label1.AutoSize = true
-        Me.Label1.Location = New System.Drawing.Point(24, 18)
+        Me.Label1.Location = New System.Drawing.Point(30, 18)
         Me.Label1.Name = "Label1"
         Me.Label1.Size = New System.Drawing.Size(88, 13)
         Me.Label1.TabIndex = 3
         Me.Label1.Text = "PowernetVoltage"
         '
-        'txtPowernetVoltage
-        '
-        Me.txtPowernetVoltage.Location = New System.Drawing.Point(161, 16)
-        Me.txtPowernetVoltage.Name = "txtPowernetVoltage"
-        Me.txtPowernetVoltage.Size = New System.Drawing.Size(100, 20)
-        Me.txtPowernetVoltage.TabIndex = 2
-        '
         'tabPneumaticConfig
         '
+        Me.tabPneumaticConfig.Controls.Add(Me.pnlPneumaticsUserInput)
+        Me.tabPneumaticConfig.Controls.Add(Me.pnlPneumaticAuxillaries)
         Me.tabPneumaticConfig.Location = New System.Drawing.Point(4, 22)
         Me.tabPneumaticConfig.Name = "tabPneumaticConfig"
-        Me.tabPneumaticConfig.Size = New System.Drawing.Size(886, 610)
+        Me.tabPneumaticConfig.Size = New System.Drawing.Size(909, 610)
         Me.tabPneumaticConfig.TabIndex = 2
         Me.tabPneumaticConfig.Text = "PneumaticConfig"
         Me.tabPneumaticConfig.UseVisualStyleBackColor = true
         '
+        'pnlPneumaticsUserInput
+        '
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.Button1)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.btnCompressorMap)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.Label10)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblCompressorType)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblActuationsMap)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.chkSmartAirCompression)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblSmartRegeneration)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.chkSmartRegeneration)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblAdBlueDosing)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.chkRetarderBrake)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblSmartAirCompression)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.txtKneelingHeightMillimeters)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblAirSuspensionControl)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.cboDoors)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblRetarderBrake)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.cboCompressorType)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.txtCompressorMap)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblCompressorGearEfficiency)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.txtCompressorGearRatio)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblCompressorGearRatio)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.txtCompressorGearEfficiency)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblCompressorMap)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.cboAirSuspensionControl)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblDoors)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.cboAdBlueDosing)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.lblKneelingHeightMillimeters)
+        Me.pnlPneumaticsUserInput.Controls.Add(Me.txtActuationsMap)
+        Me.pnlPneumaticsUserInput.Location = New System.Drawing.Point(403, 17)
+        Me.pnlPneumaticsUserInput.Name = "pnlPneumaticsUserInput"
+        Me.pnlPneumaticsUserInput.Size = New System.Drawing.Size(491, 576)
+        Me.pnlPneumaticsUserInput.TabIndex = 53
+        '
+        'Button1
+        '
+        Me.Button1.Location = New System.Drawing.Point(449, 387)
+        Me.Button1.Name = "Button1"
+        Me.Button1.Size = New System.Drawing.Size(35, 23)
+        Me.Button1.TabIndex = 54
+        Me.Button1.Text = ". . ."
+        Me.Button1.UseVisualStyleBackColor = true
+        '
+        'btnCompressorMap
+        '
+        Me.btnCompressorMap.Location = New System.Drawing.Point(450, 94)
+        Me.btnCompressorMap.Name = "btnCompressorMap"
+        Me.btnCompressorMap.Size = New System.Drawing.Size(35, 23)
+        Me.btnCompressorMap.TabIndex = 53
+        Me.btnCompressorMap.Text = ". . ."
+        Me.btnCompressorMap.UseVisualStyleBackColor = true
+        '
+        'Label10
+        '
+        Me.Label10.AutoSize = true
+        Me.Label10.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.Label10.ForeColor = System.Drawing.SystemColors.MenuHighlight
+        Me.Label10.Location = New System.Drawing.Point(20, 18)
+        Me.Label10.Name = "Label10"
+        Me.Label10.Size = New System.Drawing.Size(122, 13)
+        Me.Label10.TabIndex = 52
+        Me.Label10.Text = "Pneumatic Variables"
+        '
+        'lblCompressorType
+        '
+        Me.lblCompressorType.AutoSize = true
+        Me.lblCompressorType.Location = New System.Drawing.Point(13, 60)
+        Me.lblCompressorType.Name = "lblCompressorType"
+        Me.lblCompressorType.Size = New System.Drawing.Size(92, 13)
+        Me.lblCompressorType.TabIndex = 33
+        Me.lblCompressorType.Text = "Compressor Type "
+        '
+        'lblActuationsMap
+        '
+        Me.lblActuationsMap.AutoSize = true
+        Me.lblActuationsMap.Location = New System.Drawing.Point(13, 392)
+        Me.lblActuationsMap.Name = "lblActuationsMap"
+        Me.lblActuationsMap.Size = New System.Drawing.Size(81, 13)
+        Me.lblActuationsMap.TabIndex = 25
+        Me.lblActuationsMap.Text = "Actuations Map"
+        '
+        'chkSmartAirCompression
+        '
+        Me.chkSmartAirCompression.AutoSize = true
+        Me.chkSmartAirCompression.FlatStyle = System.Windows.Forms.FlatStyle.System
+        Me.chkSmartAirCompression.Location = New System.Drawing.Point(156, 469)
+        Me.chkSmartAirCompression.Name = "chkSmartAirCompression"
+        Me.chkSmartAirCompression.Size = New System.Drawing.Size(35, 18)
+        Me.chkSmartAirCompression.TabIndex = 48
+        Me.chkSmartAirCompression.Text = " "
+        Me.chkSmartAirCompression.UseVisualStyleBackColor = true
+        '
+        'lblSmartRegeneration
+        '
+        Me.lblSmartRegeneration.AutoSize = true
+        Me.lblSmartRegeneration.Location = New System.Drawing.Point(13, 515)
+        Me.lblSmartRegeneration.Name = "lblSmartRegeneration"
+        Me.lblSmartRegeneration.Size = New System.Drawing.Size(101, 13)
+        Me.lblSmartRegeneration.TabIndex = 51
+        Me.lblSmartRegeneration.Text = "Smart Regeneration"
+        '
+        'chkSmartRegeneration
+        '
+        Me.chkSmartRegeneration.AutoSize = true
+        Me.chkSmartRegeneration.FlatStyle = System.Windows.Forms.FlatStyle.System
+        Me.chkSmartRegeneration.Location = New System.Drawing.Point(156, 510)
+        Me.chkSmartRegeneration.Name = "chkSmartRegeneration"
+        Me.chkSmartRegeneration.Size = New System.Drawing.Size(35, 18)
+        Me.chkSmartRegeneration.TabIndex = 47
+        Me.chkSmartRegeneration.Text = " "
+        Me.chkSmartRegeneration.UseVisualStyleBackColor = true
+        '
+        'lblAdBlueDosing
+        '
+        Me.lblAdBlueDosing.AutoSize = true
+        Me.lblAdBlueDosing.Location = New System.Drawing.Point(13, 228)
+        Me.lblAdBlueDosing.Name = "lblAdBlueDosing"
+        Me.lblAdBlueDosing.Size = New System.Drawing.Size(77, 13)
+        Me.lblAdBlueDosing.TabIndex = 26
+        Me.lblAdBlueDosing.Text = "AdBlue Dosing"
+        '
+        'chkRetarderBrake
+        '
+        Me.chkRetarderBrake.AutoSize = true
+        Me.chkRetarderBrake.FlatStyle = System.Windows.Forms.FlatStyle.System
+        Me.chkRetarderBrake.Location = New System.Drawing.Point(156, 428)
+        Me.chkRetarderBrake.Name = "chkRetarderBrake"
+        Me.chkRetarderBrake.Size = New System.Drawing.Size(38, 18)
+        Me.chkRetarderBrake.TabIndex = 45
+        Me.chkRetarderBrake.Text = "  "
+        Me.chkRetarderBrake.UseVisualStyleBackColor = true
+        '
+        'lblSmartAirCompression
+        '
+        Me.lblSmartAirCompression.AutoSize = true
+        Me.lblSmartAirCompression.Location = New System.Drawing.Point(13, 474)
+        Me.lblSmartAirCompression.Name = "lblSmartAirCompression"
+        Me.lblSmartAirCompression.Size = New System.Drawing.Size(112, 13)
+        Me.lblSmartAirCompression.TabIndex = 50
+        Me.lblSmartAirCompression.Text = "Smart Air Compression"
+        '
+        'txtKneelingHeightMillimeters
+        '
+        Me.ErrorProvider.SetError(Me.txtKneelingHeightMillimeters, "Non negative number")
+        Me.txtKneelingHeightMillimeters.Location = New System.Drawing.Point(156, 344)
+        Me.txtKneelingHeightMillimeters.Name = "txtKneelingHeightMillimeters"
+        Me.txtKneelingHeightMillimeters.Size = New System.Drawing.Size(120, 20)
+        Me.txtKneelingHeightMillimeters.TabIndex = 44
+        '
+        'lblAirSuspensionControl
+        '
+        Me.lblAirSuspensionControl.AutoSize = true
+        Me.lblAirSuspensionControl.Location = New System.Drawing.Point(13, 270)
+        Me.lblAirSuspensionControl.Name = "lblAirSuspensionControl"
+        Me.lblAirSuspensionControl.Size = New System.Drawing.Size(113, 13)
+        Me.lblAirSuspensionControl.TabIndex = 29
+        Me.lblAirSuspensionControl.Text = "Air Suspension Control"
+        '
+        'cboDoors
+        '
+        Me.cboDoors.FormattingEnabled = true
+        Me.cboDoors.Items.AddRange(New Object() {"<Select>", "Pneumatic", "Electric"})
+        Me.cboDoors.Location = New System.Drawing.Point(156, 303)
+        Me.cboDoors.Name = "cboDoors"
+        Me.cboDoors.Size = New System.Drawing.Size(121, 21)
+        Me.cboDoors.TabIndex = 43
+        '
+        'lblRetarderBrake
+        '
+        Me.lblRetarderBrake.AutoSize = true
+        Me.lblRetarderBrake.Location = New System.Drawing.Point(13, 433)
+        Me.lblRetarderBrake.Name = "lblRetarderBrake"
+        Me.lblRetarderBrake.Size = New System.Drawing.Size(79, 13)
+        Me.lblRetarderBrake.TabIndex = 49
+        Me.lblRetarderBrake.Text = "Retarder Brake"
+        '
+        'cboCompressorType
+        '
+        Me.ErrorProvider.SetError(Me.cboCompressorType, "Select Compressor Type")
+        Me.cboCompressorType.FormattingEnabled = true
+        Me.cboCompressorType.Items.AddRange(New Object() {"<Select>", "CompressorType1", "CompressorType2", "CompressorType3"})
+        Me.cboCompressorType.Location = New System.Drawing.Point(156, 57)
+        Me.cboCompressorType.Name = "cboCompressorType"
+        Me.cboCompressorType.Size = New System.Drawing.Size(121, 21)
+        Me.cboCompressorType.TabIndex = 42
+        '
+        'txtCompressorMap
+        '
+        Me.ErrorProvider.SetError(Me.txtCompressorMap, "Valid File Path")
+        Me.txtCompressorMap.Location = New System.Drawing.Point(156, 94)
+        Me.txtCompressorMap.Name = "txtCompressorMap"
+        Me.txtCompressorMap.Size = New System.Drawing.Size(275, 20)
+        Me.txtCompressorMap.TabIndex = 41
+        '
+        'lblCompressorGearEfficiency
+        '
+        Me.lblCompressorGearEfficiency.AutoSize = true
+        Me.lblCompressorGearEfficiency.Location = New System.Drawing.Point(13, 185)
+        Me.lblCompressorGearEfficiency.Name = "lblCompressorGearEfficiency"
+        Me.lblCompressorGearEfficiency.Size = New System.Drawing.Size(137, 13)
+        Me.lblCompressorGearEfficiency.TabIndex = 30
+        Me.lblCompressorGearEfficiency.Text = "Compressor Gear Efficiency"
+        '
+        'txtCompressorGearRatio
+        '
+        Me.ErrorProvider.SetError(Me.txtCompressorGearRatio, "Non negative number")
+        Me.txtCompressorGearRatio.ForeColor = System.Drawing.Color.Black
+        Me.txtCompressorGearRatio.Location = New System.Drawing.Point(156, 139)
+        Me.txtCompressorGearRatio.Name = "txtCompressorGearRatio"
+        Me.txtCompressorGearRatio.Size = New System.Drawing.Size(121, 20)
+        Me.txtCompressorGearRatio.TabIndex = 40
+        '
+        'lblCompressorGearRatio
+        '
+        Me.lblCompressorGearRatio.AutoSize = true
+        Me.lblCompressorGearRatio.Location = New System.Drawing.Point(13, 135)
+        Me.lblCompressorGearRatio.Name = "lblCompressorGearRatio"
+        Me.lblCompressorGearRatio.Size = New System.Drawing.Size(116, 13)
+        Me.lblCompressorGearRatio.TabIndex = 31
+        Me.lblCompressorGearRatio.Text = "Compressor Gear Ratio"
+        '
+        'txtCompressorGearEfficiency
+        '
+        Me.ErrorProvider.SetError(Me.txtCompressorGearEfficiency, "Number between 0 and 1")
+        Me.txtCompressorGearEfficiency.Location = New System.Drawing.Point(156, 183)
+        Me.txtCompressorGearEfficiency.Name = "txtCompressorGearEfficiency"
+        Me.txtCompressorGearEfficiency.Size = New System.Drawing.Size(121, 20)
+        Me.txtCompressorGearEfficiency.TabIndex = 39
+        '
+        'lblCompressorMap
+        '
+        Me.lblCompressorMap.AutoSize = true
+        Me.lblCompressorMap.Location = New System.Drawing.Point(13, 94)
+        Me.lblCompressorMap.Name = "lblCompressorMap"
+        Me.lblCompressorMap.Size = New System.Drawing.Size(86, 13)
+        Me.lblCompressorMap.TabIndex = 32
+        Me.lblCompressorMap.Text = "Compressor Map"
+        '
+        'cboAirSuspensionControl
+        '
+        Me.cboAirSuspensionControl.FormattingEnabled = true
+        Me.cboAirSuspensionControl.Items.AddRange(New Object() {"<Select>", "Mechanically", "Electrically"})
+        Me.cboAirSuspensionControl.Location = New System.Drawing.Point(156, 262)
+        Me.cboAirSuspensionControl.Name = "cboAirSuspensionControl"
+        Me.cboAirSuspensionControl.Size = New System.Drawing.Size(121, 21)
+        Me.cboAirSuspensionControl.TabIndex = 28
+        '
+        'lblDoors
+        '
+        Me.lblDoors.AutoSize = true
+        Me.lblDoors.Location = New System.Drawing.Point(13, 311)
+        Me.lblDoors.Name = "lblDoors"
+        Me.lblDoors.Size = New System.Drawing.Size(79, 13)
+        Me.lblDoors.TabIndex = 34
+        Me.lblDoors.Text = "Door Operation"
+        '
+        'cboAdBlueDosing
+        '
+        Me.cboAdBlueDosing.FormattingEnabled = true
+        Me.cboAdBlueDosing.Items.AddRange(New Object() {"<Select>", "Pneumatic", "Electric"})
+        Me.cboAdBlueDosing.Location = New System.Drawing.Point(156, 221)
+        Me.cboAdBlueDosing.Name = "cboAdBlueDosing"
+        Me.cboAdBlueDosing.Size = New System.Drawing.Size(121, 21)
+        Me.cboAdBlueDosing.TabIndex = 27
+        '
+        'lblKneelingHeightMillimeters
+        '
+        Me.lblKneelingHeightMillimeters.AutoSize = true
+        Me.lblKneelingHeightMillimeters.Location = New System.Drawing.Point(13, 351)
+        Me.lblKneelingHeightMillimeters.Name = "lblKneelingHeightMillimeters"
+        Me.lblKneelingHeightMillimeters.Size = New System.Drawing.Size(133, 13)
+        Me.lblKneelingHeightMillimeters.TabIndex = 35
+        Me.lblKneelingHeightMillimeters.Text = "Kneeling Height Millimeters"
+        '
+        'txtActuationsMap
+        '
+        Me.ErrorProvider.SetError(Me.txtActuationsMap, "Valid File Path")
+        Me.txtActuationsMap.Location = New System.Drawing.Point(156, 389)
+        Me.txtActuationsMap.Name = "txtActuationsMap"
+        Me.txtActuationsMap.Size = New System.Drawing.Size(275, 20)
+        Me.txtActuationsMap.TabIndex = 24
+        '
+        'pnlPneumaticAuxillaries
+        '
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblPneumaticAuxillariesTitle)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblAdBlueNIperMinute)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblAirControlledSuspensionNIperMinute)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblBrakingNoRetarderNIperKG)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblBrakingWithRetarderNIperKG)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblBreakingPerKneelingNIperKGinMM)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblDeadVolBlowOutsPerLitresperHour)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblDeadVolumeLitres)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblNonSmartRegenFractionTotalAirDemand)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblOverrunUtilisationForCompressionFraction)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblPerDoorOpeningNI)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblPerStopBrakeActuationNIperKG)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.lblSmartRegenFractionTotalAirDemand)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtAdBlueNIperMinute)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtAirControlledSuspensionNIperMinute)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtBrakingNoRetarderNIperKG)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtBrakingWithRetarderNIperKG)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtBreakingPerKneelingNIperKGinMM)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtDeadVolBlowOutsPerLitresperHour)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtDeadVolumeLitres)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtNonSmartRegenFractionTotalAirDemand)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtOverrunUtilisationForCompressionFraction)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtPerDoorOpeningNI)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtPerStopBrakeActuationNIperKG)
+        Me.pnlPneumaticAuxillaries.Controls.Add(Me.txtSmartRegenFractionTotalAirDemand)
+        Me.pnlPneumaticAuxillaries.Location = New System.Drawing.Point(20, 17)
+        Me.pnlPneumaticAuxillaries.Name = "pnlPneumaticAuxillaries"
+        Me.pnlPneumaticAuxillaries.Size = New System.Drawing.Size(363, 576)
+        Me.pnlPneumaticAuxillaries.TabIndex = 52
+        '
+        'lblPneumaticAuxillariesTitle
+        '
+        Me.lblPneumaticAuxillariesTitle.AutoSize = true
+        Me.lblPneumaticAuxillariesTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+        Me.lblPneumaticAuxillariesTitle.ForeColor = System.Drawing.SystemColors.MenuHighlight
+        Me.lblPneumaticAuxillariesTitle.Location = New System.Drawing.Point(23, 18)
+        Me.lblPneumaticAuxillariesTitle.Name = "lblPneumaticAuxillariesTitle"
+        Me.lblPneumaticAuxillariesTitle.Size = New System.Drawing.Size(158, 13)
+        Me.lblPneumaticAuxillariesTitle.TabIndex = 24
+        Me.lblPneumaticAuxillariesTitle.Text = "Pneumatic Auxillaries Data"
+        '
+        'lblAdBlueNIperMinute
+        '
+        Me.lblAdBlueNIperMinute.AutoSize = true
+        Me.lblAdBlueNIperMinute.Location = New System.Drawing.Point(20, 60)
+        Me.lblAdBlueNIperMinute.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblAdBlueNIperMinute.Name = "lblAdBlueNIperMinute"
+        Me.lblAdBlueNIperMinute.Size = New System.Drawing.Size(120, 13)
+        Me.lblAdBlueNIperMinute.TabIndex = 12
+        Me.lblAdBlueNIperMinute.Text = "AdBlue NI per Minute "
+        '
+        'lblAirControlledSuspensionNIperMinute
+        '
+        Me.lblAirControlledSuspensionNIperMinute.AutoSize = true
+        Me.lblAirControlledSuspensionNIperMinute.Location = New System.Drawing.Point(20, 99)
+        Me.lblAirControlledSuspensionNIperMinute.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblAirControlledSuspensionNIperMinute.Name = "lblAirControlledSuspensionNIperMinute"
+        Me.lblAirControlledSuspensionNIperMinute.Size = New System.Drawing.Size(184, 13)
+        Me.lblAirControlledSuspensionNIperMinute.TabIndex = 13
+        Me.lblAirControlledSuspensionNIperMinute.Text = "Air Controlled Suspension NI / Minute"
+        '
+        'lblBrakingNoRetarderNIperKG
+        '
+        Me.lblBrakingNoRetarderNIperKG.AutoSize = true
+        Me.lblBrakingNoRetarderNIperKG.Location = New System.Drawing.Point(20, 140)
+        Me.lblBrakingNoRetarderNIperKG.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblBrakingNoRetarderNIperKG.Name = "lblBrakingNoRetarderNIperKG"
+        Me.lblBrakingNoRetarderNIperKG.Size = New System.Drawing.Size(138, 13)
+        Me.lblBrakingNoRetarderNIperKG.TabIndex = 14
+        Me.lblBrakingNoRetarderNIperKG.Text = "Braking No Retarder NI/KG"
+        '
+        'lblBrakingWithRetarderNIperKG
+        '
+        Me.lblBrakingWithRetarderNIperKG.AutoSize = true
+        Me.lblBrakingWithRetarderNIperKG.Location = New System.Drawing.Point(20, 183)
+        Me.lblBrakingWithRetarderNIperKG.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblBrakingWithRetarderNIperKG.Name = "lblBrakingWithRetarderNIperKG"
+        Me.lblBrakingWithRetarderNIperKG.Size = New System.Drawing.Size(146, 13)
+        Me.lblBrakingWithRetarderNIperKG.TabIndex = 15
+        Me.lblBrakingWithRetarderNIperKG.Text = "Braking With Retarder NI/KG"
+        '
+        'lblBreakingPerKneelingNIperKGinMM
+        '
+        Me.lblBreakingPerKneelingNIperKGinMM.AutoSize = true
+        Me.lblBreakingPerKneelingNIperKGinMM.Location = New System.Drawing.Point(20, 222)
+        Me.lblBreakingPerKneelingNIperKGinMM.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblBreakingPerKneelingNIperKGinMM.Name = "lblBreakingPerKneelingNIperKGinMM"
+        Me.lblBreakingPerKneelingNIperKGinMM.Size = New System.Drawing.Size(178, 13)
+        Me.lblBreakingPerKneelingNIperKGinMM.TabIndex = 16
+        Me.lblBreakingPerKneelingNIperKGinMM.Text = "Breaking Per Kneeling NI/KG in MM"
+        '
+        'lblDeadVolBlowOutsPerLitresperHour
+        '
+        Me.lblDeadVolBlowOutsPerLitresperHour.AutoSize = true
+        Me.lblDeadVolBlowOutsPerLitresperHour.Location = New System.Drawing.Point(20, 263)
+        Me.lblDeadVolBlowOutsPerLitresperHour.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblDeadVolBlowOutsPerLitresperHour.Name = "lblDeadVolBlowOutsPerLitresperHour"
+        Me.lblDeadVolBlowOutsPerLitresperHour.Size = New System.Drawing.Size(148, 13)
+        Me.lblDeadVolBlowOutsPerLitresperHour.TabIndex = 17
+        Me.lblDeadVolBlowOutsPerLitresperHour.Text = "Dead Vol Blowouts /L / Hour "
+        '
+        'lblDeadVolumeLitres
+        '
+        Me.lblDeadVolumeLitres.AutoSize = true
+        Me.lblDeadVolumeLitres.Location = New System.Drawing.Point(20, 303)
+        Me.lblDeadVolumeLitres.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblDeadVolumeLitres.Name = "lblDeadVolumeLitres"
+        Me.lblDeadVolumeLitres.Size = New System.Drawing.Size(120, 13)
+        Me.lblDeadVolumeLitres.TabIndex = 18
+        Me.lblDeadVolumeLitres.Text = "Dead Volume Litres"
+        '
+        'lblNonSmartRegenFractionTotalAirDemand
+        '
+        Me.lblNonSmartRegenFractionTotalAirDemand.AutoSize = true
+        Me.lblNonSmartRegenFractionTotalAirDemand.Location = New System.Drawing.Point(20, 346)
+        Me.lblNonSmartRegenFractionTotalAirDemand.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblNonSmartRegenFractionTotalAirDemand.Name = "lblNonSmartRegenFractionTotalAirDemand"
+        Me.lblNonSmartRegenFractionTotalAirDemand.Size = New System.Drawing.Size(218, 13)
+        Me.lblNonSmartRegenFractionTotalAirDemand.TabIndex = 19
+        Me.lblNonSmartRegenFractionTotalAirDemand.Text = "Non Smart Regen Fraction Total Air Demand"
+        '
+        'lblOverrunUtilisationForCompressionFraction
+        '
+        Me.lblOverrunUtilisationForCompressionFraction.AutoSize = true
+        Me.lblOverrunUtilisationForCompressionFraction.Location = New System.Drawing.Point(20, 388)
+        Me.lblOverrunUtilisationForCompressionFraction.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblOverrunUtilisationForCompressionFraction.Name = "lblOverrunUtilisationForCompressionFraction"
+        Me.lblOverrunUtilisationForCompressionFraction.Size = New System.Drawing.Size(215, 13)
+        Me.lblOverrunUtilisationForCompressionFraction.TabIndex = 20
+        Me.lblOverrunUtilisationForCompressionFraction.Text = "Overrun Utilisation For Compression Fraction"
+        '
+        'lblPerDoorOpeningNI
+        '
+        Me.lblPerDoorOpeningNI.AutoSize = true
+        Me.lblPerDoorOpeningNI.Location = New System.Drawing.Point(20, 427)
+        Me.lblPerDoorOpeningNI.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblPerDoorOpeningNI.Name = "lblPerDoorOpeningNI"
+        Me.lblPerDoorOpeningNI.Size = New System.Drawing.Size(120, 13)
+        Me.lblPerDoorOpeningNI.TabIndex = 21
+        Me.lblPerDoorOpeningNI.Text = "Per Door Opening NI"
+        '
+        'lblPerStopBrakeActuationNIperKG
+        '
+        Me.lblPerStopBrakeActuationNIperKG.AutoSize = true
+        Me.lblPerStopBrakeActuationNIperKG.Location = New System.Drawing.Point(20, 469)
+        Me.lblPerStopBrakeActuationNIperKG.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblPerStopBrakeActuationNIperKG.Name = "lblPerStopBrakeActuationNIperKG"
+        Me.lblPerStopBrakeActuationNIperKG.Size = New System.Drawing.Size(161, 13)
+        Me.lblPerStopBrakeActuationNIperKG.TabIndex = 22
+        Me.lblPerStopBrakeActuationNIperKG.Text = "Per Stop Brake Actuation NI/KG"
+        '
+        'lblSmartRegenFractionTotalAirDemand
+        '
+        Me.lblSmartRegenFractionTotalAirDemand.AutoSize = true
+        Me.lblSmartRegenFractionTotalAirDemand.Location = New System.Drawing.Point(20, 510)
+        Me.lblSmartRegenFractionTotalAirDemand.MinimumSize = New System.Drawing.Size(120, 0)
+        Me.lblSmartRegenFractionTotalAirDemand.Name = "lblSmartRegenFractionTotalAirDemand"
+        Me.lblSmartRegenFractionTotalAirDemand.Size = New System.Drawing.Size(195, 13)
+        Me.lblSmartRegenFractionTotalAirDemand.TabIndex = 23
+        Me.lblSmartRegenFractionTotalAirDemand.Text = "Smart Regen Fraction Total Air Demand"
+        '
+        'txtAdBlueNIperMinute
+        '
+        Me.ErrorProvider.SetError(Me.txtAdBlueNIperMinute, "Non negative number")
+        Me.txtAdBlueNIperMinute.Location = New System.Drawing.Point(242, 57)
+        Me.txtAdBlueNIperMinute.Name = "txtAdBlueNIperMinute"
+        Me.txtAdBlueNIperMinute.Size = New System.Drawing.Size(100, 20)
+        Me.txtAdBlueNIperMinute.TabIndex = 0
+        '
+        'txtAirControlledSuspensionNIperMinute
+        '
+        Me.ErrorProvider.SetError(Me.txtAirControlledSuspensionNIperMinute, "Non negative number")
+        Me.txtAirControlledSuspensionNIperMinute.Location = New System.Drawing.Point(242, 98)
+        Me.txtAirControlledSuspensionNIperMinute.Name = "txtAirControlledSuspensionNIperMinute"
+        Me.txtAirControlledSuspensionNIperMinute.Size = New System.Drawing.Size(100, 20)
+        Me.txtAirControlledSuspensionNIperMinute.TabIndex = 1
+        '
+        'txtBrakingNoRetarderNIperKG
+        '
+        Me.ErrorProvider.SetError(Me.txtBrakingNoRetarderNIperKG, "Non negative number")
+        Me.txtBrakingNoRetarderNIperKG.Location = New System.Drawing.Point(242, 139)
+        Me.txtBrakingNoRetarderNIperKG.Name = "txtBrakingNoRetarderNIperKG"
+        Me.txtBrakingNoRetarderNIperKG.Size = New System.Drawing.Size(100, 20)
+        Me.txtBrakingNoRetarderNIperKG.TabIndex = 2
+        '
+        'txtBrakingWithRetarderNIperKG
+        '
+        Me.ErrorProvider.SetError(Me.txtBrakingWithRetarderNIperKG, "Non negative number")
+        Me.txtBrakingWithRetarderNIperKG.Location = New System.Drawing.Point(242, 183)
+        Me.txtBrakingWithRetarderNIperKG.Name = "txtBrakingWithRetarderNIperKG"
+        Me.txtBrakingWithRetarderNIperKG.Size = New System.Drawing.Size(100, 20)
+        Me.txtBrakingWithRetarderNIperKG.TabIndex = 3
+        '
+        'txtBreakingPerKneelingNIperKGinMM
+        '
+        Me.ErrorProvider.SetError(Me.txtBreakingPerKneelingNIperKGinMM, "Non negative number")
+        Me.txtBreakingPerKneelingNIperKGinMM.Location = New System.Drawing.Point(242, 221)
+        Me.txtBreakingPerKneelingNIperKGinMM.Name = "txtBreakingPerKneelingNIperKGinMM"
+        Me.txtBreakingPerKneelingNIperKGinMM.Size = New System.Drawing.Size(100, 20)
+        Me.txtBreakingPerKneelingNIperKGinMM.TabIndex = 4
+        '
+        'txtDeadVolBlowOutsPerLitresperHour
+        '
+        Me.ErrorProvider.SetError(Me.txtDeadVolBlowOutsPerLitresperHour, "Non negative number")
+        Me.txtDeadVolBlowOutsPerLitresperHour.Location = New System.Drawing.Point(242, 262)
+        Me.txtDeadVolBlowOutsPerLitresperHour.Name = "txtDeadVolBlowOutsPerLitresperHour"
+        Me.txtDeadVolBlowOutsPerLitresperHour.Size = New System.Drawing.Size(100, 20)
+        Me.txtDeadVolBlowOutsPerLitresperHour.TabIndex = 5
+        '
+        'txtDeadVolumeLitres
+        '
+        Me.ErrorProvider.SetError(Me.txtDeadVolumeLitres, "Non negative number")
+        Me.txtDeadVolumeLitres.Location = New System.Drawing.Point(242, 303)
+        Me.txtDeadVolumeLitres.Name = "txtDeadVolumeLitres"
+        Me.txtDeadVolumeLitres.Size = New System.Drawing.Size(100, 20)
+        Me.txtDeadVolumeLitres.TabIndex = 6
+        '
+        'txtNonSmartRegenFractionTotalAirDemand
+        '
+        Me.ErrorProvider.SetError(Me.txtNonSmartRegenFractionTotalAirDemand, "Non negative number")
+        Me.txtNonSmartRegenFractionTotalAirDemand.Location = New System.Drawing.Point(242, 344)
+        Me.txtNonSmartRegenFractionTotalAirDemand.Name = "txtNonSmartRegenFractionTotalAirDemand"
+        Me.txtNonSmartRegenFractionTotalAirDemand.Size = New System.Drawing.Size(100, 20)
+        Me.txtNonSmartRegenFractionTotalAirDemand.TabIndex = 7
+        '
+        'txtOverrunUtilisationForCompressionFraction
+        '
+        Me.ErrorProvider.SetError(Me.txtOverrunUtilisationForCompressionFraction, "Non negative number")
+        Me.txtOverrunUtilisationForCompressionFraction.Location = New System.Drawing.Point(242, 385)
+        Me.txtOverrunUtilisationForCompressionFraction.Name = "txtOverrunUtilisationForCompressionFraction"
+        Me.txtOverrunUtilisationForCompressionFraction.Size = New System.Drawing.Size(100, 20)
+        Me.txtOverrunUtilisationForCompressionFraction.TabIndex = 8
+        '
+        'txtPerDoorOpeningNI
+        '
+        Me.ErrorProvider.SetError(Me.txtPerDoorOpeningNI, "Non negative number")
+        Me.txtPerDoorOpeningNI.Location = New System.Drawing.Point(242, 426)
+        Me.txtPerDoorOpeningNI.Name = "txtPerDoorOpeningNI"
+        Me.txtPerDoorOpeningNI.Size = New System.Drawing.Size(100, 20)
+        Me.txtPerDoorOpeningNI.TabIndex = 9
+        '
+        'txtPerStopBrakeActuationNIperKG
+        '
+        Me.ErrorProvider.SetError(Me.txtPerStopBrakeActuationNIperKG, "Non negative number")
+        Me.txtPerStopBrakeActuationNIperKG.Location = New System.Drawing.Point(242, 467)
+        Me.txtPerStopBrakeActuationNIperKG.Name = "txtPerStopBrakeActuationNIperKG"
+        Me.txtPerStopBrakeActuationNIperKG.Size = New System.Drawing.Size(100, 20)
+        Me.txtPerStopBrakeActuationNIperKG.TabIndex = 10
+        '
+        'txtSmartRegenFractionTotalAirDemand
+        '
+        Me.ErrorProvider.SetError(Me.txtSmartRegenFractionTotalAirDemand, "Non negative number")
+        Me.txtSmartRegenFractionTotalAirDemand.Location = New System.Drawing.Point(242, 508)
+        Me.txtSmartRegenFractionTotalAirDemand.Name = "txtSmartRegenFractionTotalAirDemand"
+        Me.txtSmartRegenFractionTotalAirDemand.Size = New System.Drawing.Size(100, 20)
+        Me.txtSmartRegenFractionTotalAirDemand.TabIndex = 11
+        '
         'tabHVACConfig
         '
         Me.tabHVACConfig.Location = New System.Drawing.Point(4, 22)
         Me.tabHVACConfig.Name = "tabHVACConfig"
-        Me.tabHVACConfig.Size = New System.Drawing.Size(886, 610)
+        Me.tabHVACConfig.Size = New System.Drawing.Size(909, 610)
         Me.tabHVACConfig.TabIndex = 3
         Me.tabHVACConfig.Text = "HVACConfig"
         Me.tabHVACConfig.UseVisualStyleBackColor = true
@@ -436,69 +1099,20 @@ Partial Class Dashboard
         '
         Me.tabPlayground.Location = New System.Drawing.Point(4, 22)
         Me.tabPlayground.Name = "tabPlayground"
-        Me.tabPlayground.Size = New System.Drawing.Size(886, 610)
+        Me.tabPlayground.Size = New System.Drawing.Size(909, 610)
         Me.tabPlayground.TabIndex = 4
         Me.tabPlayground.Text = "Playground"
         Me.tabPlayground.UseVisualStyleBackColor = true
         '
-        'Panel1
-        '
-        Me.Panel1.Controls.Add(Me.btnCancel)
-        Me.Panel1.Controls.Add(Me.btnFinish)
-        Me.Panel1.Controls.Add(Me.btnForward)
-        Me.Panel1.Controls.Add(Me.btnBack)
-        Me.Panel1.Controls.Add(Me.btnStart)
-        Me.Panel1.Controls.Add(Me.tabMain)
-        Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
-        Me.Panel1.Location = New System.Drawing.Point(0, 0)
-        Me.Panel1.Name = "Panel1"
-        Me.Panel1.Size = New System.Drawing.Size(937, 732)
-        Me.Panel1.TabIndex = 1
-        '
-        'btnCancel
-        '
-        Me.btnCancel.Location = New System.Drawing.Point(827, 670)
-        Me.btnCancel.Name = "btnCancel"
-        Me.btnCancel.Size = New System.Drawing.Size(75, 23)
-        Me.btnCancel.TabIndex = 5
-        Me.btnCancel.Text = "Cancel"
-        Me.btnCancel.UseVisualStyleBackColor = true
-        '
-        'btnFinish
-        '
-        Me.btnFinish.Location = New System.Drawing.Point(745, 671)
-        Me.btnFinish.Name = "btnFinish"
-        Me.btnFinish.Size = New System.Drawing.Size(75, 23)
-        Me.btnFinish.TabIndex = 4
-        Me.btnFinish.Text = "Finish  >|"
-        Me.btnFinish.UseVisualStyleBackColor = true
-        '
-        'btnForward
-        '
-        Me.btnForward.Location = New System.Drawing.Point(621, 671)
-        Me.btnForward.Name = "btnForward"
-        Me.btnForward.Size = New System.Drawing.Size(75, 23)
-        Me.btnForward.TabIndex = 3
-        Me.btnForward.Text = "Fwd >>"
-        Me.btnForward.UseVisualStyleBackColor = true
+        'TabPage1
         '
-        'btnBack
-        '
-        Me.btnBack.Location = New System.Drawing.Point(537, 671)
-        Me.btnBack.Name = "btnBack"
-        Me.btnBack.Size = New System.Drawing.Size(75, 23)
-        Me.btnBack.TabIndex = 2
-        Me.btnBack.Text = "<< Back"
-        Me.btnBack.UseVisualStyleBackColor = true
-        '
-        'btnStart
-        '
-        Me.btnStart.Location = New System.Drawing.Point(420, 671)
-        Me.btnStart.Name = "btnStart"
-        Me.btnStart.Size = New System.Drawing.Size(75, 23)
-        Me.btnStart.TabIndex = 1
-        Me.btnStart.Text = "|< Start"
-        Me.btnStart.UseVisualStyleBackColor = true
+        Me.TabPage1.Location = New System.Drawing.Point(4, 22)
+        Me.TabPage1.Name = "TabPage1"
+        Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
+        Me.TabPage1.Size = New System.Drawing.Size(909, 610)
+        Me.TabPage1.TabIndex = 5
+        Me.TabPage1.Text = "TabPage1"
+        Me.TabPage1.UseVisualStyleBackColor = true
         '
         'resultCardContextMenu
         '
@@ -512,14 +1126,20 @@ Partial Class Dashboard
         Me.DeleteToolStripMenuItem.Size = New System.Drawing.Size(107, 22)
         Me.DeleteToolStripMenuItem.Text = "Delete"
         '
+        'ErrorProvider
+        '
+        Me.ErrorProvider.ContainerControl = Me
+        '
         'Dashboard
         '
         Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
-        Me.ClientSize = New System.Drawing.Size(937, 732)
+        Me.ClientSize = New System.Drawing.Size(945, 712)
         Me.Controls.Add(Me.Panel1)
         Me.Name = "Dashboard"
         Me.Text = "Dashboard"
+        CType(Me.brcElecConsumers,System.ComponentModel.ISupportInitialize).EndInit
+        Me.Panel1.ResumeLayout(false)
         Me.tabMain.ResumeLayout(false)
         Me.tabGeneralConfig.ResumeLayout(false)
         Me.tabGeneralConfig.PerformLayout
@@ -529,46 +1149,106 @@ Partial Class Dashboard
         CType(Me.gvResultsCardTraction,System.ComponentModel.ISupportInitialize).EndInit
         CType(Me.gvResultsCardIdle,System.ComponentModel.ISupportInitialize).EndInit
         CType(Me.gvElectricalConsumables,System.ComponentModel.ISupportInitialize).EndInit
-        CType(Me.brcElecConsumers,System.ComponentModel.ISupportInitialize).EndInit
-        Me.Panel1.ResumeLayout(false)
+        Me.tabPneumaticConfig.ResumeLayout(false)
+        Me.pnlPneumaticsUserInput.ResumeLayout(false)
+        Me.pnlPneumaticsUserInput.PerformLayout
+        Me.pnlPneumaticAuxillaries.ResumeLayout(false)
+        Me.pnlPneumaticAuxillaries.PerformLayout
         Me.resultCardContextMenu.ResumeLayout(false)
+        CType(Me.ErrorProvider,System.ComponentModel.ISupportInitialize).EndInit
         Me.ResumeLayout(false)
 
 End Sub
+    Friend WithEvents Panel1 As System.Windows.Forms.Panel
+    Friend WithEvents btnCancel As System.Windows.Forms.Button
+    Friend WithEvents btnFinish As System.Windows.Forms.Button
+    Friend WithEvents btnForward As System.Windows.Forms.Button
+    Friend WithEvents btnBack As System.Windows.Forms.Button
+    Friend WithEvents btnStart As System.Windows.Forms.Button
+    Friend WithEvents brcElecConsumers As System.Windows.Forms.BindingSource
+    Friend WithEvents resultCardContextMenu As System.Windows.Forms.ContextMenuStrip
+    Friend WithEvents DeleteToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+    Friend WithEvents ErrorProvider As System.Windows.Forms.ErrorProvider
     Friend WithEvents tabMain As System.Windows.Forms.TabControl
     Friend WithEvents tabGeneralConfig As System.Windows.Forms.TabPage
-    Friend WithEvents tabElectricalConfig As System.Windows.Forms.TabPage
-    Friend WithEvents tabPneumaticConfig As System.Windows.Forms.TabPage
-    Friend WithEvents tabHVACConfig As System.Windows.Forms.TabPage
-    Friend WithEvents tabPlayground As System.Windows.Forms.TabPage
     Friend WithEvents cboCycle As System.Windows.Forms.ComboBox
     Friend WithEvents Label3 As System.Windows.Forms.Label
     Friend WithEvents Label2 As System.Windows.Forms.Label
     Friend WithEvents txtVehicleWeightKG As System.Windows.Forms.TextBox
-    Friend WithEvents txtDoorActuationTimeSeconds As System.Windows.Forms.TextBox
-    Friend WithEvents labelDoorActuationTimeSeconds As System.Windows.Forms.Label
-    Friend WithEvents Label5 As System.Windows.Forms.Label
-    Friend WithEvents txtAlternatorGearEfficiency As System.Windows.Forms.TextBox
-    Friend WithEvents Label4 As System.Windows.Forms.Label
-    Friend WithEvents txtAlternatorMapPath As System.Windows.Forms.TextBox
-    Friend WithEvents Label1 As System.Windows.Forms.Label
-    Friend WithEvents txtPowernetVoltage As System.Windows.Forms.TextBox
+    Friend WithEvents tabElectricalConfig As System.Windows.Forms.TabPage
     Friend WithEvents gvResultsCardOverrun As System.Windows.Forms.DataGridView
     Friend WithEvents gvResultsCardTraction As System.Windows.Forms.DataGridView
+    Public WithEvents gvResultsCardIdle As System.Windows.Forms.DataGridView
     Friend WithEvents Label9 As System.Windows.Forms.Label
     Friend WithEvents Label8 As System.Windows.Forms.Label
     Friend WithEvents Label7 As System.Windows.Forms.Label
     Friend WithEvents chkSmartElectricals As System.Windows.Forms.CheckBox
     Friend WithEvents Label6 As System.Windows.Forms.Label
     Friend WithEvents gvElectricalConsumables As System.Windows.Forms.DataGridView
-    Friend WithEvents Panel1 As System.Windows.Forms.Panel
-    Friend WithEvents btnCancel As System.Windows.Forms.Button
-    Friend WithEvents btnFinish As System.Windows.Forms.Button
-    Friend WithEvents btnForward As System.Windows.Forms.Button
-    Friend WithEvents btnBack As System.Windows.Forms.Button
-    Friend WithEvents btnStart As System.Windows.Forms.Button
-    Friend WithEvents brcElecConsumers As System.Windows.Forms.BindingSource
-    Public WithEvents gvResultsCardIdle As System.Windows.Forms.DataGridView
-    Friend WithEvents resultCardContextMenu As System.Windows.Forms.ContextMenuStrip
-    Friend WithEvents DeleteToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
+    Friend WithEvents txtDoorActuationTimeSeconds As System.Windows.Forms.TextBox
+    Friend WithEvents txtAlternatorGearEfficiency As System.Windows.Forms.TextBox
+    Friend WithEvents txtAlternatorMapPath As System.Windows.Forms.TextBox
+    Friend WithEvents txtPowernetVoltage As System.Windows.Forms.TextBox
+    Friend WithEvents labelDoorActuationTimeSeconds As System.Windows.Forms.Label
+    Friend WithEvents Label5 As System.Windows.Forms.Label
+    Friend WithEvents Label4 As System.Windows.Forms.Label
+    Friend WithEvents Label1 As System.Windows.Forms.Label
+    Friend WithEvents tabPneumaticConfig As System.Windows.Forms.TabPage
+    Friend WithEvents pnlPneumaticsUserInput As System.Windows.Forms.Panel
+    Friend WithEvents Button1 As System.Windows.Forms.Button
+    Friend WithEvents btnCompressorMap As System.Windows.Forms.Button
+    Friend WithEvents Label10 As System.Windows.Forms.Label
+    Friend WithEvents lblCompressorType As System.Windows.Forms.Label
+    Friend WithEvents lblActuationsMap As System.Windows.Forms.Label
+    Friend WithEvents chkSmartAirCompression As System.Windows.Forms.CheckBox
+    Friend WithEvents lblSmartRegeneration As System.Windows.Forms.Label
+    Friend WithEvents chkSmartRegeneration As System.Windows.Forms.CheckBox
+    Friend WithEvents lblAdBlueDosing As System.Windows.Forms.Label
+    Friend WithEvents chkRetarderBrake As System.Windows.Forms.CheckBox
+    Friend WithEvents lblSmartAirCompression As System.Windows.Forms.Label
+    Friend WithEvents txtKneelingHeightMillimeters As System.Windows.Forms.TextBox
+    Friend WithEvents lblAirSuspensionControl As System.Windows.Forms.Label
+    Friend WithEvents cboDoors As System.Windows.Forms.ComboBox
+    Friend WithEvents lblRetarderBrake As System.Windows.Forms.Label
+    Friend WithEvents cboCompressorType As System.Windows.Forms.ComboBox
+    Friend WithEvents txtCompressorMap As System.Windows.Forms.TextBox
+    Friend WithEvents lblCompressorGearEfficiency As System.Windows.Forms.Label
+    Friend WithEvents txtCompressorGearRatio As System.Windows.Forms.TextBox
+    Friend WithEvents lblCompressorGearRatio As System.Windows.Forms.Label
+    Friend WithEvents txtCompressorGearEfficiency As System.Windows.Forms.TextBox
+    Friend WithEvents lblCompressorMap As System.Windows.Forms.Label
+    Friend WithEvents cboAirSuspensionControl As System.Windows.Forms.ComboBox
+    Friend WithEvents lblDoors As System.Windows.Forms.Label
+    Friend WithEvents cboAdBlueDosing As System.Windows.Forms.ComboBox
+    Friend WithEvents lblKneelingHeightMillimeters As System.Windows.Forms.Label
+    Friend WithEvents txtActuationsMap As System.Windows.Forms.TextBox
+    Friend WithEvents pnlPneumaticAuxillaries As System.Windows.Forms.Panel
+    Friend WithEvents lblPneumaticAuxillariesTitle As System.Windows.Forms.Label
+    Friend WithEvents lblAdBlueNIperMinute As System.Windows.Forms.Label
+    Friend WithEvents lblAirControlledSuspensionNIperMinute As System.Windows.Forms.Label
+    Friend WithEvents lblBrakingNoRetarderNIperKG As System.Windows.Forms.Label
+    Friend WithEvents lblBrakingWithRetarderNIperKG As System.Windows.Forms.Label
+    Friend WithEvents lblBreakingPerKneelingNIperKGinMM As System.Windows.Forms.Label
+    Friend WithEvents lblDeadVolBlowOutsPerLitresperHour As System.Windows.Forms.Label
+    Friend WithEvents lblDeadVolumeLitres As System.Windows.Forms.Label
+    Friend WithEvents lblNonSmartRegenFractionTotalAirDemand As System.Windows.Forms.Label
+    Friend WithEvents lblOverrunUtilisationForCompressionFraction As System.Windows.Forms.Label
+    Friend WithEvents lblPerDoorOpeningNI As System.Windows.Forms.Label
+    Friend WithEvents lblPerStopBrakeActuationNIperKG As System.Windows.Forms.Label
+    Friend WithEvents lblSmartRegenFractionTotalAirDemand As System.Windows.Forms.Label
+    Friend WithEvents txtAdBlueNIperMinute As System.Windows.Forms.TextBox
+    Friend WithEvents txtAirControlledSuspensionNIperMinute As System.Windows.Forms.TextBox
+    Friend WithEvents txtBrakingNoRetarderNIperKG As System.Windows.Forms.TextBox
+    Friend WithEvents txtBrakingWithRetarderNIperKG As System.Windows.Forms.TextBox
+    Friend WithEvents txtBreakingPerKneelingNIperKGinMM As System.Windows.Forms.TextBox
+    Friend WithEvents txtDeadVolBlowOutsPerLitresperHour As System.Windows.Forms.TextBox
+    Friend WithEvents txtDeadVolumeLitres As System.Windows.Forms.TextBox
+    Friend WithEvents txtNonSmartRegenFractionTotalAirDemand As System.Windows.Forms.TextBox
+    Friend WithEvents txtOverrunUtilisationForCompressionFraction As System.Windows.Forms.TextBox
+    Friend WithEvents txtPerDoorOpeningNI As System.Windows.Forms.TextBox
+    Friend WithEvents txtPerStopBrakeActuationNIperKG As System.Windows.Forms.TextBox
+    Friend WithEvents txtSmartRegenFractionTotalAirDemand As System.Windows.Forms.TextBox
+    Friend WithEvents tabHVACConfig As System.Windows.Forms.TabPage
+    Friend WithEvents tabPlayground As System.Windows.Forms.TabPage
+    Friend WithEvents TabPage1 As System.Windows.Forms.TabPage
 End Class
diff --git a/AuxillaryTestHarness/Dashboard.resx b/AuxillaryTestHarness/Dashboard.resx
index 702f81310c..31f2c39b98 100644
--- a/AuxillaryTestHarness/Dashboard.resx
+++ b/AuxillaryTestHarness/Dashboard.resx
@@ -120,10 +120,13 @@
   <metadata name="brcElecConsumers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
-  <metadata name="resultCardContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>168, 3</value>
+  <metadata name="ErrorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>168, 17</value>
   </metadata>
   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>25</value>
+    <value>82</value>
+  </metadata>
+  <metadata name="resultCardContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>362, 19</value>
   </metadata>
 </root>
\ No newline at end of file
diff --git a/AuxillaryTestHarness/Dashboard.vb b/AuxillaryTestHarness/Dashboard.vb
index 4c797ae274..a5a22c6672 100644
--- a/AuxillaryTestHarness/Dashboard.vb
+++ b/AuxillaryTestHarness/Dashboard.vb
@@ -1,5 +1,6 @@
 Imports VectoAuxiliaries
 Imports VectoAuxiliaries.Electrics
+Imports VectoAuxiliaries.Pneumatics
 Imports System.ComponentModel
 
 Public Class Dashboard
@@ -14,6 +15,11 @@ cboCycle.SelectedIndex = 0
 
   CreateBindings()
 
+  'Validate Pneumatics
+
+
+  ' ValidateChildren(True)
+
 
 End Sub
 
@@ -23,7 +29,8 @@ End Sub
 
 Private Sub SetupControls()
 
-     Dim cIndex As Integer = 0
+
+      Dim cIndex As Integer = 0
 
      'ElectricalConsumerGrid 
      'Columns
@@ -31,31 +38,46 @@ Private Sub SetupControls()
      gvElectricalConsumables.Columns(cIndex).DataPropertyName = "Category"
      gvElectricalConsumables.Columns(cIndex).MinimumWidth = 150
      gvElectricalConsumables.Columns(cIndex).ReadOnly = True
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1,2,1,1)
 
      cIndex = gvElectricalConsumables.Columns.Add("ConsumerName", "Name")
 
      gvElectricalConsumables.Columns(cIndex).DataPropertyName = "ConsumerName"
-     gvElectricalConsumables.Columns(cIndex).MinimumWidth = 300
+     gvElectricalConsumables.Columns(cIndex).MinimumWidth = 308
      gvElectricalConsumables.Columns(cIndex).ReadOnly = True
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1,2,1,1)
 
      Dim baseVehicle As New DataGridViewCheckBoxColumn(False)
-     baseVehicle.HeaderText = "BaseVehicle"
+     baseVehicle.HeaderText = "Base Vehicle"
      cIndex = gvElectricalConsumables.Columns.Add(baseVehicle)
      gvElectricalConsumables.Columns(cIndex).DataPropertyName = "BaseVehicle"
      gvElectricalConsumables.Columns(cIndex).Width = 75
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1,2,1,1)
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText="Energy included in the calculations of base vehicle"
 
      cIndex = gvElectricalConsumables.Columns.Add("NominalConsumptionAmps", "Nominal Amps")
      gvElectricalConsumables.Columns(cIndex).DataPropertyName = "NominalConsumptionAmps"
-     gvElectricalConsumables.Columns(cIndex).Width = 50
+     gvElectricalConsumables.Columns(cIndex).Width = 70
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1,2,1,1)
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText="Nominal consumption in AMPS"
 
-     cIndex = gvElectricalConsumables.Columns.Add("PhaseIdle_TractionOn", "PhaseIdle\n/TractionOn")
+     cIndex = gvElectricalConsumables.Columns.Add("PhaseIdle_TractionOn", "PhaseIdle/ TractionOn")
      gvElectricalConsumables.Columns(cIndex).DataPropertyName = "PhaseIdle_TractionOn"
-     gvElectricalConsumables.Columns(cIndex).Width = 50
-
+     gvElectricalConsumables.Columns(cIndex).Width = 70
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1,2,1,1)
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText="Represents the amount of time (during engine fueling) as " & vbCrLf & "percentage that the consumer is active during the cycle."
 
      cIndex = gvElectricalConsumables.Columns.Add("NumberInActualVehicle", "Num in Vehicle")
      gvElectricalConsumables.Columns(cIndex).DataPropertyName = "NumberInActualVehicle"
-     gvElectricalConsumables.Columns(cIndex).Width = 50
+     gvElectricalConsumables.Columns(cIndex).Width = 70
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.Style.Padding = New Padding(1,2,1,1)
+     gvElectricalConsumables.Columns(cIndex).HeaderCell.ToolTipText="Number of consumables of this" & vbCrLf & "type installed on the vehicle."
 
      'ResultCard Grids
 
@@ -92,6 +114,7 @@ Private Sub SetupControls()
 
 
 
+
 End Sub
 
 Private Sub CreateBindings()
@@ -107,7 +130,7 @@ Private Sub CreateBindings()
      txtDoorActuationTimeSeconds.DataBindings.Add("Text", auxEnvironment.ElectricalUserInputsConfig, "DoorActuationTimeSecond")
      chkSmartElectricals.DataBindings.Add("Checked", auxEnvironment.ElectricalUserInputsConfig, "SmartElectrical")
 
-     'ConsumablesGrid
+     'Electrical ConsumablesGrid
      Dim electricalConsumerBinding As New BindingList(Of IElectricalConsumer)(auxEnvironment.ElectricalUserInputsConfig.ElectricalConsumers.Items )
      gvElectricalConsumables.DataSource = electricalConsumerBinding
 
@@ -119,9 +142,7 @@ Private Sub CreateBindings()
          idleBinding.AllowNew=true   
          idleBinding.AllowRemove=True
          gvResultsCardIdle.DataSource=idleBinding 
-
-
-                
+             
          'TRACTION
          Dim tractionBinding As BindingList(Of SmartResult)
          tractionBinding = New BindingList(Of SmartResult)(auxEnvironment.ElectricalUserInputsConfig.ResultCardTraction)
@@ -137,6 +158,33 @@ Private Sub CreateBindings()
          gvResultsCardOverrun.DataSource=overrunBinding
 
 
+        'Pneumatic Auxillaries Binding
+        txtAdBlueNIperMinute.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"AdBlueNIperMinute")
+        txtOverrunUtilisationForCompressionFraction.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"OverrunUtilisationForCompressionFraction")
+        txtBrakingWithRetarderNIperKG.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"BrakingWithRetarderNIperKG")
+        txtBrakingNoRetarderNIperKG.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"BrakingNoRetarderNIperKG")
+        txtBreakingPerKneelingNIperKGinMM.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"BreakingPerKneelingNIperKGinMM")
+        txtPerDoorOpeningNI.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"PerDoorOpeningNI")
+        txtPerStopBrakeActuationNIperKG.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"PerStopBrakeActuationNIperKG")
+        txtAirControlledSuspensionNIperMinute.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"AirControlledSuspensionNIperMinute")
+        txtNonSmartRegenFractionTotalAirDemand.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"NonSmartRegenFractionTotalAirDemand")
+        txtSmartRegenFractionTotalAirDemand.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"SmartRegenFractionTotalAirDemand")
+        txtDeadVolumeLitres.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"DeadVolumeLitres")
+        txtDeadVolBlowOutsPerLitresperHour.DataBindings.Add("Text",auxEnvironment.PneumaticAuxillariesConfig,"DeadVolBlowOutsPerLitresperHour")
+
+        'Pneumatic UserInputsConfig Binding
+        cboCompressorType.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"CompressorType")        
+        txtCompressorMap.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"CompressorMap")             
+        txtCompressorGearEfficiency.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"CompressorGearEfficiency") 
+        txtCompressorGearRatio.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"CompressorGearRatio")      
+        txtActuationsMap.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"ActuationsMap")        
+        chkSmartAirCompression.DataBindings.Add("Checked",auxEnvironment.PneumaticUserInputsConfig,"SmartAirCompression")       
+        chkSmartRegeneration.DataBindings.Add("Checked",auxEnvironment.PneumaticUserInputsConfig,"SmartRegeneration")         
+        chkRetarderBrake.DataBindings.Add("Checked",auxEnvironment.PneumaticUserInputsConfig,"RetarderBrake")          
+        txtKneelingHeightMillimeters.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"KneelingHeightMillimeters")  
+        cboAirSuspensionControl.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"AirSuspensionControl")       
+        cboAdBlueDosing.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"AdBlueDosing")             
+        cboDoors.DataBindings.Add("Text",auxEnvironment.PneumaticUserInputsConfig,"Doors")                      
 
 End Sub
 
@@ -146,8 +194,6 @@ Private Sub gvElectricalConsumables_CellEndEdit(sender As Object, e As DataGridV
 End Sub
 
 
-
-
 Private Sub gvElectricalConsumables_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles gvElectricalConsumables.CellValidating
 
    Dim column As DataGridViewColumn = gvElectricalConsumables.Columns(e.ColumnIndex)
@@ -208,17 +254,13 @@ Private Sub SmartResult_CellValidating( sender As Object,  e As DataGridViewCell
 End Sub
 
 
-
-  private sub resultCard_CellMouseUp( sender As Object,  e as DataGridViewCellMouseEventArgs) Handles gvResultsCardIdle.CellMouseUp, gvResultsCardTraction.CellMouseUp, gvResultsCardOverrun.CellMouseUp
+private sub resultCard_CellMouseUp( sender As Object,  e as DataGridViewCellMouseEventArgs) Handles gvResultsCardIdle.CellMouseUp, gvResultsCardTraction.CellMouseUp, gvResultsCardOverrun.CellMouseUp
     
       Dim dgv As DataGridView = CType( sender, DataGridView)
 
 
         if e.Button = MouseButtons.Right then
-        
-            dgv.Rows(e.RowIndex).Selected = true
-            Dim rowIndex As Integer  = e.RowIndex
-            dgv.CurrentCell = dgv.Rows(e.RowIndex).Cells(1)
+
             resultCardContextMenu.Show(dgv, e.Location)
             resultCardContextMenu.Show(Cursor.Position)
 
@@ -227,21 +269,254 @@ End Sub
 
     end sub
 
-    private sub resultCardContextMenu_Click( sender As object,  e as  EventArgs) Handles resultCardContextMenu.Click
+
+Private Sub resultCardContextMenu_ItemClicked( sender As Object,  e As ToolStripItemClickedEventArgs) Handles resultCardContextMenu.ItemClicked
+
+      Dim menu As ContextMenuStrip = CType( sender, ContextMenuStrip)
+
+      Dim grid as DataGridView  = DirectCast( menu.SourceControl, DataGridView)
+
+      Select Case e.ClickedItem.Text
+
+
+      Case "Delete"
+
+         For Each selectedRow As datagridviewrow In grid.SelectedRows
+
+            If Not selectedRow.IsNewRow then
+            
+                grid.Rows.RemoveAt(selectedRow.Index)
+           
+            End if
+           
+         Next
+
+      case "Insert"
+
+
+      End Select
     
-         Dim menu As ContextMenuStrip = CType( sender, ContextMenuStrip)
 
-         Dim grid as DataGridView  = DirectCast( menu.SourceControl, DataGridView)
 
-         'DirectCast(menu.SourceControl,System.Windows.Forms.DataGridView).SelectedRows(0).IsNewRow
 
-        If Not grid.SelectedRows(0).IsNewRow then
-        
-            grid.Rows.RemoveAt(grid.SelectedRows(0).Index)
 
+
+
+
+
+End Sub
+
+
+'****** PNEUMATIC VALIDATION
+
+Public Sub Validating_PneumaticHandler( sender As Object, e As CancelEventArgs ) Handles  txtAdBlueNIperMinute.Validating,  txtBrakingWithRetarderNIperKG.Validating, txtBrakingNoRetarderNIperKG.Validating, txtAirControlledSuspensionNIperMinute.Validating, txtBreakingPerKneelingNIperKGinMM.Validating, txtSmartRegenFractionTotalAirDemand.Validating, txtPerStopBrakeActuationNIperKG.Validating, txtPerDoorOpeningNI.Validating, txtOverrunUtilisationForCompressionFraction.Validating, txtNonSmartRegenFractionTotalAirDemand.Validating, txtDeadVolumeLitres.Validating, txtDeadVolBlowOutsPerLitresperHour.Validating, txtKneelingHeightMillimeters.Validating, txtCompressorMap.Validating, txtCompressorGearRatio.Validating, txtCompressorGearEfficiency.Validating, txtActuationsMap.Validating, cboDoors.Validating, cboCompressorType.Validating, cboAirSuspensionControl.Validating, cboAdBlueDosing.Validating
+
+Dim control As Control = CType( sender, Control)
+
+Select Case control.Name
+
+     case "txtAdBlueNIperMinute"
+       If Not IsZeroOrPostiveNumber(txtAdBlueNIperMinute.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtAdBlueNIperMinute ,"Please provide a non negative number.")    
+       End if
+
+      case "txtOverrunUtilisationForCompressionFraction"
+         If Not IsNumberBetweenZeroandOne(txtOverrunUtilisationForCompressionFraction.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtOverrunUtilisationForCompressionFraction ,"Please provide a non negative between 0 and 1.")    
+       End if
+
+      case "txtBrakingWithRetarderNIperKG"
+        If Not IsZeroOrPostiveNumber(txtBrakingWithRetarderNIperKG.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtBrakingWithRetarderNIperKG ,"Please provide a non negative number.")    
+       End if
+
+      case "txtBrakingNoRetarderNIperKG"
+       If Not IsZeroOrPostiveNumber(txtBrakingNoRetarderNIperKG.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtBrakingNoRetarderNIperKG ,"Please provide a non negative number.")    
+       End if
+
+      case "txtBreakingPerKneelingNIperKGinMM"
+       If Not IsZeroOrPostiveNumber(txtBreakingPerKneelingNIperKGinMM.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtBreakingPerKneelingNIperKGinMM ,"Please provide a non negative number.")    
+       End if
+
+      case "txtPerDoorOpeningNI"
+       If Not IsZeroOrPostiveNumber(txtPerDoorOpeningNI.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtPerDoorOpeningNI ,"Please provide a non negative number.")    
+       End if
+
+      case "txtPerStopBrakeActuationNIperKG"
+       If Not IsZeroOrPostiveNumber(txtPerStopBrakeActuationNIperKG.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtPerStopBrakeActuationNIperKG ,"Please provide a non negative number.")    
+       End if
+
+      case "txtAirControlledSuspensionNIperMinute"
+       If Not IsZeroOrPostiveNumber(txtAirControlledSuspensionNIperMinute.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtAirControlledSuspensionNIperMinute ,"Please provide a non negative number.")    
+       End if
+
+      case "txtNonSmartRegenFractionTotalAirDemand"
+       If Not IsZeroOrPostiveNumber(txtNonSmartRegenFractionTotalAirDemand.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtNonSmartRegenFractionTotalAirDemand ,"Please provide a non negative number.")    
+       End if
+
+
+      case "txtSmartRegenFractionTotalAirDemand"
+         If Not IsNumberBetweenZeroandOne(txtSmartRegenFractionTotalAirDemand.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtSmartRegenFractionTotalAirDemand ,"Please provide a non negative between 0 and 1.")    
+       End if
+
+
+      case "txtDeadVolumeLitres"
+         If Not IsZeroOrPostiveNumber(txtDeadVolumeLitres.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtDeadVolumeLitres ,"Please provide a non negative between 0 and 1.")    
+       End if
+
+
+      case "txtDeadVolBlowOutsPerLitresperHour"
+         If Not IsZeroOrPostiveNumber(txtDeadVolBlowOutsPerLitresperHour.Text) then 
+         e.Cancel=true
+         errorProvider.SetError(txtDeadVolBlowOutsPerLitresperHour ,"Please provide a non negative between 0 and 1.")    
+       End if
+
+
+       'USER CONFIG
+
+        case "cboCompressorType"
+         If cboCompressorType.SelectedIndex<1 then 
+         e.Cancel=true
+         errorProvider.SetError(cboCompressorType ,"Please select a Compressor type from the Dropdown list.")    
+       End if
+
+        case "txtCompressorMap"
+        'Test for empty after trim
+        If txtCompressorMap.Text.Trim.Length=0 then
+         e.Cancel=true
+         errorProvider.SetError(txtCompressorMap ,"Please enter the localtion of a valid compressor map.")    
         End if
+        'Test File is valid
+        Dim comp As CompressorMap
+        Try
+
+        comp = New CompressorMap( txtCompressorMap.Text)
+        comp.Initialise()
+
+        Catch ex As Exception
+
+         e.Cancel=true
+         errorProvider.SetError(txtCompressorMap ,"Error : map is invalid or cannot be found, please select a Cvalid compressor map")  
+
+        End Try
+
+
+        case "txtCompressorGearEfficiency"
+
+        case "txtCompressorGearRatio"
+
+        case "txtActuationsMap"
+
+        case "chkSmartAirCompression"
+
+        case "chkSmartRegeneration"
+
+        case "chkRetarderBrake"
+
+        case "txtKneelingHeightMillimeters"
+
+        case "cboAirSuspensionControl" 
+
+        case "cboAdBlueDosing"
+
+        case "cboDoors.DataBindings"
+
+
+         
+End Select
+
+
+End Sub
+
+
+Public Sub Validated_PneumaticHandler( sender As Object, e As EventArgs ) Handles tabMain.Validating, txtAdBlueNIperMinute.Validating, txtAdBlueNIperMinute.Validated, txtSmartRegenFractionTotalAirDemand.Validated, txtPerStopBrakeActuationNIperKG.Validated, txtPerDoorOpeningNI.Validated, txtOverrunUtilisationForCompressionFraction.Validated, txtNonSmartRegenFractionTotalAirDemand.Validated, txtDeadVolumeLitres.Validated, txtDeadVolBlowOutsPerLitresperHour.Validated, txtBreakingPerKneelingNIperKGinMM.Validated, txtBrakingWithRetarderNIperKG.Validated, txtBrakingNoRetarderNIperKG.Validated, txtAirControlledSuspensionNIperMinute.Validated, txtKneelingHeightMillimeters.Validated, txtCompressorMap.Validated, txtCompressorGearRatio.Validated, txtCompressorGearEfficiency.Validated, txtActuationsMap.Validated, cboDoors.Validated, cboCompressorType.Validated, cboAirSuspensionControl.Validated, cboAdBlueDosing.Validated
+
+Dim control As Control = CType( sender, Control)
+
+       errorProvider.SetError(control ,string.Empty)
+
+End Sub
+
+
+
+'*****  ELECTRICAL VALIDATION
+
+'Validation helpers
+
+Public Function IsZeroOrPostiveNumber(byval test As string)As boolean
+
+     'Is this numeric sanity check.
+     If Not IsNumeric(test) then Return False
+
+     Dim number As Single
+
+     If Not Single.TryParse( test,  number)  then Return false
+
+     If number<0 then Return False
+     
+
+     Return true
+  
+End Function
+
+Public Function IsNumberBetweenZeroandOne( test As String )
+
+     'Is this numeric sanity check.
+     If Not IsNumeric(test) then Return False
+
+     Dim number As Single
+
+     If Not Single.TryParse( test,  number)  then Return false
+
+     If number<0 orelse number >1  then Return False
+
+     Return True
+     
+End Function
+
+
+Public Function IsIntegerZeroOrPositiveNumber( test As string)
+
+     'Is this numeric sanity check.
+     If Not IsNumeric(test) then Return False
+
+     'if not integer then return false
+
+     Dim number As integer
+
+     If Not integer.TryParse( test,  number)  then Return false
+
+     If number<0   then Return False
+
+     Return True
+
+
+End Function
+
+
+Private Sub tabMain_Validating( sender As Object,  e As CancelEventArgs) Handles tabMain.Validating
+
+End Sub
 
-    end sub
 
 
 
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticUserInputsConfig.vb
index e43edffcef..848db9ddcf 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticUserInputsConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticUserInputsConfig.vb
@@ -5,18 +5,18 @@ Namespace Pneumatics
 Public Interface IPneumaticUserInputsConfig
 
 
-Property CompressorType As String
-Property CompressorMap As String
-Property CompressorGearEfficiency As Single
-Property CompressorGearRatio As Single
-Property ActuationsMap As String
-Property SmartAirCompression As Boolean
-Property SmartRegeneration As Boolean
-Property RetarderBrake As Boolean
-Property KneelingHeightMilimeters As Single
-Property AirSuspensionControl As String 'mechanical or electrical
-Property AdBlueDosing As String 'pnmeumatic or electric
-Property Doors As String 'pneumatic or electric
+Property CompressorType            As String
+Property CompressorMap             As String
+Property CompressorGearEfficiency  As Single
+Property CompressorGearRatio       As Single
+Property ActuationsMap             As String
+Property SmartAirCompression       As Boolean
+Property SmartRegeneration         As Boolean
+Property RetarderBrake             As Boolean
+Property KneelingHeightMillimeters As Single
+Property AirSuspensionControl      As String 'mechanical or electrical
+Property AdBlueDosing              As String 'pnmeumatic or electric
+Property Doors                     As String 'pneumatic or electric
 
 
 End Interface
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticsAuxilliariesConfig.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticsAuxilliariesConfig.vb
index 9f2f343cc9..599d040ce5 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticsAuxilliariesConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/IPneumaticsAuxilliariesConfig.vb
@@ -6,7 +6,7 @@ Property BrakingNoRetarderNIperKG As Single
 Property BreakingPerKneelingNIperKGinMM As Single
 Property PerDoorOpeningNI As Single
 Property PerStopBrakeActuationNIperKG As Single
-Property AirControlledSuspecsionNIperMinute As Single
+Property AirControlledSuspensionNIperMinute As Single
 Property AdBlueNIperMinute As Single
 Property NonSmartRegenFractionTotalAirDemand As Single
 Property SmartRegenFractionTotalAirDemand As Single
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb
index 99abc326ad..bb5f09d916 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/M3_AveragePneumaticLoadDemand.vb
@@ -90,7 +90,7 @@ Namespace Pneumatics
            '** Kneeling **
            numActuationsPerCycle = _pneumaticsActuationsMap.GetNumActuations(New ActuationsKey("Kneeling", _cycleName))
            '=IF(COUNTBLANK(F35),G35,F35)*K11*K16
-           airConsumptionPerActuationNI = _pneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM * _vehicleMassKG * _pneumaticUserInputsConfig.KneelingHeightMilimeters
+           airConsumptionPerActuationNI = _pneumaticAuxillariesConfig.BreakingPerKneelingNIperKGinMM * _vehicleMassKG * _pneumaticUserInputsConfig.KneelingHeightMillimeters
            Kneeling = numActuationsPerCycle * airConsumptionPerActuationNI
 
            '** AdBlue **
@@ -110,7 +110,7 @@ Namespace Pneumatics
 
            '** AirSuspension  **
            '=IF(K12="electrically",0,G38*F54) - Suplied Spreadsheet
-           AirSuspension = If(_pneumaticUserInputsConfig.AirSuspensionControl = "electrically", 0, _pneumaticAuxillariesConfig.AirControlledSuspecsionNIperMinute * _cycleDurationMinutes)
+           AirSuspension = If(_pneumaticUserInputsConfig.AirSuspensionControl = "electrically", 0, _pneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute * _cycleDurationMinutes)
 
            '** Total Air Demand **
            TotalAirDemand = Breaks + ParkBrakesplus2Doors + Kneeling + AdBlue + Regeneration + DeadVolBlowOuts + AirSuspension
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb
index 824e5d3337..b336cb0f0a 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticUserInputsConfig.vb
@@ -23,7 +23,7 @@ Public Property ActuationsMap As String Implements IPneumaticUserInputsConfig.Ac
 
 'pneumatic or electric
 Public Property Doors As String Implements IPneumaticUserInputsConfig.Doors
-Public Property KneelingHeightMilimeters As Single Implements IPneumaticUserInputsConfig.KneelingHeightMilimeters
+Public Property KneelingHeightMillimeters As Single Implements IPneumaticUserInputsConfig.KneelingHeightMillimeters
 Public Property RetarderBrake As Boolean Implements IPneumaticUserInputsConfig.RetarderBrake
 Public Property SmartAirCompression As Boolean Implements IPneumaticUserInputsConfig.SmartAirCompression
 Public Property SmartRegeneration As Boolean Implements IPneumaticUserInputsConfig.SmartRegeneration
@@ -39,15 +39,15 @@ End Sub
 Public sub SetPropertiesToDefaults()
 
 
-            ActuationsMap=""
-            AdBlueDosing="pneumatic"
-            AirSuspensionControl="electrically"
+            ActuationsMap="C:\Users\tb28\Source\Workspaces\VECVECTOAux\VectoAuxiliariesTests\TestFiles\testPneumaticActuationsMap_GOODMAP.csv"
+            AdBlueDosing="Pneumatic"
+            AirSuspensionControl="Electrically"
             CompressorGearEfficiency=0.8
             CompressorGearRatio=0
-            CompressorMap=""
+            CompressorMap="C:\Users\tb28\Source\Workspaces\VECVECTOAux\VectoAuxiliariesTests\TestFiles\testCompressorMap.csv"
             CompressorType=""
-            Doors="pneumatic"
-            KneelingHeightMilimeters=80
+            Doors="Pneumatic"
+            KneelingHeightMillimeters=80
             RetarderBrake=True
             SmartAirCompression=True
             SmartRegeneration=True  
diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb
index 1d5e2ee190..6349d1b477 100644
--- a/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb
+++ b/VECTOAux/VectoAuxiliaries/Pneumatics/PneumaticsAuxilliariesConfig.vb
@@ -5,7 +5,7 @@ Implements IPneumaticsAuxilliariesConfig
 
 
 Public Property AdBlueNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AdBlueNIperMinute
-Public Property AirControlledSuspecsionNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AirControlledSuspecsionNIperMinute
+Public Property AirControlledSuspensionNIperMinute As Single Implements IPneumaticsAuxilliariesConfig.AirControlledSuspensionNIperMinute
 Public Property BrakingNoRetarderNIperKG As Single Implements IPneumaticsAuxilliariesConfig.BrakingNoRetarderNIperKG
 Public Property BrakingWithRetarderNIperKG As Single Implements IPneumaticsAuxilliariesConfig.BrakingWithRetarderNIperKG
 Public Property BreakingPerKneelingNIperKGinMM As Single Implements IPneumaticsAuxilliariesConfig.BreakingPerKneelingNIperKGinMM
@@ -33,7 +33,7 @@ Public Sub SetDefaults()
      BreakingPerKneelingNIperKGinMM = 0.000066
      PerDoorOpeningNI = 12.7
      PerStopBrakeActuationNIperKG = 0.00064
-     AirControlledSuspecsionNIperMinute = 15
+     AirControlledSuspensionNIperMinute = 15
      AdBlueNIperMinute = 21.25
      NonSmartRegenFractionTotalAirDemand = 0.26
      SmartRegenFractionTotalAirDemand = 0.12
diff --git a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
index 518958ca5e..051db971f7 100644
--- a/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
+++ b/VECTOAux/VectoAuxiliariesTests/UnitTests/AveragePneumaticLoadDemandTests.vb
@@ -47,7 +47,7 @@ Namespace UnitTests
         _defaultInputConfig.CompressorGearEfficiency = 0.8
         _defaultInputConfig.SmartRegeneration = True
         _defaultInputConfig.RetarderBrake = True
-        _defaultInputConfig.KneelingHeightMilimeters = 80
+        _defaultInputConfig.KneelingHeightMillimeters = 80
         _defaultInputConfig.AirSuspensionControl = "electrically"
         _defaultInputConfig.AdBlueDosing = "pneumatic"
         _defaultInputConfig.Doors = "pneumatic"
@@ -222,7 +222,7 @@ Namespace UnitTests
 
             psCompressorMap.Initialise()
 
-            _defaultInputConfig.KneelingHeightMilimeters = 100
+            _defaultInputConfig.KneelingHeightMillimeters = 100
 
             Dim target As New M3_AveragePneumaticLoadDemand(_defaultInputConfig, psAuxConfig, psActuationsMap, psCompressorMap, _vehicleMassKG, "Urban", _cycleDurationMinutes)
 
-- 
GitLab