Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 0755adab authored by Terry Burns's avatar Terry Burns Committed by Kostis ANAGNOSTOPOULOS
Browse files
parent aad73146
No related branches found
No related tags found
No related merge requests found
......@@ -13,59 +13,121 @@ Public Interface IAdvancedAuxiliaries
Inherits IAuxiliaryEvent
'Information
ReadOnly Property Running As boolean
ReadOnly Property AuxiliaryName As String
ReadOnly Property AuxiliaryVersion As String
readonly property AA_D_M12_P1X as single
readonly property AA_D_M12_P1Y as single
readonly property AA_D_M12_P2X as single
readonly property AA_D_M12_P2Y as single
readonly property AA_D_M12_P3X as single
readonly property AA_D_M12_P3Y as single
readonly property AA_D_M12_XTAIN as single
readonly property AA_D_M12_INTERP1 as single
readonly property AA_D_M12_INTERP2 as single
ReadOnly Property AA_NonSmartAlternatorsEfficiency As single?
Readonly Property AA_SmartIdleCurrent_Amps As single?
Readonly Property AA_SmartIdleAlternatorsEfficiency As single?
ReadOnly Property AA_SmartTractionCurrent_Amps As single?
ReadOnly Property AA_SmartTractionAlternatorEfficiency As single?
ReadOnly Property AA_SmartOverrunCurrent_Amps As Single?
Readonly Property AA_SmartOverrunAlternatorEfficiency As Single?
Readonly Property AA_CompressorFlowRate_LitrePerSec As Single?
ReadOnly Property AA_OverrunFlag As integer?
ReadOnly Property AA_EngineIdleFlag As integer?
ReadOnly Property AA_CompressorFlag As integer?
Readonly Property AA_TotalCycleFC_Grams As single?
ReadOnly Property AA_TotalCycleFC_Litres As single?
Readonly Property TotalFuelGRAMS As Single
Readonly Property TotalFuelLITRES As single
ReadOnly Property AuxiliaryPowerAtCrankWatts As single
'Static Values
property VectoInputs As IVectoInputs
'Running Properties
property Signals as ISignals
'Configuration
Function Configure( filePath As String, vectoFilePath As string ) As Boolean
Function ValidateAAUXFile( ByVal filePath As String , byref message As String ) As Boolean
'Command
Function CycleStep( seconds As Integer, ByRef message As string ) As boolean
Function RunStart( ByVal auxFilePath As String,byval vectoFilePath as string ,ByRef message As string ) As boolean
Function RunStop( ByRef message As string ) As boolean
'Information
ReadOnly Property Running As boolean
ReadOnly Property AuxiliaryName As String
ReadOnly Property AuxiliaryVersion As String
'Diagnostic Only - Remove when beta over.
Readonly Property AA_D_M12_P1X as single
Readonly Property AA_D_M12_P1Y as single
Readonly Property AA_D_M12_P2X as single
Readonly Property AA_D_M12_P2Y as single
Readonly Property AA_D_M12_P3X as single
Readonly Property AA_D_M12_P3Y as single
Readonly Property AA_D_M12_XTAIN as single
Readonly Property AA_D_M12_INTERP1 as single
Readonly Property AA_D_M12_INTERP2 as single
'Additional Permenent Monitoring Signals - Required by engineering
ReadOnly Property AA_NonSmartAlternatorsEfficiency As single?
Readonly Property AA_SmartIdleCurrent_Amps As single?
Readonly Property AA_SmartIdleAlternatorsEfficiency As single?
ReadOnly Property AA_SmartTractionCurrent_Amps As single?
ReadOnly Property AA_SmartTractionAlternatorEfficiency As single?
ReadOnly Property AA_SmartOverrunCurrent_Amps As Single?
Readonly Property AA_SmartOverrunAlternatorEfficiency As Single?
Readonly Property AA_CompressorFlowRate_LitrePerSec As Single?
ReadOnly Property AA_OverrunFlag As integer?
ReadOnly Property AA_EngineIdleFlag As integer?
ReadOnly Property AA_CompressorFlag As integer?
Readonly Property AA_TotalCycleFC_Grams As single?
ReadOnly Property AA_TotalCycleFC_Litres As single?
''' <summary>
''' Total Cycle Fuel In Grams
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Readonly Property TotalFuelGRAMS As Single
''' <summary>
''' Total Cycle Fuel in Litres
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Readonly Property TotalFuelLITRES As single
''' <summary>
''' Total Power Demans At Crank From Auxuliaries (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AuxiliaryPowerAtCrankWatts As single
''' <summary>
''' Vecto Inputs
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
property VectoInputs As IVectoInputs
''' <summary>
''' Signals From Vecto
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
property Signals as ISignals
''' <summary>
''' Configure Auxuliaries ( Launches Config Form )
''' </summary>
''' <param name="filePath"></param>
''' <param name="vectoFilePath"></param>
''' <returns></returns>
''' <remarks></remarks>
Function Configure( filePath As String, vectoFilePath As string ) As Boolean
''' <summary>
''' Validate AAUX file path supplied.
''' </summary>
''' <param name="filePath"></param>
''' <param name="message"></param>
''' <returns></returns>
''' <remarks></remarks>
Function ValidateAAUXFile( ByVal filePath As String , byref message As String ) As Boolean
'Command
''' <summary>
''' Cycle Step - Used to calculate fuelling
''' </summary>
''' <param name="seconds"></param>
''' <param name="message"></param>
''' <returns></returns>
''' <remarks></remarks>
Function CycleStep( seconds As Integer, ByRef message As string ) As boolean
''' <summary>
''' Initialises AAUX Environment ( Begin Processs )
''' </summary>
''' <param name="auxFilePath"></param>
''' <param name="vectoFilePath"></param>
''' <param name="message"></param>
''' <returns></returns>
''' <remarks></remarks>
Function RunStart( ByVal auxFilePath As String,byval vectoFilePath as string ,ByRef message As string ) As boolean
''' <summary>
''' Any Termination Which Needs to be done ( Model depenent )
''' </summary>
''' <param name="message"></param>
''' <returns></returns>
''' <remarks></remarks>
Function RunStop( ByRef message As string ) As boolean
......
......@@ -11,10 +11,7 @@
Public Interface IAuxiliaryEvent
Event AuxiliaryEvent( ByRef sender As Object, byval message As String, ByVal messageType As AdvancedAuxiliaryMessageType )
End interface
......@@ -13,20 +13,19 @@
Public Interface IDiagnostics
Property AA_NonSmartAlternatorsEfficiency As single
Property AA_SmartIdleCurrent_Amps As single
Property AA_SmartIdleAlternatorsEfficiency As single
Property AA_SmartTractionCurrent_Amps As single
Property AA_SmartTractionAlternatorEfficiency As single
Property AA_SmartOverrunCurrent_Amps As Single
Property AA_SmartOverrunAlternatorEfficiency As Single
Property AA_CompressorFlowRate_LitrePerSec As Single
Property AA_OverrunFlag As integer
Property AA_EngineIdleFlag As integer
Property AA_CompressorFlag As integer
Property AA_TotalCycleFC_BeforeSSandWHTCcorrection_Grams As single
Property AA_TotalCycleFC_BeforeSSandWHTCcorrection_Litres As single
Property AA_NonSmartAlternatorsEfficiency As single
Property AA_SmartIdleCurrent_Amps As single
Property AA_SmartIdleAlternatorsEfficiency As single
Property AA_SmartTractionCurrent_Amps As single
Property AA_SmartTractionAlternatorEfficiency As single
Property AA_SmartOverrunCurrent_Amps As Single
Property AA_SmartOverrunAlternatorEfficiency As Single
Property AA_CompressorFlowRate_LitrePerSec As Single
Property AA_OverrunFlag As integer
Property AA_EngineIdleFlag As integer
Property AA_CompressorFlag As integer
Property AA_TotalCycleFC_BeforeSSandWHTCcorrection_Grams As single
Property AA_TotalCycleFC_BeforeSSandWHTCcorrection_Litres As single
......
......@@ -11,22 +11,118 @@
Public Interface ISignals
Property PreExistingAuxPower As single
Property EngineMotoringPower As single
property EngineDrivelinePower as single
property SmartElectrics As Boolean
Property ClutchEngaged As Boolean
Property EngineSpeed as integer
Property SmartPneumatics As Boolean
Property TotalCycleTimeSeconds As Integer
Property CurrentCycleTimeInSeconds As Integer
property EngineDrivelineTorque as single
Property Idle As Boolean
Property InNeutral As Boolean
Property AuxiliaryEventReportingLevel As AdvancedAuxiliaryMessageType
Property EngineStopped As Boolean
Property WHTC As Single
Property DeclarationMode As Boolean
''' <summary>
''' Pre Existing Aux Power (KW)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
Property PreExistingAuxPower As single
''' <summary>
''' Engine Motoring Power (KW)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
Property EngineMotoringPower As single
''' <summary>
''' Engine Driveline Power (KW)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
property EngineDrivelinePower as single
''' <summary>
''' Smart Electrics
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Should be true if fitted to the vehicle - AAUX Input</remarks>
property SmartElectrics As Boolean
''' <summary>
''' Clucth Engaged
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
Property ClutchEngaged As Boolean
''' <summary>
''' Engine Speed 1/NU
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>RPM in old money - Vecto Input</remarks>
Property EngineSpeed as integer
''' <summary>
''' Smart Pneumatics
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>should be true if fitted to the vehicle- AAux Config Input</remarks>
Property SmartPneumatics As Boolean
''' <summary>
''' Total Cycle Time In Seconds
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
Property TotalCycleTimeSeconds As Integer
''' <summary>
''' Current Cycle Time In Seconds
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>( Will Increment during Cycle )</remarks>
Property CurrentCycleTimeInSeconds As Integer
''' <summary>
''' Engine Driveline Torque
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
property EngineDrivelineTorque as single
''' <summary>
''' Engine Idle
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
Property Idle As Boolean
''' <summary>
''' In Neutral
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input</remarks>
Property InNeutral As Boolean
''' <summary>
''' Auxiliary Event Reporting Level
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Can be used by Vecto to choose the level of reporting</remarks>
Property AuxiliaryEventReportingLevel As AdvancedAuxiliaryMessageType
''' <summary>
''' Engine Stopped
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>'Vecto Input - Used to Cut Fueling in AAux model</remarks>
Property EngineStopped As Boolean
''' <summary>
''' WHTC ( Correction factor to be applied )
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>'Vecto Input</remarks>
Property WHTC As Single
''' <summary>
''' Declaration Mode
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Vecto Input - Used to decide if to apply WHTC/Possiblye other things in future</remarks>
Property DeclarationMode As Boolean
End Interface
......@@ -11,11 +11,33 @@
Public Interface IVectoInputs
Property VehicleWeightKG As Single
Property Cycle As String
Property PowerNetVoltage As Single
'Property CycleDurationMinutes As single
Property FuelMap As string
''' <summary>
''' Vehicle Mass (KG)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property VehicleWeightKG As Single
''' <summary>
''' Cycle ( Urban, Interurban etc )
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property Cycle As String
''' <summary>
''' PowerNet Voltage (V) Volts available on the bus by Batteries
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property PowerNetVoltage As Single
''' <summary>
''' Fuel Map Used in Vecto.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property FuelMap As string
End Interface
......@@ -14,19 +14,14 @@ Public Class Signals
Implements ISignals
'Backing variables
Private _WHTCCorretion As Single =1
Private _WHTCCorretion As Single =1
Private _smartElectrics As Boolean
Public Property ClutchEngaged As Boolean Implements ISignals.ClutchEngaged
Public Property EngineDrivelinePower As Single Implements ISignals.EngineDrivelinePower
Public Property EngineDrivelineTorque As Single Implements ISignals.EngineDrivelineTorque
Public Property EngineMotoringPower As Single Implements ISignals.EngineMotoringPower
Public Property EngineSpeed As Integer Implements ISignals.EngineSpeed
Public Property SmartElectrics As Boolean Implements ISignals.SmartElectrics
Get
Return _smartElectrics
......@@ -38,25 +33,15 @@ Implements ISignals
End Set
end property
Public Property SmartPneumatics As Boolean Implements ISignals.SmartPneumatics
Public Property TotalCycleTimeSeconds As Integer Implements ISignals.TotalCycleTimeSeconds
public Property CurrentCycleTimeInSeconds As Integer Implements ISignals.CurrentCycleTimeInSeconds
Public Property PreExistingAuxPower As Single Implements ISignals.PreExistingAuxPower
Public Property Idle As Boolean Implements ISignals.Idle
Public Property InNeutral As Boolean Implements ISignals.InNeutral
Public Property AuxiliaryEventReportingLevel As AdvancedAuxiliaryMessageType Implements ISignals.AuxiliaryEventReportingLevel
Public Property EngineStopped As Boolean Implements ISignals.EngineStopped
Public Property DeclarationMode As Boolean Implements ISignals.DeclarationMode
Public Property WHTC As Single Implements ISignals.WHTC
Set
......@@ -70,7 +55,6 @@ Implements ISignals
end property
End Class
......
......@@ -13,15 +13,34 @@
Public Class VectoInputs
Implements IVectoInputs
''' <summary>
''' Name of the Cycle ( Urban, Interurban etc )
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Cycle As String Implements IVectoInputs.Cycle
''' <summary>
''' Vehicle Mass (KG)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property VehicleWeightKG As Single Implements IVectoInputs.VehicleWeightKG
Public Property PowerNetVoltage As Single Implements IVectoInputs.PowerNetVoltage
'Public Property CycleDurationMinutes As Single Implements IVectoInputs.CycleDurationMinutes
''' <summary>
''' Powernet Voltage (V)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>This is the power voltage available in the bus - usually 26.3 Volts</remarks>
Public Property PowerNetVoltage As Single Implements IVectoInputs.PowerNetVoltage
''' <summary>
''' Fuel Map Same One as used in Vecto.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property FuelMap As String Implements IVectoInputs.FuelMap
End Class
......
......@@ -18,71 +18,68 @@ Imports System.Windows.Forms
Imports Newtonsoft.Json
imports VectoAuxiliaries
<Serializable()>
Public Class AuxiliaryConfig
Implements IAuxiliaryConfig
'Vecto
Public Property VectoInputs As IVectoInputs implements IAuxiliaryConfig.VectoInputs
'Electrical
Public property ElectricalUserInputsConfig As IElectricsUserInputsConfig Implements IAuxiliaryConfig.ElectricalUserInputsConfig
'Pneumatics
public Property PneumaticUserInputsConfig As IPneumaticUserInputsConfig Implements IAuxiliaryConfig.PneumaticUserInputsConfig
public Property PneumaticAuxillariesConfig As IPneumaticsAuxilliariesConfig Implements IAuxiliaryConfig.PneumaticAuxillariesConfig
'Hvac
Public Property HvacUserInputsConfig As IHVACUserInputsConfig Implements IAuxiliaryConfig.HvacUserInputsConfig
'Vecto Signals
public Property Signals As ISignals
Sub new()
'Vecto
Public Property VectoInputs As IVectoInputs implements IAuxiliaryConfig.VectoInputs
'Electrical
Public property ElectricalUserInputsConfig As IElectricsUserInputsConfig Implements IAuxiliaryConfig.ElectricalUserInputsConfig
'Pneumatics
public Property PneumaticUserInputsConfig As IPneumaticUserInputsConfig Implements IAuxiliaryConfig.PneumaticUserInputsConfig
public Property PneumaticAuxillariesConfig As IPneumaticsAuxilliariesConfig Implements IAuxiliaryConfig.PneumaticAuxillariesConfig
'Hvac
Public Property HvacUserInputsConfig As IHVACUserInputsConfig Implements IAuxiliaryConfig.HvacUserInputsConfig
'Vecto Signals
public Property Signals As ISignals
'Constructors
Sub new()
Call Me.New("EMPTY")
End Sub
Public Sub new(auxConfigFile As String)
'Special Condid
If auxConfigFile="EMPTY" then
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With { .PowerNetVoltage= 26.3}
ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(26.3,0.096,false)
ElectricalUserInputsConfig.ResultCardIdle = new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardOverrun= new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardTraction= new ResultCard( New List(Of SmartResult ))
PneumaticAuxillariesConfig= New PneumaticsAuxilliariesConfig(False)
PneumaticUserInputsConfig= New PneumaticUserInputsConfig(False)
HvacUserInputsConfig = New HVACUserInputsConfig(New HVACSteadyStateModel(), String.Empty)
Exit sub
End If
If auxConfigFile is Nothing orelse auxConfigFile.Trim().Length=0 orelse Not FILE.Exists(auxConfigFile) then
setdefaults()
Else
setDefaults()
'ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear
If Not Load(auxConfigFile)
MessageBox.Show(String.Format("Unable to load file {0}", auxConfigFile))
End If
End If
Public Sub new(auxConfigFile As String)
'Special Condition
If auxConfigFile="EMPTY" then
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With { .PowerNetVoltage= 26.3}
ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(26.3,0.096,false)
ElectricalUserInputsConfig.ResultCardIdle = new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardOverrun= new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardTraction= new ResultCard( New List(Of SmartResult ))
PneumaticAuxillariesConfig= New PneumaticsAuxilliariesConfig(False)
PneumaticUserInputsConfig= New PneumaticUserInputsConfig(False)
HvacUserInputsConfig = New HVACUserInputsConfig(New HVACSteadyStateModel(), String.Empty)
Exit sub
End If
If auxConfigFile is Nothing orelse auxConfigFile.Trim().Length=0 orelse Not FILE.Exists(auxConfigFile) then
setdefaults()
Else
setDefaults()
'ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear
If Not Load(auxConfigFile)
MessageBox.Show(String.Format("Unable to load file {0}", auxConfigFile))
End If
End If
End Sub
Private Sub setDefaults()
'Set Default Values
Private Sub setDefaults()
'.CycleDurationMinutes=51.9,
......@@ -117,9 +114,8 @@ Private Sub setDefaults()
End Sub
Private Function GetDoorActuationTimeFraction()As Single
Private Function GetDoorActuationTimeFraction()As Single
Dim actuationsMap as PneumaticActuationsMAP = New PneumaticActuationsMAP( PneumaticUserInputsConfig.ActuationsMap )
Dim actuationsKey As ActuationsKey = New ActuationsKey( "Park brake + 2 doors",VectoInputs.Cycle)
......@@ -132,9 +128,8 @@ Private Function GetDoorActuationTimeFraction()As Single
Return doorDutyCycleFraction
End Function
#Region "Comparison"
#Region "Comparison"
Private function CompareElectricalConfiguration( other as AuxiliaryConfig) as boolean
......@@ -262,33 +257,30 @@ End Function
#End Region
#Region "Persistance"
#Region "Persistance"
'Persistance Functions
Public Function Save( auxFile As String ) As Boolean Implements IAuxiliaryConfig.Save
Dim returnValue As Boolean = true
Dim settings As JsonSerializerSettings = new JsonSerializerSettings()
settings.TypeNameHandling = TypeNameHandling.Objects
'JSON METHOD
try
Dim output As string = JsonConvert.SerializeObject(me, Formatting.Indented, settings)
File.WriteAllText(auxFile , output)
Catch ex as Exception
'TODO:Do something meaningfull here perhaps logging
returnValue= False
End Try
'JSON METHOD
try
Dim output As string = JsonConvert.SerializeObject(me, Formatting.Indented, settings)
File.WriteAllText(auxFile , output)
Catch ex as Exception
'TODO:Do something meaningfull here perhaps logging
returnValue= False
End Try
Return returnValue
......@@ -301,23 +293,22 @@ Public Function Load( auxFile As String ) As Boolean Implements IAuxiliaryCon
settings.TypeNameHandling = TypeNameHandling.Objects
'JSON METHOD
try
Dim output As String = File.ReadAllText(auxFile)
tmpAux = JsonConvert.DeserializeObject( Of AuxiliaryConfig)(output,settings)
'This is where we Assume values of loaded( Deserialized ) object.
AssumeValuesOfOther( tmpAux )
Catch ex as Exception
'TODO:Do something meaningfull here perhaps logging
returnValue= False
End Try
'JSON METHOD
try
Dim output As String = File.ReadAllText(auxFile)
tmpAux = JsonConvert.DeserializeObject( Of AuxiliaryConfig)(output,settings)
'This is where we Assume values of loaded( Deserialized ) object.
AssumeValuesOfOther( tmpAux )
Catch ex as Exception
'TODO:Do something meaningfull here perhaps logging
returnValue= False
End Try
Return returnValue
......
......@@ -57,17 +57,47 @@ Public Class AuxillaryEnvironment
Public M13 As IM13
Protected WithEvents compressorMap As ICompressorMap
'Constructors
Sub new()
Public Sub VectoEventHandler( byref sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) handles compressorMap.AuxiliaryEvent
Call Me.New("EMPTY")
End Sub
Public Sub new(auxConfigFile As String)
'Special Condid
If auxConfigFile="EMPTY" then
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With { .PowerNetVoltage= 26.3}
ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(26.3,0.096,false)
ElectricalUserInputsConfig.ResultCardIdle = new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardOverrun= new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardTraction= new ResultCard( New List(Of SmartResult ))
PneumaticAuxillariesConfig= New PneumaticsAuxilliariesConfig(False)
PneumaticUserInputsConfig= New PneumaticUserInputsConfig(False)
HvacUserInputsConfig = New HVACUserInputsConfig(New HVACSteadyStateModel(), String.Empty)
Exit sub
End If
If auxConfigFile is Nothing orelse auxConfigFile.Trim().Length=0 orelse Not FILE.Exists(auxConfigFile) then
setdefaults()
Else
setDefaults()
'ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear
If Not Load(auxConfigFile)
MessageBox.Show(String.Format("Unable to load file {0}", auxConfigFile))
End If
End If
End Sub
Public Sub ClearDown()
'Setup
Public Sub ClearDown()
M0 = Nothing
M05 = Nothing
......@@ -85,196 +115,143 @@ Public Sub ClearDown()
M12 = Nothing
M13 = Nothing
End Sub
Public Sub Initialise()
Dim alternatoMap As IAlternatorMap = New AlternatorMap(ElectricalUserInputsConfig.AlternatorMap)
alternatoMap.Initialise()
Dim actuationsMap As IPneumaticActuationsMAP = New PneumaticActuationsMAP( PneumaticUserInputsConfig.ActuationsMap)
compressorMap = New CompressorMap( PneumaticUserInputsConfig.CompressorMap)
compressorMap.Initialise()
Dim fuelMap As IFUELMAP = New cMAP()
fuelMap.FilePath= VectoInputs.FuelMap
If Not fuelMap.ReadFile() then
MessageBox.Show("Unable to read fuel map, aborting.")
return
End If
fuelMap.Triangulate()
ElectricalUserInputsConfig.ElectricalConsumers.DoorDutyCycleFraction = GetDoorActuationTimeFraction()
M0 = New M0_NonSmart_AlternatorsSetEfficiency( ElectricalUserInputsConfig.ElectricalConsumers,
End Sub
Public Sub Initialise()
Dim alternatoMap As IAlternatorMap = New AlternatorMap(ElectricalUserInputsConfig.AlternatorMap)
alternatoMap.Initialise()
Dim actuationsMap As IPneumaticActuationsMAP = New PneumaticActuationsMAP( PneumaticUserInputsConfig.ActuationsMap)
compressorMap = New CompressorMap( PneumaticUserInputsConfig.CompressorMap)
compressorMap.Initialise()
Dim fuelMap As IFUELMAP = New cMAP()
fuelMap.FilePath= VectoInputs.FuelMap
If Not fuelMap.ReadFile() then
MessageBox.Show("Unable to read fuel map, aborting.")
return
End If
fuelMap.Triangulate()
ElectricalUserInputsConfig.ElectricalConsumers.DoorDutyCycleFraction = GetDoorActuationTimeFraction()
M0 = New M0_NonSmart_AlternatorsSetEfficiency( ElectricalUserInputsConfig.ElectricalConsumers,
alternatoMap,
ElectricalUserInputsConfig.PowerNetVoltage,
Signals,
HvacUserInputsConfig.SteadyStateModel)
M05 = New M0_5_SmartAlternatorSetEfficiency(M0,
ElectricalUserInputsConfig.ElectricalConsumers,
alternatoMap,
ElectricalUserInputsConfig.PowerNetVoltage,
Signals,
HvacUserInputsConfig.SteadyStateModel)
M05 = New M0_5_SmartAlternatorSetEfficiency(M0,
ElectricalUserInputsConfig.ElectricalConsumers,
alternatoMap,
ElectricalUserInputsConfig.ResultCardIdle,
ElectricalUserInputsConfig.ResultCardTraction,
ElectricalUserInputsConfig.ResultCardOverrun,Signals)
M1 = New M1_AverageHVACLoadDemand(M0,
ElectricalUserInputsConfig.AlternatorGearEfficiency,
PneumaticUserInputsConfig.CompressorGearEfficiency,
ElectricalUserInputsConfig.PowerNetVoltage,
Signals,
HvacUserInputsConfig.SteadyStateModel)
M2 = New M2_AverageElectricalLoadDemand(ElectricalUserInputsConfig.ElectricalConsumers,
M0,
ElectricalUserInputsConfig.AlternatorGearEfficiency,
ElectricalUserInputsConfig.PowerNetVoltage,Signals )
M3 = New M3_AveragePneumaticLoadDemand(PneumaticUserInputsConfig,
PneumaticAuxillariesConfig,
actuationsMap,
compressorMap,
VectoInputs.VehicleWeightKG,
VectoInputs.Cycle,
Signals)
M4 = New M4_AirCompressor(compressorMap,PneumaticUserInputsConfig.CompressorGearRatio,PneumaticUserInputsConfig.CompressorGearEfficiency,Signals)
M5 = New M5__SmartAlternatorSetGeneration( M05, VectoInputs.PowerNetVoltage,ElectricalUserInputsConfig.AlternatorGearEfficiency)
M6 = New M6(M1,M2,M3,M4,M5,Signals)
M7 = New M7(M5,M6,Signals)
M8 = New M8(M1,M6,M7,Signals)
M9 = New M9(M1,M4,M6,M8,fuelMap,PneumaticAuxillariesConfig,Signals)
M10 = New M10(M3,M9,Signals)
M11 = New M11(M1,M3,M6,M8,fuelMap,Signals)
M12 = New M12( M10,M11, Signals )
M13 = New M13(M1,M10,M12,Signals)
ElectricalUserInputsConfig.ResultCardIdle,
ElectricalUserInputsConfig.ResultCardTraction,
ElectricalUserInputsConfig.ResultCardOverrun,Signals)
M1 = New M1_AverageHVACLoadDemand(M0,
ElectricalUserInputsConfig.AlternatorGearEfficiency,
PneumaticUserInputsConfig.CompressorGearEfficiency,
ElectricalUserInputsConfig.PowerNetVoltage,
Signals,
HvacUserInputsConfig.SteadyStateModel)
M2 = New M2_AverageElectricalLoadDemand(ElectricalUserInputsConfig.ElectricalConsumers,
M0,
ElectricalUserInputsConfig.AlternatorGearEfficiency,
ElectricalUserInputsConfig.PowerNetVoltage,Signals )
M3 = New M3_AveragePneumaticLoadDemand(PneumaticUserInputsConfig,
PneumaticAuxillariesConfig,
actuationsMap,
compressorMap,
VectoInputs.VehicleWeightKG,
VectoInputs.Cycle,
Signals)
M4 = New M4_AirCompressor(compressorMap,PneumaticUserInputsConfig.CompressorGearRatio,PneumaticUserInputsConfig.CompressorGearEfficiency,Signals)
M5 = New M5__SmartAlternatorSetGeneration( M05, VectoInputs.PowerNetVoltage,ElectricalUserInputsConfig.AlternatorGearEfficiency)
M6 = New M6(M1,M2,M3,M4,M5,Signals)
M7 = New M7(M5,M6,Signals)
M8 = New M8(M1,M6,M7,Signals)
M9 = New M9(M1,M4,M6,M8,fuelMap,PneumaticAuxillariesConfig,Signals)
M10 = New M10(M3,M9,Signals)
M11 = New M11(M1,M3,M6,M8,fuelMap,Signals)
M12 = New M12( M10,M11, Signals )
M13 = New M13(M1,M10,M12,Signals)
End Sub
Sub new()
Call Me.New("EMPTY")
End Sub
Public Sub new(auxConfigFile As String)
'Special Condid
If auxConfigFile="EMPTY" then
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With { .PowerNetVoltage= 26.3}
ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(26.3,0.096,false)
ElectricalUserInputsConfig.ResultCardIdle = new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardOverrun= new ResultCard( New List(Of SmartResult ))
ElectricalUserInputsConfig.ResultCardTraction= new ResultCard( New List(Of SmartResult ))
PneumaticAuxillariesConfig= New PneumaticsAuxilliariesConfig(False)
PneumaticUserInputsConfig= New PneumaticUserInputsConfig(False)
HvacUserInputsConfig = New HVACUserInputsConfig(New HVACSteadyStateModel(), String.Empty)
Exit sub
End If
'Default Values
Private Sub setDefaults()
If auxConfigFile is Nothing orelse auxConfigFile.Trim().Length=0 orelse Not FILE.Exists(auxConfigFile) then
setdefaults()
Else
VectoInputs = New VectoInputs With {.Cycle="Urban", .VehicleWeightKG=16500, .PowerNetVoltage=26.3,.FuelMap="testFuelGoodMap.vmap"}
setDefaults()
'ElectricalUserInputsConfig.ElectricalConsumers.Items.Clear
If Not Load(auxConfigFile)
MessageBox.Show(String.Format("Unable to load file {0}", auxConfigFile))
End If
End If
'Pneumatics
PneumaticUserInputsConfig = New PneumaticUserInputsConfig(true)
PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(true)
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {.DoorActuationTimeSecond=4,
.AlternatorGearEfficiency=0.8,
.PowerNetVoltage= VectoInputs.PowerNetVoltage,
.ResultCardIdle= New ResultCard( New List(Of SmartResult)),
.ResultCardOverrun= New ResultCard(New List(Of SmartResult)),
.ResultCardTraction=New ResultCard(New List(Of SmartResult)),
.SmartElectrical=True,
.AlternatorMap="testAlternatorMap.aalt"
}
HvacUserInputsConfig = New HVACUserInputsConfig( New HVACSteadyStateModel(100,100,100), String.Empty)
Signals = New Signals With { .EngineSpeed=2000, .TotalCycleTimeSeconds=3114, .ClutchEngaged=False}
ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(26.3,0.096,true)
End Sub
Private Sub setDefaults()
', .CycleDurationMinutes=51.9
VectoInputs = New VectoInputs With {.Cycle="Urban", .VehicleWeightKG=16500, .PowerNetVoltage=26.3,.FuelMap="testFuelGoodMap.vmap"}
'Pneumatics
PneumaticUserInputsConfig = New PneumaticUserInputsConfig(true)
PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(true)
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {.DoorActuationTimeSecond=4,
.AlternatorGearEfficiency=0.8,
.PowerNetVoltage= VectoInputs.PowerNetVoltage,
.ResultCardIdle= New ResultCard( New List(Of SmartResult)),
.ResultCardOverrun= New ResultCard(New List(Of SmartResult)),
.ResultCardTraction=New ResultCard(New List(Of SmartResult)),
.SmartElectrical=True,
.AlternatorMap="testAlternatorMap.aalt"
}
HvacUserInputsConfig = New HVACUserInputsConfig( New HVACSteadyStateModel(100,100,100), String.Empty)
Signals = New Signals With { .EngineSpeed=2000, .TotalCycleTimeSeconds=3114, .ClutchEngaged=False}
'Set Electricals.
' Dim doorDutyCycleFraction as Single = GetDoorActuationTimeFraction
ElectricalUserInputsConfig.ElectricalConsumers= New ElectricalConsumerList(26.3,0.096,true)
End Sub
Private Function GetDoorActuationTimeFraction()As Single
Dim actuationsMap as PneumaticActuationsMAP = New PneumaticActuationsMAP( PneumaticUserInputsConfig.ActuationsMap )
Dim actuationsKey As ActuationsKey = New ActuationsKey( "Park brake + 2 doors",VectoInputs.Cycle)
Dim numActuations as single = actuationsMap.GetNumActuations( actuationsKey)
Dim secondsPerActuation As single = ElectricalUserInputsConfig.DoorActuationTimeSecond
Dim doorDutyCycleFraction as Single = (numActuations * secondsPerActuation)/Signals.TotalCycleTimeSeconds
Return doorDutyCycleFraction
Private Function GetDoorActuationTimeFraction()As Single
Dim actuationsMap as PneumaticActuationsMAP = New PneumaticActuationsMAP( PneumaticUserInputsConfig.ActuationsMap )
Dim actuationsKey As ActuationsKey = New ActuationsKey( "Park brake + 2 doors",VectoInputs.Cycle)
Dim numActuations as single = actuationsMap.GetNumActuations( actuationsKey)
Dim secondsPerActuation As single = ElectricalUserInputsConfig.DoorActuationTimeSecond
Dim doorDutyCycleFraction as Single = (numActuations * secondsPerActuation)/Signals.TotalCycleTimeSeconds
Return doorDutyCycleFraction
End Function
#Region "Comparison"
Private function CompareElectricalConfiguration( other as AuxillaryEnvironment) as boolean
#Region "Comparison - Compares Configuration Values Are Same"
Private function CompareElectricalConfiguration( other as AuxillaryEnvironment) as boolean
'AlternatorGearEfficiency
If Me.ElectricalUserInputsConfig.AlternatorGearEfficiency<> other.ElectricalUserInputsConfig.AlternatorGearEfficiency then return false
......@@ -339,7 +316,7 @@ Return true
End Function
Private Function ComparePneumaticAuxiliariesConfig( other As AuxillaryEnvironment ) As Boolean
Private Function ComparePneumaticAuxiliariesConfig( other As AuxillaryEnvironment ) As Boolean
If Me.PneumaticAuxillariesConfig.AdBlueNIperMinute <> other.PneumaticAuxillariesConfig.AdBlueNIperMinute then Return False
If Me.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute <> other.PneumaticAuxillariesConfig.AirControlledSuspensionNIperMinute then Return False
......@@ -357,7 +334,7 @@ Private Function ComparePneumaticAuxiliariesConfig( other As AuxillaryEnvironmen
Return true
End Function
Private Function ComparePneumaticUserConfig( other As AuxillaryEnvironment ) As Boolean
Private Function ComparePneumaticUserConfig( other As AuxillaryEnvironment ) As Boolean
If Me.PneumaticUserInputsConfig.ActuationsMap <> other.PneumaticUserInputsConfig.ActuationsMap then Return False
If Me.PneumaticUserInputsConfig.AdBlueDosing <> other.PneumaticUserInputsConfig.AdBlueDosing then Return False
......@@ -375,7 +352,7 @@ Private Function ComparePneumaticUserConfig( other As AuxillaryEnvironment ) As
Return true
End Function
Private Function CompareHVACConfig( other As AuxillaryEnvironment) As Boolean
Private Function CompareHVACConfig( other As AuxillaryEnvironment) As Boolean
If Me.HvacUserInputsConfig.SteadyStateModel.HVACElectricalLoadPowerWatts <> other.HvacUserInputsConfig.SteadyStateModel.HVACElectricalLoadPowerWatts then Return false
If Me.HvacUserInputsConfig.SteadyStateModel.HVACFuellingLitresPerHour <> other.HvacUserInputsConfig.SteadyStateModel.HVACFuellingLitresPerHour then Return false
......@@ -386,8 +363,8 @@ Private Function CompareHVACConfig( other As AuxillaryEnvironment) As Boolean
Return true
End Function
Public Function ConfigValuesAreTheSameAs( other As AuxillaryEnvironment) As Boolean
Public Function ConfigValuesAreTheSameAs( other As AuxillaryEnvironment) As Boolean
If Not CompareElectricalConfiguration ( other ) then Return False
If Not ComparePneumaticAuxiliariesConfig ( other ) then Return False
......@@ -397,11 +374,11 @@ Public Function ConfigValuesAreTheSameAs( other As AuxillaryEnvironment) As Bool
Return true
End Function
#End Region
#Region "Persistance"
#Region "Persistance - Storage and Retreival of configuration files (.AAUX)"
'Persistance Functions
......@@ -559,9 +536,15 @@ End Sub
#End Region
Public Sub VectoEventHandler( byref sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) handles compressorMap.AuxiliaryEvent
End Sub
End Class
......@@ -159,9 +159,13 @@ End Property
Public ReadOnly Property Sum3 As Single
Get
Return _signals.EngineMotoringPower + _
_signals.EngineDrivelinePower + _
Sum2
'Return (_signals.EngineMotoringPower * 1000) + _
' (_signals.EngineDrivelinePower * 1000) + _
' Sum2
Return (_signals.EngineMotoringPower ) + _
(_signals.EngineDrivelinePower ) + _
Sum2
End Get
End Property
......
......@@ -49,7 +49,7 @@ Assert.IsNotNull( target)
End Sub
'Mikes Test Cases and Results
'Test Cases Supplied by Mike Preston.
<Test()> _
<TestCase(100,100,100,100,20,20,40,100,100,100,100,-550,false, 0,0, 0, 20, 0,100,20,200,0)> _
<TestCase(100,100,100,100,20,20,40,100,100,100,100,-550,true , 1,1, 100,40, 100,100,40,200,1)> _
......@@ -121,79 +121,6 @@ Public Sub MikesConditionsTest( M1_1 As Single, _
End Sub
''TB. Supplimental test cases to those supplied by engineering
'' AUX EMP EDP SM
'<TestCase(100,100,100,100,20,20,40,100,100 ,100,100, 100,false, 0,0, 0, 20, 0,100,20,200,0 ,TestName:="OverrunFlag-Off")> _
'<TestCase( 0, 0, 0, 0,20,20,40,100,100 , 0, 0, 0,false, 0,0, 0, 20, 0,100,20,200,0 ,TestName:="OverrunFlag-On")> _
'<Test()> _
'Public Sub SupplimentalDeveloperTests( M1_1 As Single, _
' M1_2 As Single, _
' M2_1 As Single, _
' M3_1 As Single, _
' M4_1 As Single, _
' M4_2 As Single, _
' M4_3 As Single, _
' M5_1 As Single, _
' M5_2 As Single, _
' AUX As Single, _
' EMP As Single, _
' EDP As Single, _
' SM As Boolean, _
' OUT1 As Single, _
' OUT2 As single, _
' OUT3 As Single, _
' OUT4 As Single, _
' OUT5 As Single, _
' OUT6 As Single, _
' OUT7 As Single, _
' OUT8 As Single, _
' OUT9 As Single)
' dim M1 = New M1_Mock()
' dim M2 = New M2_Mock()
' dim M3 = New M3_Mock()
' dim M4 = New M4_Mock()
' dim M5 = New M5_Mock()
' Dim signals As New Signals()
' M1._AveragePowerDemandAtCrankFromHVACMechanicalsWatts= M1_1
' M1._AveragePowerDemandAtCrankFromHVACElectricsWatts=M1_2
' M2._GetAveragePowerAtCrankFromElectrics=M2_1
' M3._GetAveragePowerDemandAtCrankFromPneumatics= M3_1
' M4._PowerCompressorOff=M4_1
' M4._PowerDifference=M4_2
' M4._PowerCompressorOn=M4_3
' M5._AlternatorsGenerationPowerAtCrankTractionOnWatts=M5_1
' M5._AlternatorsGenerationPowerAtCrankOverrunWatts=M5_2
' signals.EngineMotoringPower= EMP
' signals.PreExistingAuxPower=AUX
' signals.EngineDrivelinePower=EDP
' signals.SmartElectrics=SM
' Dim target As New M6(M1,M2,M3,M4,M5,Signals)
' Assert.AreEqual(OUT1,target.OverrunFlag)
' Assert.AreEqual(OUT2,target.SmartElecAndPneumaticsCompressorFlag)
' Assert.AreEqual(OUT3,target.SmartElecAndPneumaticAltPowerGenAtCrank)
' Assert.AreEqual(OUT4,target.SmartElecAndPneumaticAirCompPowerGenAtCrank)
' Assert.AreEqual(OUT5,target.SmartElecOnlyAltPowerGenAtCrank)
' Assert.AreEqual(OUT6,target.AveragePowerDemandAtCrankFromPneumatics)
' Assert.AreEqual(OUT7,target.SmartElecAndPneumaticAirCompPowerGenAtCrank)
' Assert.AreEqual(OUT8,target.AvgPowerDemandAtCrankFromElectricsIncHVAC)
' Assert.AreEqual(OUT9,target.SmartPneumaticsOnlyCompressorFlag)
' End Sub
End Class
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment