Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit d8e65d52 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

switch advanced auxiliaries to SI-class

parent 1cf32d9c
No related branches found
No related tags found
No related merge requests found
Showing
with 1224 additions and 1185 deletions
...@@ -15,6 +15,7 @@ Imports VectoAuxiliaries.Pneumatics ...@@ -15,6 +15,7 @@ Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Imports VectoAuxiliaries.DownstreamModules Imports VectoAuxiliaries.DownstreamModules
Imports System.Windows.Forms Imports System.Windows.Forms
Imports TUGraz.VectoCommon.Utils
''' <summary> ''' <summary>
...@@ -61,7 +62,7 @@ Public Class AdvancedAuxiliaries ...@@ -61,7 +62,7 @@ Public Class AdvancedAuxiliaries
'Event Handler top level bubble. 'Event Handler top level bubble.
Public Sub VectoEventHandler(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) _ Public Sub VectoEventHandler(ByRef sender As Object, message As String, messageType As AdvancedAuxiliaryMessageType) _
Handles CompressorMap.AuxiliaryEvent, AlternatorMap.AuxiliaryEvent, SSMTOOL.Message, ssmToolModule14.Message Handles compressorMap.AuxiliaryEvent, alternatorMap.AuxiliaryEvent, ssmTool.Message, ssmToolModule14.Message
If Signals.AuxiliaryEventReportingLevel <= messageType Then If Signals.AuxiliaryEventReportingLevel <= messageType Then
...@@ -137,44 +138,44 @@ Public Class AdvancedAuxiliaries ...@@ -137,44 +138,44 @@ Public Class AdvancedAuxiliaries
M0 = New M0_NonSmart_AlternatorsSetEfficiency(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers, M0 = New M0_NonSmart_AlternatorsSetEfficiency(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
alternatorMap, alternatorMap,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt),
Signals, Signals,
ssmTool) ssmTool)
M05 = New M0_5_SmartAlternatorSetEfficiency(M0, Dim M05tmp As M0_5_SmartAlternatorSetEfficiency = New M0_5_SmartAlternatorSetEfficiency(M0,
auxConfig.ElectricalUserInputsConfig.ElectricalConsumers, auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
alternatorMap, alternatorMap,
auxConfig.ElectricalUserInputsConfig.ResultCardIdle, auxConfig.ElectricalUserInputsConfig.ResultCardIdle,
auxConfig.ElectricalUserInputsConfig.ResultCardTraction, auxConfig.ElectricalUserInputsConfig.ResultCardTraction,
auxConfig.ElectricalUserInputsConfig.ResultCardOverrun, Signals) auxConfig.ElectricalUserInputsConfig.ResultCardOverrun, Signals)
M05 = M05tmp
M1 = New M1_AverageHVACLoadDemand(M0, M1 = New M1_AverageHVACLoadDemand(M0,
auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency,
auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt),
Signals, Signals,
ssmTOOL) ssmTool)
M2 = New M2_AverageElectricalLoadDemand(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers, M2 = New M2_AverageElectricalLoadDemand(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
M0, M0,
auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency, auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, Signals) auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt), Signals)
M3 = New M3_AveragePneumaticLoadDemand(auxConfig.PneumaticUserInputsConfig, M3 = New M3_AveragePneumaticLoadDemand(auxConfig.PneumaticUserInputsConfig,
auxConfig.PneumaticAuxillariesConfig, auxConfig.PneumaticAuxillariesConfig,
actuationsMap, actuationsMap,
compressorMap, compressorMap,
VectoInputs.VehicleWeightKG, VectoInputs.VehicleWeightKG.SI(Of Kilogram),
VectoInputs.Cycle, VectoInputs.Cycle,
Signals) Signals)
M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio, M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio,
auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals) auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency, Signals)
M5 = New M5__SmartAlternatorSetGeneration(M05, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, M5 = New M5__SmartAlternatorSetGeneration(M05tmp, auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt),
auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency) auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency)
M6 = New M6(M1, M2, M3, M4, M5, Signals) M6 = New M6(M1, M2, M3, M4, M5, Signals)
M7 = New M7(M5, M6, Signals) M7 = New M7(M5, M6, Signals)
...@@ -227,7 +228,7 @@ Public Class AdvancedAuxiliaries ...@@ -227,7 +228,7 @@ Public Class AdvancedAuxiliaries
Return True Return True
End Function End Function
Public Function CycleStep(seconds As Double, ByRef message As String) As Boolean _ Public Function CycleStep(seconds As Second, ByRef message As String) As Boolean _
Implements VectoAuxiliaries.IAdvancedAuxiliaries.CycleStep Implements VectoAuxiliaries.IAdvancedAuxiliaries.CycleStep
Try Try
...@@ -235,7 +236,7 @@ Public Class AdvancedAuxiliaries ...@@ -235,7 +236,7 @@ Public Class AdvancedAuxiliaries
M10.CycleStep(seconds) M10.CycleStep(seconds)
M11.CycleStep(seconds) M11.CycleStep(seconds)
Signals.CurrentCycleTimeInSeconds += seconds Signals.CurrentCycleTimeInSeconds += seconds.Value()
Catch ex As Exception Catch ex As Exception
MessageBox.Show("Exception: " + ex.Message + " Stack Trace: " + ex.StackTrace) MessageBox.Show("Exception: " + ex.Message + " Stack Trace: " + ex.StackTrace)
Return False Return False
...@@ -271,30 +272,22 @@ Public Class AdvancedAuxiliaries ...@@ -271,30 +272,22 @@ Public Class AdvancedAuxiliaries
Throw New NotImplementedException Throw New NotImplementedException
End Function End Function
Public ReadOnly Property TotalFuelGRAMS As Single Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelGRAMS Public ReadOnly Property TotalFuelGRAMS As Gram Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelGRAMS
Get Get
If Not M13 Is Nothing Then If Not M13 Is Nothing Then
Return M14.TotalCycleFCGrams Return M14.TotalCycleFCGrams
Else Else
Return 0.SI(Of Gram)()
Return 0
End If End If
End Get End Get
End Property End Property
Public ReadOnly Property TotalFuelLITRES As Single Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelLITRES Public ReadOnly Property TotalFuelLITRES As Liter Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelLITRES
Get Get
If Not M14 Is Nothing Then If Not M14 Is Nothing Then
Return M14.TotalCycleFCLitres Return M14.TotalCycleFCLitres
Else Else
Return 0.SI(Of Liter)()
Return 0
End If End If
End Get End Get
End Property End Property
...@@ -343,62 +336,62 @@ Public Class AdvancedAuxiliaries ...@@ -343,62 +336,62 @@ Public Class AdvancedAuxiliaries
'Diagnostics outputs for testing purposes in Vecto. 'Diagnostics outputs for testing purposes in Vecto.
'Eventually this can be removed or rendered non effective to reduce calculation load on the model. 'Eventually this can be removed or rendered non effective to reduce calculation load on the model.
Public ReadOnly Property AA_NonSmartAlternatorsEfficiency As Single? _ Public ReadOnly Property AA_NonSmartAlternatorsEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_NonSmartAlternatorsEfficiency Implements IAdvancedAuxiliaries.AA_NonSmartAlternatorsEfficiency
Get Get
Return M0.AlternatorsEfficiency Return M0.AlternatorsEfficiency
End Get End Get
End Property End Property
Public ReadOnly Property AA_SmartIdleCurrent_Amps As Single? Implements IAdvancedAuxiliaries.AA_SmartIdleCurrent_Amps Public ReadOnly Property AA_SmartIdleCurrent_Amps As Ampere Implements IAdvancedAuxiliaries.AA_SmartIdleCurrent_Amps
Get Get
Return M05.SmartIdleCurrent Return M05.SmartIdleCurrent
End Get End Get
End Property End Property
Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Single? _ Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_SmartIdleAlternatorsEfficiency Implements IAdvancedAuxiliaries.AA_SmartIdleAlternatorsEfficiency
Get Get
Return M05.AlternatorsEfficiencyIdleResultCard Return M05.AlternatorsEfficiencyIdleResultCard
End Get End Get
End Property End Property
Public ReadOnly Property AA_SmartTractionCurrent_Amps As Single? _ Public ReadOnly Property AA_SmartTractionCurrent_Amps As Ampere _
Implements IAdvancedAuxiliaries.AA_SmartTractionCurrent_Amps Implements IAdvancedAuxiliaries.AA_SmartTractionCurrent_Amps
Get Get
Return M05.SmartTractionCurrent Return M05.SmartTractionCurrent
End Get End Get
End Property End Property
Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Single? _ Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_SmartTractionAlternatorEfficiency Implements IAdvancedAuxiliaries.AA_SmartTractionAlternatorEfficiency
Get Get
Return M05.AlternatorsEfficiencyTractionOnResultCard Return M05.AlternatorsEfficiencyTractionOnResultCard
End Get End Get
End Property End Property
Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Single? _ Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Ampere _
Implements IAdvancedAuxiliaries.AA_SmartOverrunCurrent_Amps Implements IAdvancedAuxiliaries.AA_SmartOverrunCurrent_Amps
Get Get
Return M05.SmartOverrunCurrent Return M05.SmartOverrunCurrent
End Get End Get
End Property End Property
Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Single? _ Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_SmartOverrunAlternatorEfficiency Implements IAdvancedAuxiliaries.AA_SmartOverrunAlternatorEfficiency
Get Get
Return M05.AlternatorsEfficiencyOverrunResultCard Return M05.AlternatorsEfficiencyOverrunResultCard
End Get End Get
End Property End Property
Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As Single? _ Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As NormLiterPerSecond _
Implements IAdvancedAuxiliaries.AA_CompressorFlowRate_LitrePerSec Implements IAdvancedAuxiliaries.AA_CompressorFlowRate_LitrePerSec
Get Get
Return M4.GetFlowRate Return M4.GetFlowRate
End Get End Get
End Property End Property
Public ReadOnly Property AA_OverrunFlag As Integer? Implements IAdvancedAuxiliaries.AA_OverrunFlag Public ReadOnly Property AA_OverrunFlag As Boolean Implements IAdvancedAuxiliaries.AA_OverrunFlag
Get Get
Return M6.OverrunFlag Return M6.OverrunFlag
End Get End Get
...@@ -409,71 +402,71 @@ Public Class AdvancedAuxiliaries ...@@ -409,71 +402,71 @@ Public Class AdvancedAuxiliaries
Return _ Return _
If _ If _
(signals.EngineSpeed <= _signals.EngineIdleSpeed AndAlso (Not signals.ClutchEngaged OrElse signals.InNeutral), 1, 0) (Signals.EngineSpeed <= _Signals.EngineIdleSpeed AndAlso (Not Signals.ClutchEngaged OrElse Signals.InNeutral), 1, 0)
End Get End Get
End Property End Property
Public ReadOnly Property AA_CompressorFlag As Integer? Implements IAdvancedAuxiliaries.AA_CompressorFlag Public ReadOnly Property AA_CompressorFlag As Boolean Implements IAdvancedAuxiliaries.AA_CompressorFlag
Get Get
Return M8.CompressorFlag Return M8.CompressorFlag
End Get End Get
End Property End Property
Public ReadOnly Property AA_TotalCycleFC_Grams As Single? Implements IAdvancedAuxiliaries.AA_TotalCycleFC_Grams Public ReadOnly Property AA_TotalCycleFC_Grams As Gram Implements IAdvancedAuxiliaries.AA_TotalCycleFC_Grams
Get Get
Return M14.TotalCycleFCGrams Return M14.TotalCycleFCGrams
End Get End Get
End Property End Property
Public ReadOnly Property AA_TotalCycleFC_Litres As Single? Implements IAdvancedAuxiliaries.AA_TotalCycleFC_Litres Public ReadOnly Property AA_TotalCycleFC_Litres As Liter Implements IAdvancedAuxiliaries.AA_TotalCycleFC_Litres
Get Get
Return M14.TotalCycleFCLitres Return M14.TotalCycleFCLitres
End Get End Get
End Property End Property
Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Single _ Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Watt _
Implements IAdvancedAuxiliaries.AuxiliaryPowerAtCrankWatts Implements IAdvancedAuxiliaries.AuxiliaryPowerAtCrankWatts
Get Get
Return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries Return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
End Get End Get
End Property End Property
Public ReadOnly Property AA_AveragePowerDemandCrankHVACMechanicals As Single? _ Public ReadOnly Property AA_AveragePowerDemandCrankHVACMechanicals As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACMechanicals Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACMechanicals
Get Get
Return M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts() Return M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts()
End Get End Get
End Property End Property
Public ReadOnly Property AA_AveragePowerDemandCrankHVACElectricals As Single? _ Public ReadOnly Property AA_AveragePowerDemandCrankHVACElectricals As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACElectricals Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACElectricals
Get Get
Return M1.AveragePowerDemandAtCrankFromHVACElectricsWatts() Return M1.AveragePowerDemandAtCrankFromHVACElectricsWatts()
End Get End Get
End Property End Property
Public ReadOnly Property AA_AveragePowerDemandCrankElectrics As Single? _ Public ReadOnly Property AA_AveragePowerDemandCrankElectrics As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankElectrics Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankElectrics
Get Get
Return M2.GetAveragePowerAtCrankFromElectrics() Return M2.GetAveragePowerAtCrankFromElectrics()
End Get End Get
End Property End Property
Public ReadOnly Property AA_AveragePowerDemandCrankPneumatics As Single? _ Public ReadOnly Property AA_AveragePowerDemandCrankPneumatics As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankPneumatics Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankPneumatics
Get Get
Return M3.GetAveragePowerDemandAtCrankFromPneumatics() Return M3.GetAveragePowerDemandAtCrankFromPneumatics()
End Get End Get
End Property End Property
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOff As Single? _ Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOff As Gram _
Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOff Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOff
Get Get
Return M9.TotalCycleFuelConsumptionCompressorOffContinuously Return M9.TotalCycleFuelConsumptionCompressorOffContinuously
End Get End Get
End Property End Property
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOn As Single? _ Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOn As Gram _
Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOn Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOn
Get Get
Return M9.TotalCycleFuelConsumptionCompressorOnContinuously Return M9.TotalCycleFuelConsumptionCompressorOnContinuously
...@@ -484,57 +477,57 @@ Public Class AdvancedAuxiliaries ...@@ -484,57 +477,57 @@ Public Class AdvancedAuxiliaries
'TODO:REMOVE WHEN TESTING IS COMPLETE 'TODO:REMOVE WHEN TESTING IS COMPLETE
'PURE DIAGNOSTICS SHOULD ONLY BE USED IN MOD FOR ENGINEERING TESTS 'PURE DIAGNOSTICS SHOULD ONLY BE USED IN MOD FOR ENGINEERING TESTS
Public ReadOnly Property AA_D_M10_INTERP1 As Single Implements IAdvancedAuxiliaries.AA_D_M12_INTERP1 Public ReadOnly Property AA_D_M12_INTERP1 As Gram Implements IAdvancedAuxiliaries.AA_D_M12_INTERP1
Get Get
Return M12.INTRP1 Return M12.INTRP1()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M10_INTERP2 As Single Implements IAdvancedAuxiliaries.AA_D_M12_INTERP2 Public ReadOnly Property AA_D_M12_INTERP2 As Gram Implements IAdvancedAuxiliaries.AA_D_M12_INTERP2
Get Get
Return M12.INTRP2 Return M12.INTRP2()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_P1X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P1X Public ReadOnly Property AA_D_M12_P1X As Joule Implements IAdvancedAuxiliaries.AA_D_M12_P1X
Get Get
Return M12.P1X Return M12.P1X()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_P1Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P1Y Public ReadOnly Property AA_D_M12_P1Y As Gram Implements IAdvancedAuxiliaries.AA_D_M12_P1Y
Get Get
Return M12.P1Y Return M12.P1Y()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_P2X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P2X Public ReadOnly Property AA_D_M12_P2X As Joule Implements IAdvancedAuxiliaries.AA_D_M12_P2X
Get Get
Return M12.P2X Return M12.P2X()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_P2Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P2Y Public ReadOnly Property AA_D_M12_P2Y As Gram Implements IAdvancedAuxiliaries.AA_D_M12_P2Y
Get Get
Return M12.P2Y Return M12.P2Y()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_P3X As Single Implements IAdvancedAuxiliaries.AA_D_M12_P3X Public ReadOnly Property AA_D_M12_P3X As Joule Implements IAdvancedAuxiliaries.AA_D_M12_P3X
Get Get
Return M12.P3X Return M12.P3X()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_P3Y As Single Implements IAdvancedAuxiliaries.AA_D_M12_P3Y Public ReadOnly Property AA_D_M12_P3Y As Gram Implements IAdvancedAuxiliaries.AA_D_M12_P3Y
Get Get
Return M12.P3Y Return M12.P3Y()
End Get End Get
End Property End Property
Public ReadOnly Property AA_D_M12_XTAIN As Single Implements IAdvancedAuxiliaries.AA_D_M12_XTAIN Public ReadOnly Property AA_D_M12_XTAIN As Joule Implements IAdvancedAuxiliaries.AA_D_M12_XTAIN
Get Get
Return M12.XTAIN Return M12.XTAIN()
End Get End Get
End Property End Property
End Class End Class
...@@ -16,6 +16,7 @@ Imports System.IO ...@@ -16,6 +16,7 @@ Imports System.IO
Imports VectoAuxiliaries.DownstreamModules Imports VectoAuxiliaries.DownstreamModules
Imports System.Windows.Forms Imports System.Windows.Forms
Imports Newtonsoft.Json Imports Newtonsoft.Json
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries Imports VectoAuxiliaries
<Serializable()> <Serializable()>
...@@ -53,7 +54,8 @@ Public Class AuxiliaryConfig ...@@ -53,7 +54,8 @@ Public Class AuxiliaryConfig
'Special Condition 'Special Condition
If auxConfigFile = "EMPTY" Then If auxConfigFile = "EMPTY" Then
ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {.PowerNetVoltage = 28.3} ElectricalUserInputsConfig = New ElectricsUserInputsConfig() With {.PowerNetVoltage = 28.3}
ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096, False) ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096,
False)
ElectricalUserInputsConfig.ResultCardIdle = New ResultCard(New List(Of SmartResult)) ElectricalUserInputsConfig.ResultCardIdle = New ResultCard(New List(Of SmartResult))
ElectricalUserInputsConfig.ResultCardOverrun = New ResultCard(New List(Of SmartResult)) ElectricalUserInputsConfig.ResultCardOverrun = New ResultCard(New List(Of SmartResult))
ElectricalUserInputsConfig.ResultCardTraction = New ResultCard(New List(Of SmartResult)) ElectricalUserInputsConfig.ResultCardTraction = New ResultCard(New List(Of SmartResult))
...@@ -64,9 +66,9 @@ Public Class AuxiliaryConfig ...@@ -64,9 +66,9 @@ Public Class AuxiliaryConfig
End If End If
If auxConfigFile Is Nothing OrElse auxConfigFile.Trim().Length = 0 OrElse Not FILE.Exists(auxConfigFile) Then If auxConfigFile Is Nothing OrElse auxConfigFile.Trim().Length = 0 OrElse Not File.Exists(auxConfigFile) Then
setdefaults() setDefaults()
Else Else
...@@ -82,7 +84,8 @@ Public Class AuxiliaryConfig ...@@ -82,7 +84,8 @@ Public Class AuxiliaryConfig
'Set Default Values 'Set Default Values
Private Sub setDefaults() Private Sub setDefaults()
VectoInputs = New VectoInputs With {.Cycle = "Urban", .VehicleWeightKG = 16500, .PowerNetVoltage = 28.3} Dim tmp As VectoInputs = New VectoInputs With {.Cycle = "Urban", .VehicleWeightKG = 16500, .PowerNetVoltage = 28.3}
VectoInputs = tmp
Signals = New Signals With {.EngineSpeed = 2000, .TotalCycleTimeSeconds = 3114, .ClutchEngaged = False} Signals = New Signals With {.EngineSpeed = 2000, .TotalCycleTimeSeconds = 3114, .ClutchEngaged = False}
'Pneumatics set deault values 'Pneumatics set deault values
...@@ -90,7 +93,7 @@ Public Class AuxiliaryConfig ...@@ -90,7 +93,7 @@ Public Class AuxiliaryConfig
PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(True) PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(True)
'Electrical set deault values 'Electrical set deault values
ElectricalUserInputsConfig = New ElectricsUserInputsConfig(True, VectoInputs) ElectricalUserInputsConfig = New ElectricsUserInputsConfig(True, tmp)
ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096, True) ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096, True)
'HVAC set deault values 'HVAC set deault values
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
...@@ -17,23 +18,23 @@ Imports VectoAuxiliaries.DownstreamModules ...@@ -17,23 +18,23 @@ Imports VectoAuxiliaries.DownstreamModules
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM10 Public Interface IM10
'AverageLoadsFuelConsumptionInterpolatedForPneumatics 'AverageLoadsFuelConsumptionInterpolatedForPneumatics
ReadOnly Property AverageLoadsFuelConsumptionInterpolatedForPneumatics As Single ReadOnly Property AverageLoadsFuelConsumptionInterpolatedForPneumatics As Gram
'Interpolated FC between points 2-3-1 Representing smart Pneumatics = Fuel consumption with smart Pneumatics and average electrical power demand 'Interpolated FC between points 2-3-1 Representing smart Pneumatics = Fuel consumption with smart Pneumatics and average electrical power demand
ReadOnly Property FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand As Single ReadOnly Property FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand As Gram
Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) Sub CycleStep(stepTimeInSeconds As Second)
'Added for diagnostic inspection purposes only, does not materially affect the class function. 'Added for diagnostic inspection purposes only, does not materially affect the class function.
ReadOnly Property P1X As Single ReadOnly Property P1X As NormLiter
ReadOnly Property P1Y As Single ReadOnly Property P1Y As Gram
ReadOnly Property P2X As Single ReadOnly Property P2X As NormLiter
ReadOnly Property P2Y As Single ReadOnly Property P2Y As Gram
ReadOnly Property P3X As Single ReadOnly Property P3X As NormLiter
ReadOnly Property P3Y As Single ReadOnly Property P3Y As Gram
ReadOnly Property XTAIN As Single ReadOnly Property XTAIN As NormLiter
ReadOnly Property INTRP1 As Single ReadOnly Property INTRP1 As Gram
ReadOnly Property INTRP2 As Single ReadOnly Property INTRP2 As Gram
End Interface End Interface
End Namespace End Namespace
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
...@@ -21,7 +22,7 @@ Namespace DownstreamModules ...@@ -21,7 +22,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Single ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Joule
''' <summary> ''' <summary>
''' Smart Electrical Total Cycle Eletrical EnergyGenerated (J) ''' Smart Electrical Total Cycle Eletrical EnergyGenerated (J)
...@@ -29,7 +30,7 @@ Namespace DownstreamModules ...@@ -29,7 +30,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Single ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Joule
''' <summary> ''' <summary>
''' Total Cycle Electrical Demand (J) ''' Total Cycle Electrical Demand (J)
...@@ -37,7 +38,7 @@ Namespace DownstreamModules ...@@ -37,7 +38,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property TotalCycleElectricalDemand As Single ReadOnly Property TotalCycleElectricalDemand As Joule
''' <summary> ''' <summary>
''' Total Cycle Fuel Consumption: Smart Electrical Load (g) ''' Total Cycle Fuel Consumption: Smart Electrical Load (g)
...@@ -45,7 +46,7 @@ Namespace DownstreamModules ...@@ -45,7 +46,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Single ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Gram
''' <summary> ''' <summary>
''' Total Cycle Fuel Consumption: Zero Electrical Load (g) ''' Total Cycle Fuel Consumption: Zero Electrical Load (g)
...@@ -53,7 +54,7 @@ Namespace DownstreamModules ...@@ -53,7 +54,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Single ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Gram
''' <summary> ''' <summary>
''' Stop Start Sensitive: Total Cycle Electrical Demand (J) ''' Stop Start Sensitive: Total Cycle Electrical Demand (J)
...@@ -61,7 +62,7 @@ Namespace DownstreamModules ...@@ -61,7 +62,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Single ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Joule
''' <summary> ''' <summary>
''' Total Cycle Fuel Consuption : Average Loads (g) ''' Total Cycle Fuel Consuption : Average Loads (g)
...@@ -69,7 +70,7 @@ Namespace DownstreamModules ...@@ -69,7 +70,7 @@ Namespace DownstreamModules
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Single ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Gram
''' <summary> ''' <summary>
''' Clears aggregated values ( Sets them to zero ). ''' Clears aggregated values ( Sets them to zero ).
...@@ -82,7 +83,7 @@ Namespace DownstreamModules ...@@ -82,7 +83,7 @@ Namespace DownstreamModules
''' </summary> ''' </summary>
''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param> ''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param>
''' <remarks></remarks> ''' <remarks></remarks>
Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) Sub CycleStep(stepTimeInSeconds As Second)
End Interface End Interface
End Namespace End Namespace
......
...@@ -8,50 +8,46 @@ ...@@ -8,50 +8,46 @@
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM12
Public Interface IM12 ''' <summary>
''' Fuel consumption with smart Electrics and Average Pneumatic Power Demand
''' <summary> ''' </summary>
''' Fuel consumption with smart Electrics and Average Pneumatic Power Demand ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand As Gram
''' <remarks></remarks>
ReadOnly Property FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand As Single ''' <summary>
''' Base Fuel Consumption With Average Auxiliary Loads
''' <summary> ''' </summary>
''' Base Fuel Consumption With Average Auxiliary Loads ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property BaseFuelConsumptionWithTrueAuxiliaryLoads As Gram
''' <remarks></remarks>
ReadOnly Property BaseFuelConsumptionWithTrueAuxiliaryLoads As Single ''' <summary>
''' <summary> ''' Stop Start Correction
''' Stop Start Correction ''' </summary>
''' </summary> ''' <value></value>
''' <value></value> ''' <returns></returns>
''' <returns></returns> ''' <remarks></remarks>
''' <remarks></remarks> ReadOnly Property StopStartCorrection As Double
ReadOnly Property StopStartCorrection As Single
'Diagnostic Signals Only For Testing - No Material interference with operation of class.
'Diagnostic Signals Only For Testing - No Material interference with operation of class. ReadOnly Property P1X As Joule
ReadOnly Property P1X As Single ReadOnly Property P1Y As Gram
ReadOnly Property P1Y As Single ReadOnly Property P2X As Joule
ReadOnly Property P2X As Single ReadOnly Property P2Y As Gram
ReadOnly Property P2Y As Single ReadOnly Property P3X As Joule
ReadOnly Property P3X As Single ReadOnly Property P3Y As Gram
ReadOnly Property P3Y As Single ReadOnly Property XTAIN As Joule
ReadOnly Property XTAIN As Single ReadOnly Property INTRP1 As Gram
ReadOnly Property INTRP1 As Single ReadOnly Property INTRP2 As Gram
ReadOnly Property INTRP2 As Single End Interface
End Interface
End Namespace End Namespace
...@@ -10,26 +10,21 @@ ...@@ -10,26 +10,21 @@
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM13
Public Interface IM13 ''' <summary>
''' Total Cycle Fuel Consumption Grams
''' <summary> ''' </summary>
''' Total Cycle Fuel Consumption Grams ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks>WHTC and Start Stop Adjusted</remarks>
''' <returns></returns> ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Gram
''' <remarks>WHTC and Start Stop Adjusted</remarks> End Interface
ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Single
End Interface
End Namespace End Namespace
 
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM14
ReadOnly Property TotalCycleFCGrams As Gram
Public Interface IM14 ReadOnly Property TotalCycleFCLitres As Liter
End Interface
Readonly property TotalCycleFCGrams as single
ReadOnly Property TotalCycleFCLitres As single
End Interface
End Namespace End Namespace
...@@ -8,87 +8,82 @@ ...@@ -8,87 +8,82 @@
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM6
''' <summary>
''' OverrunFlag
''' </summary>
''' <value></value>
''' <returns>0 = Not in overrun, 1 = In Overrun</returns>
''' <remarks></remarks>
ReadOnly Property OverrunFlag As Boolean
Public Interface IM6 ''' <summary>
''' Smart Elec And Pneumatics Compressor Flag
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecAndPneumaticsCompressorFlag As Boolean
''' <summary>
''' Smart Elec And Pneumatic: Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Watt
''' <summary> ''' <summary>
''' OverrunFlag ''' Smart Elec And Pneumatic: Air Compressor Power Gen At Crank (W)
''' </summary> ''' </summary>
''' <value></value> ''' <value></value>
''' <returns>0 = Not in overrun, 1 = In Overrun</returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
Readonly Property OverrunFlag As Integer ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Watt
''' <summary>
''' Smart Elec And Pneumatics Compressor Flag
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Readonly Property SmartElecAndPneumaticsCompressorFlag As Integer
''' <summary>
''' Smart Elec And Pneumatic: Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Single
''' <summary>
''' Smart Elec And Pneumatic: Air Compressor Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Single
''' <summary>
''' Smart Electrics Only : Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Single
''' <summary>
''' Average Power Demand At Crank From Pneumatics (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Single
''' <summary>
''' Smart Pneumatic Only Air Comp Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Single
''' <summary>
''' Avgerage Power Demand At Crank From Electrics Including HVAC electrics (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Single
''' <summary>
''' Smart Pneumatics Only CompressorFlag
''' </summary>
''' <value></value>
''' <returns>Less than Zero = No, Greater then Zero = Yes </returns>
''' <remarks></remarks>
ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Integer
''' <summary>
End Interface ''' Smart Electrics Only : Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Watt
''' <summary>
''' Average Power Demand At Crank From Pneumatics (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Watt
''' <summary>
''' Smart Pneumatic Only Air Comp Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Watt
''' <summary>
''' Avgerage Power Demand At Crank From Electrics Including HVAC electrics (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Watt
''' <summary>
''' Smart Pneumatics Only CompressorFlag
''' </summary>
''' <value></value>
''' <returns>Less than Zero = No, Greater then Zero = Yes </returns>
''' <remarks></remarks>
ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Boolean
End Interface
End Namespace End Namespace
...@@ -9,48 +9,45 @@ ...@@ -9,48 +9,45 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM7
Public Interface IM7 ''' <summary>
''' Smart Electrical And Pneumatic Aux: Alternator Power Gen At Crank (W)
''' <summary> ''' </summary>
''' Smart Electrical And Pneumatic Aux: Alternator Power Gen At Crank (W) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Watt
''' <remarks></remarks>
ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Single ''' <summary>
''' Smart Electrical And Pneumatic Aux : Air Compressor Power Gen At Crank (W)
''' <summary> ''' </summary>
''' Smart Electrical And Pneumatic Aux : Air Compressor Power Gen At Crank (W) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Watt
''' <remarks></remarks>
ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Single ''' <summary>
''' Smart Electrical Only Aux : Alternator Power Gen At Crank (W)
''' <summary> ''' </summary>
''' Smart Electrical Only Aux : Alternator Power Gen At Crank (W) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Watt
''' <remarks></remarks>
ReadOnly property SmartElectricalOnlyAuxAltPowerGenAtCrank as single ''' <summary>
''' Smart Pneumatic Only Aux : Air Comppressor Power Gen At Crank (W)
''' <summary> ''' </summary>
''' Smart Pneumatic Only Aux : Air Comppressor Power Gen At Crank (W) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Watt
''' <remarks></remarks> End Interface
ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Single
End Interface
End Namespace End Namespace
...@@ -10,44 +10,38 @@ ...@@ -10,44 +10,38 @@
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM8
Public Interface IM8
'OUT1 'OUT1
''' <summary> ''' <summary>
''' Aux Power At Crank From Electrical HVAC And Pneumatics Ancilaries (W) ''' Aux Power At Crank From Electrical HVAC And Pneumatics Ancilaries (W)
''' </summary> ''' </summary>
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Watt
'OUT2 'OUT2
''' <summary> ''' <summary>
''' Smart Electrical Alternator Power Gen At Crank (W) ''' Smart Electrical Alternator Power Gen At Crank (W)
''' </summary> ''' </summary>
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Watt
'OUT3 'OUT3
''' <summary> ''' <summary>
''' Compressor Flag ''' Compressor Flag
''' </summary> ''' </summary>
''' <value></value> ''' <value></value>
''' <returns></returns> ''' <returns></returns>
''' <remarks></remarks> ''' <remarks></remarks>
ReadOnly Property CompressorFlag As Integer ReadOnly Property CompressorFlag As Boolean
End Interface
End Interface
End Namespace End Namespace
...@@ -9,69 +9,60 @@ ...@@ -9,69 +9,60 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Interface IM9
Public Interface IM9 Inherits IAuxiliaryEvent
Inherits IAuxiliaryEvent
''' <summary>
''' Clears aggregated values ( Sets them to zero )
''' <summary> ''' </summary>
''' Clears aggregated values ( Sets them to zero ) ''' <remarks></remarks>
''' </summary> Sub ClearAggregates()
''' <remarks></remarks>
Sub ClearAggregates() ''' <summary>
''' Increments all aggregated outputs
''' <summary> ''' </summary>
''' Increments all aggregated outputs ''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param>
''' </summary> ''' <remarks></remarks>
''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param> Sub CycleStep(stepTimeInSeconds As Second)
''' <remarks></remarks>
Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) ''' <summary>
''' Litres Of Air: Compressor On Continually (L)
''' <summary> ''' </summary>
''' Litres Of Air: Compressor On Continually (L) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks>Start/Stop Sensitive</remarks>
''' <returns></returns> ReadOnly Property LitresOfAirCompressorOnContinually As NormLiter
''' <remarks>Start/Stop Sensitive</remarks>
ReadOnly Property LitresOfAirCompressorOnContinually As Single ''' <summary>
''' Litres Of Air Compressor On Only In Overrun (L)
''' <summary> ''' </summary>
''' Litres Of Air Compressor On Only In Overrun (L) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As NormLiter
''' <remarks></remarks>
ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As Single ''' <summary>
''' Total Cycle Fuel Consumption Compressor *On* Continuously (G)
''' <summary> ''' </summary>
''' Total Cycle Fuel Consumption Compressor *On* Continuously (G) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Gram
''' <remarks></remarks>
Readonly property TotalCycleFuelConsumptionCompressorOnContinuously As single ''' <summary>
''' Total Cycle Fuel Consumption Compressor *OFF* Continuously (G)
''' <summary> ''' </summary>
''' Total Cycle Fuel Consumption Compressor *OFF* Continuously (G) ''' <value></value>
''' </summary> ''' <returns></returns>
''' <value></value> ''' <remarks></remarks>
''' <returns></returns> ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Gram
''' <remarks></remarks> End Interface
Readonly property TotalCycleFuelConsumptionCompressorOffContinuously As single
End Interface
End Namespace End Namespace
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports TUGraz.VectoCore.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
...@@ -19,60 +21,68 @@ Namespace DownstreamModules ...@@ -19,60 +21,68 @@ Namespace DownstreamModules
Implements IM10 Implements IM10
'Aggregators 'Aggregators
Private _AverageAirConsumedLitre As Double Private _AverageAirConsumedLitre As NormLiter
'Diagnostics 'Diagnostics
Private x1, y1, x2, y2, x3, y3, xTA, interp1, interp2 As Single Private x1 As NormLiter
Private y1 As Gram
Public ReadOnly Property P1X As Single Implements IM10.P1X Private x2 As NormLiter
Private y2 As Gram
Private x3 As NormLiter
Private y3 As Gram
Private xTA As NormLiter
Private interp1 As Gram
Private interp2 As Gram
Public ReadOnly Property P1X As NormLiter Implements IM10.P1X
Get Get
Return x1 Return x1
End Get End Get
End Property End Property
Public ReadOnly Property P1Y As Single Implements IM10.P1Y Public ReadOnly Property P1Y As Gram Implements IM10.P1Y
Get Get
Return y1 Return y1
End Get End Get
End Property End Property
Public ReadOnly Property P2X As Single Implements IM10.P2X Public ReadOnly Property P2X As NormLiter Implements IM10.P2X
Get Get
Return x2 Return x2
End Get End Get
End Property End Property
Public ReadOnly Property P2Y As Single Implements IM10.P2Y Public ReadOnly Property P2Y As Gram Implements IM10.P2Y
Get Get
Return y2 Return y2
End Get End Get
End Property End Property
Public ReadOnly Property P3X As Single Implements IM10.P3X Public ReadOnly Property P3X As NormLiter Implements IM10.P3X
Get Get
Return x3 Return x3
End Get End Get
End Property End Property
Public ReadOnly Property P3Y As Single Implements IM10.P3Y Public ReadOnly Property P3Y As Gram Implements IM10.P3Y
Get Get
Return y3 Return y3
End Get End Get
End Property End Property
Public ReadOnly Property XTAIN As Single Implements IM10.XTAIN Public ReadOnly Property XTAIN As NormLiter Implements IM10.XTAIN
Get Get
Return xTA Return xTA
End Get End Get
End Property End Property
Public ReadOnly Property INTRP1 As Single Implements IM10.INTRP1 Public ReadOnly Property INTRP1 As Gram Implements IM10.INTRP1
Get Get
Return interp1 Return interp1
End Get End Get
End Property End Property
Public ReadOnly Property INTRP2 As Single Implements IM10.INTRP2 Public ReadOnly Property INTRP2 As Gram Implements IM10.INTRP2
Get Get
Return interp2 Return interp2
End Get End Get
...@@ -95,14 +105,14 @@ Namespace DownstreamModules ...@@ -95,14 +105,14 @@ Namespace DownstreamModules
SmartPneumtaics SmartPneumtaics
End Enum End Enum
Private Function Interpolate(interpType As InterpolationType) As Single Private Function Interpolate(interpType As InterpolationType) As Gram
Dim returnValue As Single Dim returnValue As Gram = 0.SI(Of Gram)()
' Dim x1,y1,x2,y2,x3,y3, xTA As Single ' Dim x1,y1,x2,y2,x3,y3, xTA As Single
x1 = m9.LitresOfAirCompressorOnContinually x1 = m9.LitresOfAirCompressorOnContinually
y1 = m9.TotalCycleFuelConsumptionCompressorOnContinuously y1 = m9.TotalCycleFuelConsumptionCompressorOnContinuously
x2 = 0 x2 = 0.SI(Of NormLiter)()
y2 = m9.TotalCycleFuelConsumptionCompressorOffContinuously y2 = m9.TotalCycleFuelConsumptionCompressorOffContinuously
x3 = m9.LitresOfAirCompressorOnOnlyInOverrun x3 = m9.LitresOfAirCompressorOnOnlyInOverrun
y3 = m9.TotalCycleFuelConsumptionCompressorOffContinuously y3 = m9.TotalCycleFuelConsumptionCompressorOffContinuously
...@@ -115,15 +125,15 @@ Namespace DownstreamModules ...@@ -115,15 +125,15 @@ Namespace DownstreamModules
'Non-Smart Pneumatics ( OUT 1 ) 'Non-Smart Pneumatics ( OUT 1 )
Case InterpolationType.NonSmartPneumtaics Case InterpolationType.NonSmartPneumtaics
returnValue = y2 + (((y1 - y2) * xTA) / x1) 'returnValue = (y2 + (((y1 - y2) * xTA) / x1))
returnValue = VectoMath.Interpolate(x1, x2, y1, y2, xTA)
interp1 = returnValue interp1 = returnValue
'Smart Pneumatics ( OUT 2 ) 'Smart Pneumatics ( OUT 2 )
Case InterpolationType.SmartPneumtaics Case InterpolationType.SmartPneumtaics
returnValue = y3 + (((y1 - y3) / (x1 - x3)) * (xTA - x3)) 'returnValue = (y3 + (((y1 - y3) / (x1 - x3)) * (xTA - x3)))
returnValue = VectoMath.Interpolate(x1, x3, y1, y3, xTA)
interp2 = returnValue interp2 = returnValue
End Select End Select
...@@ -134,23 +144,23 @@ Namespace DownstreamModules ...@@ -134,23 +144,23 @@ Namespace DownstreamModules
#Region "Public Properties" #Region "Public Properties"
Public ReadOnly Property AverageLoadsFuelConsumptionInterpolatedForPneumatics As Single _ Public ReadOnly Property AverageLoadsFuelConsumptionInterpolatedForPneumatics As Gram _
Implements IM10.AverageLoadsFuelConsumptionInterpolatedForPneumatics Implements IM10.AverageLoadsFuelConsumptionInterpolatedForPneumatics
Get Get
'SCHM 3_02 'SCHM 3_02
Dim intrp1 As Single = Interpolate(InterpolationType.NonSmartPneumtaics) Dim intrp1 As Gram = Interpolate(InterpolationType.NonSmartPneumtaics)
'intrp1 = If(Not Single.IsNaN(intrp1), intrp1, 0) 'intrp1 = If(Not Single.IsNaN(intrp1), intrp1, 0)
Return intrp1 Return intrp1
End Get End Get
End Property End Property
Public ReadOnly Property FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand As Single _ Public ReadOnly Property FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand As Gram _
Implements IM10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand Implements IM10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand
Get Get
'SCHM 3_02 'SCHM 3_02
Dim intrp2 As Single = Interpolate(InterpolationType.SmartPneumtaics) Dim intrp2 As Gram = Interpolate(InterpolationType.SmartPneumtaics)
'intrp2 = If(Not Single.IsNaN(intrp2), intrp2, 0) 'intrp2 = If(Not Single.IsNaN(intrp2), intrp2, 0)
Return intrp2 Return intrp2
End Get End Get
...@@ -165,14 +175,17 @@ Namespace DownstreamModules ...@@ -165,14 +175,17 @@ Namespace DownstreamModules
Me.m3 = m3 Me.m3 = m3
Me.m9 = m9 Me.m9 = m9
Me.signals = signals Me.signals = signals
_AverageAirConsumedLitre = 0.SI(Of NormLiter)()
End Sub End Sub
#End Region #End Region
Public Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) Implements IM10.CycleStep Public Sub CycleStep(stepTimeInSeconds As Second) Implements IM10.CycleStep
_AverageAirConsumedLitre += _AverageAirConsumedLitre +=
If(Single.IsNaN(m3.AverageAirConsumedPerSecondLitre), 0, m3.AverageAirConsumedPerSecondLitre * stepTimeInSeconds) If _
(Double.IsNaN(m3.AverageAirConsumedPerSecondLitre.Value()), 0.SI(Of NormLiter),
m3.AverageAirConsumedPerSecondLitre * stepTimeInSeconds)
End Sub End Sub
End Class End Class
End Namespace End Namespace
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
...@@ -21,13 +22,13 @@ Namespace DownstreamModules ...@@ -21,13 +22,13 @@ Namespace DownstreamModules
#Region "Private Aggregates" #Region "Private Aggregates"
'Private Aggregations 'Private Aggregations
Private AG1 As Double Private AG1 As Joule
Private AG2 As Double Private AG2 As Joule
Private AG3 As Double Private AG3 As Joule
Private AG4 As Double Private AG4 As Gram
Private AG5 As Double Private AG5 As Gram
Private AG6 As Double Private AG6 As Joule
Private AG7 As Double Private AG7 As Gram
#End Region #End Region
...@@ -42,187 +43,193 @@ Namespace DownstreamModules ...@@ -42,187 +43,193 @@ Namespace DownstreamModules
#End Region #End Region
'Staging Calculations 'Staging Calculations
Private Function Sum0(ByVal rpm As Single) As Single Private Function Sum0(ByVal rpm As Double) As PerSecond
If rpm < 1 Then rpm = 1 If rpm < 1 Then rpm = 1
Return rpm / RPM_to_RadiansPerSecond Return rpm.RPMtoRad() ' / RPM_to_RadiansPerSecond
End Function End Function
Private ReadOnly Property Sum1 As Single Private ReadOnly Property Sum1 As Watt
Get Get
Return m6.OverrunFlag * m8.SmartElectricalAlternatorPowerGenAtCrank Return If(M6.OverrunFlag, M8.SmartElectricalAlternatorPowerGenAtCrank, SIBase(Of Watt).Create(0.0))
'Return M6.OverrunFlag*M8.SmartElectricalAlternatorPowerGenAtCrank
End Get End Get
End Property End Property
Private ReadOnly Property Sum2 As Single Private ReadOnly Property Sum2 As Watt
Get Get
Return m3.GetAveragePowerDemandAtCrankFromPneumatics + m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts Return M3.GetAveragePowerDemandAtCrankFromPneumatics + M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
End Get End Get
End Property End Property
Private ReadOnly Property Sum3 As Single Private ReadOnly Property Sum3 As NewtonMeter
Get Get
Return m8.SmartElectricalAlternatorPowerGenAtCrank / Sum0(signals.EngineSpeed) Return M8.SmartElectricalAlternatorPowerGenAtCrank / Sum0(signals.EngineSpeed)
End Get End Get
End Property End Property
Private ReadOnly Property Sum4 As Single Private ReadOnly Property Sum4 As NewtonMeter
Get Get
Return Sum2 / Sum0(signals.EngineSpeed) Return Sum2 / Sum0(signals.EngineSpeed)
End Get End Get
End Property End Property
Private ReadOnly Property Sum5 As Single Private ReadOnly Property Sum5 As NewtonMeter
Get Get
Return Sum4 + Sum9 Return Sum4 + Sum9
End Get End Get
End Property End Property
Private ReadOnly Property Sum6 As Single Private ReadOnly Property Sum6 As NewtonMeter
Get Get
Return Sum3 + Sum5 Return Sum3 + Sum5
End Get End Get
End Property End Property
Private ReadOnly Property Sum7 As Single Private ReadOnly Property Sum7 As GramPerSecond
Get Get
'SCM 3_02 'SCM 3_02
Dim intrp1 As Single = fmap.GetFuelConsumption(sum6, signals.EngineSpeed) Dim intrp1 As GramPerSecond = fmap.GetFuelConsumption(Sum6, signals.EngineSpeed)
intrp1 = If(Not Single.IsNaN(intrp1) AndAlso intrp1 > 0, intrp1, 0) intrp1 = If(Not Double.IsNaN(intrp1.Value()) AndAlso intrp1 > 0, intrp1, 0.SI(Of GramPerSecond))
Return intrp1 Return intrp1
End Get End Get
End Property End Property
Private ReadOnly Property Sum8 As Single Private ReadOnly Property Sum8 As GramPerSecond
Get Get
'SCHM 3_2 'SCHM 3_2
Dim intrp2 As Single = fmap.GetFuelConsumption(Sum5, signals.EngineSpeed) Dim intrp2 As GramPerSecond = fmap.GetFuelConsumption(Sum5, signals.EngineSpeed)
intrp2 = If(Not Single.IsNaN(intrp2) AndAlso intrp2 > 0, intrp2, 0) intrp2 = If(Not Double.IsNaN(intrp2.Value()) AndAlso intrp2 > 0, intrp2, 0.SI(Of GramPerSecond))
Return intrp2 Return intrp2
End Get End Get
End Property End Property
Private ReadOnly Property Sum9 As Single Private ReadOnly Property Sum9 As NewtonMeter
Get Get
Return signals.EngineDrivelineTorque + ((signals.PreExistingAuxPower * 1000) / Sum0(signals.EngineSpeed)) Return _
signals.EngineDrivelineTorque.SI(Of NewtonMeter)() +
((signals.PreExistingAuxPower * 1000).SI(Of Watt)() / Sum0(signals.EngineSpeed))
End Get End Get
End Property End Property
Private ReadOnly Property Sum10 As Single Private ReadOnly Property Sum10 As NewtonMeter
Get Get
Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC / Sum0(signals.EngineSpeed) Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC / Sum0(signals.EngineSpeed)
End Get End Get
End Property End Property
Private ReadOnly Property Sum11 As Single Private ReadOnly Property Sum11 As NewtonMeter
Get Get
Return Sum5 + Sum10 Return Sum5 + Sum10
End Get End Get
End Property End Property
Private ReadOnly Property Sum12 As Single Private ReadOnly Property Sum12 As GramPerSecond
Get Get
'SCHM 3_2 'SCHM 3_2
Dim intrp3 As Single = fmap.GetFuelConsumption(Sum11, signals.EngineSpeed) Dim intrp3 As GramPerSecond = fmap.GetFuelConsumption(Sum11, signals.EngineSpeed)
intrp3 = If(Not Single.IsNaN(intrp3) AndAlso intrp3 > 0, intrp3, 0) intrp3 = If(Not Double.IsNaN(intrp3.Value()) AndAlso intrp3 > 0, intrp3, 0.SI(Of GramPerSecond))
Return intrp3 Return intrp3
End Get End Get
End Property End Property
'OUT1 'OUT1
Public ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Single _ Public ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Joule _
Implements IM11.SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly Implements IM11.SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly
Get Get
Return AG1 Return AG1
End Get End Get
End Property End Property
'OUT2 'OUT2
Public ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Single _ Public ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Joule _
Implements IM11.SmartElectricalTotalCycleEletricalEnergyGenerated Implements IM11.SmartElectricalTotalCycleEletricalEnergyGenerated
Get Get
Return AG2 Return AG2
End Get End Get
End Property End Property
'OUT3 'OUT3
Public ReadOnly Property TotalCycleElectricalDemand As Single Implements IM11.TotalCycleElectricalDemand Public ReadOnly Property TotalCycleElectricalDemand As Joule Implements IM11.TotalCycleElectricalDemand
Get Get
Return AG3 Return AG3
End Get End Get
End Property End Property
'OUT4 'OUT4
Public ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Single _ Public ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Gram _
Implements IM11.TotalCycleFuelConsumptionSmartElectricalLoad Implements IM11.TotalCycleFuelConsumptionSmartElectricalLoad
Get Get
Return AG4 Return AG4
End Get End Get
End Property End Property
'OUT5 'OUT5
Public ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Single _ Public ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Gram _
Implements IM11.TotalCycleFuelConsumptionZeroElectricalLoad Implements IM11.TotalCycleFuelConsumptionZeroElectricalLoad
Get Get
Return AG5 Return AG5
End Get End Get
End Property End Property
'OUT6 'OUT6
Public ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Single _ Public ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Joule _
Implements IM11.StopStartSensitiveTotalCycleElectricalDemand Implements IM11.StopStartSensitiveTotalCycleElectricalDemand
Get Get
Return AG6 Return AG6
End Get End Get
End Property End Property
'OUT7 'OUT7
Public ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Single _ Public ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Gram _
Implements IM11.TotalCycleFuelConsuptionAverageLoads Implements IM11.TotalCycleFuelConsuptionAverageLoads
Get Get
Return AG7 Return AG7
End Get End Get
End Property End Property
Private ReadOnly Property SW1 As Single Private ReadOnly Property SW1 As Boolean
Get Get
Return If(signals.EngineStopped, 0, 1) Return Not signals.EngineStopped
End Get End Get
End Property End Property
'Clear at the beginning of cycle 'Clear at the beginning of cycle
Sub ClearAggregates() Implements IM11.ClearAggregates Sub ClearAggregates() Implements IM11.ClearAggregates
AG1 = 0 AG1 = 0.SI(Of Joule)()
AG2 = 0 AG2 = 0.SI(Of Joule)()
AG3 = 0 AG3 = 0.SI(Of Joule)()
AG4 = 0 AG4 = 0.SI(Of Gram)()
AG5 = 0 AG5 = 0.SI(Of Gram)()
AG6 = 0 AG6 = 0.SI(Of Joule)()
AG7 = 0 AG7 = 0.SI(Of Gram)()
End Sub End Sub
'Add to Aggregates dependent on cycle step time. 'Add to Aggregates dependent on cycle step time.
Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) Implements IM11.CycleStep Sub CycleStep(stepTimeInSeconds As Second) Implements IM11.CycleStep
'S/S Insensitive 'S/S Insensitive
AG3 += (stepTimeInSeconds * M6.AvgPowerDemandAtCrankFromElectricsIncHVAC) AG3 += (M6.AvgPowerDemandAtCrankFromElectricsIncHVAC * stepTimeInSeconds)
If signals.EngineStopped Then Return If signals.EngineStopped Then Return
'S/S Sensitive 'S/S Sensitive
AG1 += (stepTimeInSeconds * Sum1 * SW1) If (SW1) Then
AG2 += (stepTimeInSeconds * M8.SmartElectricalAlternatorPowerGenAtCrank * SW1) AG1 += (Sum1 * stepTimeInSeconds)
AG2 += (M8.SmartElectricalAlternatorPowerGenAtCrank * stepTimeInSeconds)
AG6 += (stepTimeInSeconds * M6.AvgPowerDemandAtCrankFromElectricsIncHVAC * SW1) AG6 += (M6.AvgPowerDemandAtCrankFromElectricsIncHVAC * stepTimeInSeconds)
'These need to be divided by 3600 as the Fuel Map output is in Grams/Second. 'MQ: No longer needed - already per Second 'These need to be divided by 3600 as the Fuel Map output is in Grams/Second.
AG4 += (stepTimeInSeconds * Sum7 / 3600 * SW1) AG4 += (Sum7 * stepTimeInSeconds) '/ 3600
AG5 += (stepTimeInSeconds * Sum8 / 3600 * SW1) AG5 += (Sum8 * stepTimeInSeconds) ' / 3600
AG7 += (stepTimeInSeconds * Sum12 / 3600 * SW1) AG7 += (Sum12 * stepTimeInSeconds) '/ 3600
End If
End Sub End Sub
'Constructor 'Constructor
...@@ -235,6 +242,7 @@ Namespace DownstreamModules ...@@ -235,6 +242,7 @@ Namespace DownstreamModules
Me.M8 = m8 Me.M8 = m8
Me.fmap = fmap Me.fmap = fmap
Me.signals = signals Me.signals = signals
ClearAggregates()
End Sub End Sub
End Class End Class
End Namespace End Namespace
......
...@@ -9,174 +9,191 @@ ...@@ -9,174 +9,191 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Class M12
Implements IM12
Public Class M12 Private Class Point
Implements IM12 Public X As Joule
Public Y As Gram
End Class
Private M11 As IM11
Private M10 As IM10
Private Signals As ISignals
Private _P1X As Joule
Private _P1Y As Gram
Private _P2X As Joule
Private _P2Y As Gram
Private _P3X As Joule
Private _P3Y As Gram
Private _XT As Joule
Private _INTERP1 As Gram
Private _INTERP2 As Gram
Private Class Point Private Sub setPoints()
Public X As Single
Public Y As Single
End Class
Private M11 As IM11
Private M10 As IM10
Private Signals As ISignals
Private _P1X, _P1Y, _P2X, _P2Y, _P3X, _P3Y, _XT, _INTERP1, _INTERP2 As Single
Private Sub setPoints()
_P1X = 0
_P1Y = M11.TotalCycleFuelConsumptionZeroElectricalLoad
_P2X = M11.SmartElectricalTotalCycleEletricalEnergyGenerated
_P2Y = M11.TotalCycleFuelConsumptionSmartElectricalLoad
_P3X = M11.StopStartSensitiveTotalCycleElectricalDemand
_P3Y = M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics
_XT = M11.TotalCycleElectricalDemand
End Sub
'Interpolation
Private Function Sum1() As Single
Dim P1 As Point = New Point With {.X = 0, .Y = M11.TotalCycleFuelConsumptionZeroElectricalLoad}
Dim P2 As Point = New Point With {.X = M11.SmartElectricalTotalCycleEletricalEnergyGenerated * Signals.StoredEnergyEfficiency, .Y = M11.TotalCycleFuelConsumptionSmartElectricalLoad}
Dim IP5x As Single = M11.TotalCycleElectricalDemand
Dim IP5y As Single = 0
Dim TanTeta As Single = (P2.Y - P1.Y) / (P2.X - P1.X)
IP5y = P1.Y + (TanTeta * IP5x)
_INTERP1 = IP5Y
setPoints()
Return If(Single.IsNaN(IP5Y), 0, IP5y)
End Function
Private Function Sum2() As Single
Dim P1 As Point = New Point With {.X = 0, .Y = M11.TotalCycleFuelConsumptionZeroElectricalLoad}
Dim P3 As Point = New Point With {.X = M11.StopStartSensitiveTotalCycleElectricalDemand, .Y = M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics}
Dim IP5x As Single = M11.TotalCycleElectricalDemand
Dim IP5y As Single = 0
Dim TanTeta As Single = (P3.Y - P1.Y) / (P3.X - P1.X)
IP5y = P1.Y + (TanTeta * IP5x)
_INTERP2 = IP5y
Return If(Single.IsNaN(IP5Y), 0, IP5y)
End Function
'Constructor
Public Sub New(m10 As IM10, m11 As IM11, signals As ISignals)
Me.M10 = m10
Me.M11 = m11
Me.Signals = signals
End Sub
'Main Class Outputs
Public ReadOnly Property FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand As Single Implements IM12.FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand
Get
'SCHM 3_2
Dim interp1 As Single = Sum1
interp1 = If(Not Single.IsNaN(interp1) AndAlso M11.StopStartSensitiveTotalCycleElectricalDemand > 0, interp1, M11.TotalCycleFuelConsumptionZeroElectricalLoad)
Return interp1
End Get
End Property
Public ReadOnly Property BaseFuelConsumptionWithTrueAuxiliaryLoads As Single Implements IM12.BaseFuelConsumptionWithTrueAuxiliaryLoads
Get
'SCM 3_02
Dim interp2 As Single = Sum2()
interp2 = If(Not Single.IsNaN(interp2) AndAlso M11.StopStartSensitiveTotalCycleElectricalDemand > 0, interp2, M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics)
Return interp2
End Get
End Property
Public ReadOnly Property StopStartCorrection As Single Implements IM12.StopStartCorrection
Get
Dim _stopStartCorrection As Single = BaseFuelConsumptionWithTrueAuxiliaryLoads / If(M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics > 0, M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics, 1)
Return If(_stopStartCorrection > 0, _stopStartCorrection, 1)
End Get
End Property
'Diagnostics Signal Exposure only. Does not materially affect class operation.
Public ReadOnly Property INTRP1 As Single Implements IM12.INTRP1
Get
Return _INTERP1
End Get
End Property
Public ReadOnly Property INTRP2 As Single Implements IM12.INTRP2
Get
Return _INTERP2
End Get
End Property
Public ReadOnly Property P1X As Single Implements IM12.P1X
Get
Return _P1X
End Get
End Property
Public ReadOnly Property P1Y As Single Implements IM12.P1Y
Get
Return _p1Y
End Get
End Property
Public ReadOnly Property P2X As Single Implements IM12.P2X
Get
Return _P2X
End Get
End Property
Public ReadOnly Property P2Y As Single Implements IM12.P2Y
Get
Return _P2Y
End Get
End Property
Public ReadOnly Property P3X As Single Implements IM12.P3X
Get
Return _P3X
End Get
End Property
Public ReadOnly Property P3Y As Single Implements IM12.P3Y
Get
Return _P3Y
End Get
End Property
Public ReadOnly Property XTAIN As Single Implements IM12.XTAIN
Get
Return _XT
End Get
End Property
End Class
_P1X = 0.SI(Of Joule)()
_P1Y = M11.TotalCycleFuelConsumptionZeroElectricalLoad
_P2X = M11.SmartElectricalTotalCycleEletricalEnergyGenerated
_P2Y = M11.TotalCycleFuelConsumptionSmartElectricalLoad
_P3X = M11.StopStartSensitiveTotalCycleElectricalDemand
_P3Y = M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics
_XT = M11.TotalCycleElectricalDemand
End Sub
'Interpolation
Private Function Sum1() As Gram
Dim P1 As Point = New Point With {.X = 0.SI(Of Joule)(), .Y = M11.TotalCycleFuelConsumptionZeroElectricalLoad}
Dim P2 As Point = New Point _
With {.X = M11.SmartElectricalTotalCycleEletricalEnergyGenerated * Signals.StoredEnergyEfficiency,
.Y = M11.TotalCycleFuelConsumptionSmartElectricalLoad}
Dim IP5x As Joule = M11.TotalCycleElectricalDemand
Dim IP5y As Gram
Dim TanTeta As SI = (P2.Y - P1.Y) / (P2.X - P1.X)
IP5y = P1.Y + (TanTeta * IP5x)
_INTERP1 = IP5y
setPoints()
Return If(Double.IsNaN(IP5y.Value()), 0.SI(Of Gram), IP5y)
End Function
Private Function Sum2() As Gram
Dim P1 As Point = New Point With {.X = 0.SI(Of Joule)(), .Y = M11.TotalCycleFuelConsumptionZeroElectricalLoad}
Dim P3 As Point = New Point _
With {.X = M11.StopStartSensitiveTotalCycleElectricalDemand,
.Y = M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics}
Dim IP5x As Joule = M11.TotalCycleElectricalDemand
Dim IP5y As Gram
Dim TanTeta As Double = (P3.Y - P1.Y).Value() / (P3.X - P1.X).Value()
IP5y = P1.Y + (TanTeta * IP5x.Value()).SI(Of Gram)()
_INTERP2 = IP5y
Return If(Double.IsNaN(IP5y.Value()), 0.SI(Of Gram), IP5y)
End Function
'Constructor
Public Sub New(m10 As IM10, m11 As IM11, signals As ISignals)
Me.M10 = m10
Me.M11 = m11
Me.Signals = signals
End Sub
'Main Class Outputs
Public ReadOnly Property FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand As Gram _
Implements IM12.FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand
Get
'SCHM 3_2
Dim interp1 As Gram = Sum1()
interp1 =
If _
(Not Double.IsNaN(interp1.Value()) AndAlso M11.StopStartSensitiveTotalCycleElectricalDemand > 0, interp1,
M11.TotalCycleFuelConsumptionZeroElectricalLoad)
Return interp1
End Get
End Property
Public ReadOnly Property BaseFuelConsumptionWithTrueAuxiliaryLoads As Gram _
Implements IM12.BaseFuelConsumptionWithTrueAuxiliaryLoads
Get
'SCM 3_02
Dim interp2 As Gram = Sum2()
interp2 =
If _
(Not Double.IsNaN(interp2.Value()) AndAlso M11.StopStartSensitiveTotalCycleElectricalDemand > 0, interp2,
M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics)
Return interp2
End Get
End Property
Public ReadOnly Property StopStartCorrection As Double Implements IM12.StopStartCorrection
Get
Dim _stopStartCorrection As Scalar = BaseFuelConsumptionWithTrueAuxiliaryLoads() /
If _
(M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics > 0,
M10.AverageLoadsFuelConsumptionInterpolatedForPneumatics, 1.SI(Of Gram))
Return If(_stopStartCorrection > 0, _stopStartCorrection.Value(), 1)
End Get
End Property
'Diagnostics Signal Exposure only. Does not materially affect class operation.
Public ReadOnly Property INTRP1 As Gram Implements IM12.INTRP1
Get
Return _INTERP1
End Get
End Property
Public ReadOnly Property INTRP2 As Gram Implements IM12.INTRP2
Get
Return _INTERP2
End Get
End Property
Public ReadOnly Property P1X As Joule Implements IM12.P1X
Get
Return _P1X
End Get
End Property
Public ReadOnly Property P1Y As Gram Implements IM12.P1Y
Get
Return _P1Y
End Get
End Property
Public ReadOnly Property P2X As Joule Implements IM12.P2X
Get
Return _P2X
End Get
End Property
Public ReadOnly Property P2Y As Gram Implements IM12.P2Y
Get
Return _P2Y
End Get
End Property
Public ReadOnly Property P3X As Joule Implements IM12.P3X
Get
Return _P3X
End Get
End Property
Public ReadOnly Property P3Y As Gram Implements IM12.P3Y
Get
Return _P3Y
End Get
End Property
Public ReadOnly Property XTAIN As Joule Implements IM12.XTAIN
Get
Return _XT
End Get
End Property
End Class
End Namespace End Namespace
...@@ -9,111 +9,118 @@ ...@@ -9,111 +9,118 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Class M13
Public Class M13 Implements IM13
Implements IM13
Private m10 As IM10
Private m10 As IM10 Private m11 As IM11
Private m11 As IM11 Private m12 As IM12
Private m12 As IM12 Private signals As ISignals
Private signals As ISignals
'Internal Staging Calculations
'Internal Staging Calculations
Private ReadOnly Property Sum1 As Gram
Private ReadOnly Property Sum1 As Single Get
Get Return m11.TotalCycleFuelConsuptionAverageLoads * m12.StopStartCorrection
Return m11.TotalCycleFuelConsuptionAverageLoads * m12.StopStartCorrection End Get
End Get End Property
End Property
Private ReadOnly Property Sum2 As Single Private ReadOnly Property Sum2 As Gram
Get Get
Return m10.AverageLoadsFuelConsumptionInterpolatedForPneumatics * m12.StopStartCorrection Return m10.AverageLoadsFuelConsumptionInterpolatedForPneumatics * m12.StopStartCorrection
End Get End Get
End Property End Property
Private ReadOnly Property Sum3 As Single
Get Private ReadOnly Property Sum3 As Gram
Return m10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand * m12.StopStartCorrection Get
End Get Return m10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand * m12.StopStartCorrection
End Property End Get
Private ReadOnly Property Sum4 As Single End Property
Get
Return -m12.FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand + Sum1 Private ReadOnly Property Sum4 As Gram
End Get Get
End Property Return -m12.FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand() + Sum1
Private ReadOnly Property Sum5 As Single End Get
Get End Property
Return Sum2 - Sum3
End Get Private ReadOnly Property Sum5 As Gram
End Property Get
Private ReadOnly Property Sum6 As Single Return Sum2 - Sum3
Get End Get
Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads - Sum4 End Property
End Get
End Property Private ReadOnly Property Sum6 As Gram
Private ReadOnly Property Sum7 As Single Get
Get Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads() - Sum4
Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads - Sum5 End Get
End Get End Property
End Property
Private ReadOnly Property Sum8 As Single Private ReadOnly Property Sum7 As Gram
Get Get
Return -Sum4 + Sum7 Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads() - Sum5
End Get End Get
End Property End Property
Private ReadOnly Property Sum9 As Single
Get Private ReadOnly Property Sum8 As Gram
Return SW4 * SW3 Get
End Get Return -Sum4 + Sum7
End Property End Get
End Property
'Internal Staging Switches
Private ReadOnly Property SW1 As Single Private ReadOnly Property Sum9 As Gram
Get Get
Return If(signals.SmartPneumatics, Sum8, Sum6) Return SW4 * SW3
End Get End Get
End Property End Property
Private ReadOnly Property SW2 As Single
Get 'Internal Staging Switches
Return If(signals.SmartPneumatics, Sum3, m12.BaseFuelConsumptionWithTrueAuxiliaryLoads) Private ReadOnly Property SW1 As Gram
End Get Get
End Property Return If(signals.SmartPneumatics, Sum8, Sum6)
Private ReadOnly Property SW3 As Single End Get
Get End Property
Return If(signals.SmartElectrics, SW1, SW2)
End Get Private ReadOnly Property SW2 As Gram
End Property Get
Private ReadOnly Property SW4 As Single Return If(signals.SmartPneumatics, Sum3, m12.BaseFuelConsumptionWithTrueAuxiliaryLoads())
Get End Get
Return If(signals.DeclarationMode, signals.WHTC, 1) End Property
End Get
End Property Private ReadOnly Property SW3 As Gram
Get
'Constructor Return If(signals.SmartElectrics, SW1, SW2)
Public Sub New(m10 As IM10, m11 As IM11, m12 As IM12, signals As ISignals) End Get
End Property
Me.m10 = m10
Me.m11 = m11 Private ReadOnly Property SW4 As Double
Me.m12 = m12 Get
Me.signals = signals Return If(signals.DeclarationMode, signals.WHTC, 1)
End Get
End Sub End Property
'Public class outputs 'Constructor
Public ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Single Implements IM13.WHTCTotalCycleFuelConsumptionGrams Public Sub New(m10 As IM10, m11 As IM11, m12 As IM12, signals As ISignals)
Get
Return Sum9 Me.m10 = m10
End Get Me.m11 = m11
End Property Me.m12 = m12
Me.signals = signals
End Sub
End Class
'Public class outputs
Public ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Gram _
Implements IM13.WHTCTotalCycleFuelConsumptionGrams
Get
Return Sum9
End Get
End Property
End Class
End Namespace End Namespace
Imports VectoAuxiliaries.Electrics Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Class M14
Public Class M14 Implements IM14
Implements IM14
Private m13 As IM13
Private signals As ISignals
Private m13 As IM13 Private constants As IHVACConstants
Private signals As ISignals Private ssm As ISSMTOOL
Private constants As IHVACConstants
Private ssm As ISSMTOOL
Public Sub New(m13 As IM13, hvacSSM As ISSMTOOL, constants As IHVACConstants, signals As ISignals)
Public Sub New(m13 As IM13, hvacSSM As ISSMTOOL, constants As IHVACConstants, signals As ISignals) If m13 Is Nothing Then Throw New ArgumentException("M14, No M13 Supplied in arguments")
If hvacSSM Is Nothing Then Throw New ArgumentException("M14, No SSMTOOL constants Supplied in arguments")
If m13 Is Nothing Then Throw New ArgumentException("M14, No M13 Supplied in arguments") If constants Is Nothing Then Throw New ArgumentException("M14, No signals Supplied in arguments")
If hvacSSM Is Nothing Then Throw New ArgumentException("M14, No SSMTOOL constants Supplied in arguments") If signals Is Nothing Then Throw New ArgumentException("M14, No signals constants Supplied in arguments")
If constants Is Nothing Then Throw New ArgumentException("M14, No signals Supplied in arguments")
If signals Is Nothing Then Throw New ArgumentException("M14, No signals constants Supplied in arguments")
Me.m13 = m13
Me.signals = signals
Me.m13 = m13 Me.constants = constants
Me.signals = signals Me.ssm = hvacSSM
Me.constants = constants End Sub
Me.ssm = hvacSSM
'Staging Calculations
End Sub Private ReadOnly Property S1 As Joule
Get
'Staging Calculations Return (m13.WHTCTotalCycleFuelConsumptionGrams.Value * constants.DieselGCVJperGram).SI(Of Joule)()
Private ReadOnly Property S1 As Single End Get
Get End Property
Return m13.WHTCTotalCycleFuelConsumptionGrams * constants.DieselGCVJperGram
End Get Private ReadOnly Property S2 As Joule
End Property Get
Private ReadOnly Property S2 As Single Return ssm.GenInputs.AH_FuelEnergyToHeatToCoolant * S1
Get End Get
Return ssm.GenInputs.AH_FuelEnergyToHeatToCoolant * S1 End Property
End Get
End Property Private ReadOnly Property S3 As Joule
Private ReadOnly Property S3 As Single Get
Get Return S2 * ssm.GenInputs.AH_CoolantHeatTransferredToAirCabinHeater
Return S2 * ssm.GenInputs.AH_CoolantHeatTransferredToAirCabinHeater End Get
End Get End Property
End Property
Private ReadOnly Property S4 As Single Private ReadOnly Property S4 As Double 'kW
Get Get
Return (S3 / signals.CurrentCycleTimeInSeconds) / 1000 Return (S3 / signals.CurrentCycleTimeInSeconds.SI(Of Second)()).Value() / 1000.0
End Get End Get
End Property End Property
Private ReadOnly Property S5 As Single
Get Private ReadOnly Property S5 As Double ' hour
Return signals.CurrentCycleTimeInSeconds / 3600 Get
End Get Return signals.CurrentCycleTimeInSeconds / 3600
End Property End Get
Private ReadOnly Property S6 As Single End Property
Get
Return S5 * ssm.FuelPerHBaseAsjusted(S4) * (constants.FuelDensity * 1000) Private ReadOnly Property S6 As Gram
End Get Get
End Property Return (S5 * ssm.FuelPerHBaseAsjusted(S4) * (constants.FuelDensity * 1000)).SI(Of Gram)()
Private ReadOnly Property S7 As Single End Get
Get End Property
Return m13.WHTCTotalCycleFuelConsumptionGrams + s6
End Get Private ReadOnly Property S7 As Gram
End Property Get
Return m13.WHTCTotalCycleFuelConsumptionGrams + S6
Private ReadOnly Property S8 As Single End Get
Get End Property
Return S7 / (constants.FuelDensity * 1000)
End Get Private ReadOnly Property S8 As Liter
End Property Get
Public ReadOnly Property TotalCycleFCGrams As Single Implements IM14.TotalCycleFCGrams Return (S7.Value() / (constants.FuelDensity * 1000)).SI(Of Liter)()
Get End Get
Return S7 End Property
End Get
End Property Public ReadOnly Property TotalCycleFCGrams As Gram Implements IM14.TotalCycleFCGrams
Get
Public ReadOnly Property TotalCycleFCLitres As Single Implements IM14.TotalCycleFCLitres Return S7
Get End Get
Return S8 End Property
End Get
End Property Public ReadOnly Property TotalCycleFCLitres As Liter Implements IM14.TotalCycleFCLitres
Get
Return S8
End Get
End Class End Property
End Class
End Namespace End Namespace
...@@ -9,264 +9,284 @@ ...@@ -9,264 +9,284 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Class M6
Public Class M6 Implements IM6
Implements IM6
#Region "Private Field - Constructor requirements" #Region "Private Field - Constructor requirements"
Private _m1 As IM1_AverageHVACLoadDemand
Private _m2 As IM2_AverageElectricalLoadDemand
Private _m3 As IM3_AveragePneumaticLoadDemand
Private _m4 As IM4_AirCompressor
Private _m5 As IM5_SmartAlternatorSetGeneration
Private _signals As ISignals
#End Region
'OUT1 Private _m1 As IM1_AverageHVACLoadDemand
Public ReadOnly Property OverrunFlag As Integer Implements IM6.OverrunFlag Private _m2 As IM2_AverageElectricalLoadDemand
Private _m3 As IM3_AveragePneumaticLoadDemand
Get Private _m4 As IM4_AirCompressor
Return VC0 Private _m5 As IM5_SmartAlternatorSetGeneration
End Get Private _signals As ISignals
End Property
'OUT2
Public ReadOnly Property SmartElecAndPneumaticsCompressorFlag As Integer Implements IM6.SmartElecAndPneumaticsCompressorFlag
Get
Return VC2
End Get
End Property
'OUT3
Public ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAltPowerGenAtCrank
Get
'Multiply * 1 @ Engineering Request
Return Max1 * -1
End Get
End Property
'OUT4
Public ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Single Implements IM6.SmartElecAndPneumaticAirCompPowerGenAtCrank
Get
Return Sum16
End Get
End Property
'OUT5
Public ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Single Implements IM6.SmartElecOnlyAltPowerGenAtCrank
Get
'Multiply * -1 @ Engineering request.
Return Max2 * -1
End Get
End Property
'OUT6
Public ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Single Implements IM6.AveragePowerDemandAtCrankFromPneumatics
Get
Return _m3.GetAveragePowerDemandAtCrankFromPneumatics
End Get
End Property
'OUT7
Public ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Single Implements IM6.SmartPneumaticOnlyAirCompPowerGenAtCrank
Get
Return Sum19
End Get
End Property
'OUT8
Public ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Single Implements IM6.AvgPowerDemandAtCrankFromElectricsIncHVAC
Get
Return Sum1
End Get
End Property
'OUT9
Public ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Integer Implements IM6.SmartPneumaticsOnlyCompressorFlag
Get
Return VC4
End Get
End Property
'Internal Staging Calculations
'switches
Private ReadOnly Property SW1 As Single
Get
Return If(_signals.SmartElectrics, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts, Sum1)
End Get
End Property
'Max of Sum5 vs Sum10
Public ReadOnly Property Max1 As Single
Get
Return If(Sum5 > Sum10, Sum5, Sum10)
End Get
End Property
'Max of Sum10 vs Sum7
Public ReadOnly Property Max2 As Single
Get
Return If(Sum7 > Sum10, Sum7, Sum10)
End Get
End Property
'Value Choices
Public ReadOnly Property VC0 As Single
Get
Return If(Sum3 <= 0, 1, 0)
End Get
End Property
Public ReadOnly Property VC1 As Single
Get
Return If(Sum12 > 0, 1, 0)
End Get
End Property
Public ReadOnly Property VC2 As Single
Get
Return If(Sum12 < 0 OrElse Sum12 = 0, 1, 0)
End Get
End Property
Public ReadOnly Property VC3 As Single
Get
Return If(Sum13 > 0, 1, 0)
End Get
End Property
Public ReadOnly Property VC4 As Single
Get
Return If(Sum13 < 0 OrElse Sum13 = 0, 1, 0)
End Get
End Property
'Sums
Public ReadOnly Property Sum1 As Single
Get
Return _m1.AveragePowerDemandAtCrankFromHVACElectricsWatts() + _m2.GetAveragePowerAtCrankFromElectrics()
End Get
End Property
Public ReadOnly Property Sum2 As Single
Get
Dim returnValue As Single = _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW1 + _m3.GetAveragePowerDemandAtCrankFromPneumatics
Return returnValue
End Get
End Property
Public ReadOnly Property Sum3 As Single
Get
Return (_signals.EngineMotoringPower * 1000) + _
(_signals.Internal_Engine_Power * 1000) + _
Sum2
End Get
End Property
Public ReadOnly Property Sum4 As Single
Get
Return Sum3 - SW1 - _m3.GetAveragePowerDemandAtCrankFromPneumatics + _m4.GetPowerCompressorOff
End Get
End Property
Public ReadOnly Property Sum5 As Single
Get
Return OverrunFlag * Sum4
End Get
End Property
Public ReadOnly Property Sum6 As Single
Get
Return Sum4 - _m4.GetPowerCompressorOff + _m3.GetAveragePowerDemandAtCrankFromPneumatics
End Get
End Property
Public ReadOnly Property Sum7 As Single
Get
Return VC0 * Sum6
End Get
End Property
Public ReadOnly Property Sum8 As Single
Get
Return Sum4 + SW1
End Get
End Property
Public ReadOnly Property Sum9 As Single
Get
Return VC0 * Sum8
End Get
End Property
Public ReadOnly Property Sum10 As Single
Get
Return -1 * _m5.AlternatorsGenerationPowerAtCrankOverrunWatts
End Get
End Property
Public ReadOnly Property Sum11 As Single
Get
Return Sum5 - Max1
End Get
End Property
Public ReadOnly Property Sum12 As Single
Get
Return _m4.GetPowerDifference + Sum11
End Get
End Property
Public ReadOnly Property Sum13 As Single
Get
Return Sum9 + _m4.GetPowerDifference
End Get
End Property
Public ReadOnly Property Sum14 As Single
Get
Return VC1 * _m4.GetPowerCompressorOff
End Get
End Property
Public ReadOnly Property Sum15 As Single
Get
Return VC2 * (_m4.GetPowerCompressorOn * _signals.PneumaticOverrunUtilisation)
End Get
End Property
Public ReadOnly Property Sum16 As Single
Get
Return Sum14 + Sum15
End Get
End Property
Public ReadOnly Property Sum17 As Single
Get
Return _m4.GetPowerCompressorOff * VC3
End Get
End Property
Public ReadOnly Property Sum18 As Single
Get
Return VC4 * (_m4.GetPowerCompressorOn * _signals.PneumaticOverrunUtilisation)
End Get
End Property
Public ReadOnly Property Sum19 As Single
Get
Return Sum17 + Sum18
End Get
End Property
'Constructor
Public Sub New(m1 As IM1_AverageHVACLoadDemand,
m2 As IM2_AverageElectricalLoadDemand,
m3 As IM3_AveragePneumaticLoadDemand,
m4 As IM4_AirCompressor,
m5 As IM5_SmartAlternatorSetGeneration,
signals As ISignals)
_m1 = m1
_m2 = m2
_m3 = m3
_m4 = m4
_m5 = m5
_signals = signals
End Sub
End Class
End Namespace #End Region
'OUT1
Public ReadOnly Property OverrunFlag As Boolean Implements IM6.OverrunFlag
Get
Return VC0
End Get
End Property
'OUT2
Public ReadOnly Property SmartElecAndPneumaticsCompressorFlag As Boolean _
Implements IM6.SmartElecAndPneumaticsCompressorFlag
Get
Return VC2
End Get
End Property
'OUT3
Public ReadOnly Property SmartElecAndPneumaticAltPowerGenAtCrank As Watt _
Implements IM6.SmartElecAndPneumaticAltPowerGenAtCrank
Get
'Multiply * 1 @ Engineering Request
Return Max1 * -1
End Get
End Property
'OUT4
Public ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Watt _
Implements IM6.SmartElecAndPneumaticAirCompPowerGenAtCrank
Get
Return Sum16
End Get
End Property
'OUT5
Public ReadOnly Property SmartElecOnlyAltPowerGenAtCrank As Watt Implements IM6.SmartElecOnlyAltPowerGenAtCrank
Get
'Multiply * -1 @ Engineering request.
Return Max2 * -1
End Get
End Property
'OUT6
Public ReadOnly Property AveragePowerDemandAtCrankFromPneumatics As Watt _
Implements IM6.AveragePowerDemandAtCrankFromPneumatics
Get
Return _m3.GetAveragePowerDemandAtCrankFromPneumatics
End Get
End Property
'OUT7
Public ReadOnly Property SmartPneumaticOnlyAirCompPowerGenAtCrank As Watt _
Implements IM6.SmartPneumaticOnlyAirCompPowerGenAtCrank
Get
Return Sum19
End Get
End Property
'OUT8
Public ReadOnly Property AvgPowerDemandAtCrankFromElectricsIncHVAC As Watt _
Implements IM6.AvgPowerDemandAtCrankFromElectricsIncHVAC
Get
Return Sum1
End Get
End Property
'OUT9
Public ReadOnly Property SmartPneumaticsOnlyCompressorFlag As Boolean Implements IM6.SmartPneumaticsOnlyCompressorFlag
Get
Return VC4
End Get
End Property
'Internal Staging Calculations
'switches
Private ReadOnly Property SW1 As Watt
Get
Return If(_signals.SmartElectrics, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts, Sum1)
End Get
End Property
'Max of Sum5 vs Sum10
Public ReadOnly Property Max1 As Watt
Get
Return If(Sum5 > Sum10, Sum5, Sum10)
End Get
End Property
'Max of Sum10 vs Sum7
Public ReadOnly Property Max2 As Watt
Get
Return If(Sum7 > Sum10, Sum7, Sum10)
End Get
End Property
'Value Choices
Public ReadOnly Property VC0 As Boolean
Get
Return Sum3 <= 0
End Get
End Property
Public ReadOnly Property VC1 As Boolean
Get
Return Sum12 > 0
End Get
End Property
Public ReadOnly Property VC2 As Boolean
Get
Return Sum12 < 0 OrElse Sum12.IsEqual(0)
End Get
End Property
Public ReadOnly Property VC3 As Boolean
Get
Return Sum13 > 0
End Get
End Property
Public ReadOnly Property VC4 As Boolean
Get
Return Sum13 < 0 OrElse Sum13.IsEqual(0)
End Get
End Property
'Sums
Public ReadOnly Property Sum1 As Watt
Get
Return _m1.AveragePowerDemandAtCrankFromHVACElectricsWatts() + _m2.GetAveragePowerAtCrankFromElectrics()
End Get
End Property
Public ReadOnly Property Sum2 As Watt
Get
Dim returnValue As Watt = _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW1 +
_m3.GetAveragePowerDemandAtCrankFromPneumatics
Return returnValue
End Get
End Property
Public ReadOnly Property Sum3 As Watt
Get
Return (_signals.EngineMotoringPower * 1000).SI(Of Watt)() +
(_signals.Internal_Engine_Power * 1000).SI(Of Watt)() +
Sum2
End Get
End Property
Public ReadOnly Property Sum4 As Watt
Get
Return Sum3 - SW1 - _m3.GetAveragePowerDemandAtCrankFromPneumatics + _m4.GetPowerCompressorOff
End Get
End Property
Public ReadOnly Property Sum5 As Watt
Get
Return If(OverrunFlag, Sum4, 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum6 As Watt
Get
Return Sum4 - _m4.GetPowerCompressorOff + _m3.GetAveragePowerDemandAtCrankFromPneumatics
End Get
End Property
Public ReadOnly Property Sum7 As Watt
Get
Return If(VC0, Sum6, 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum8 As Watt
Get
Return Sum4 + SW1
End Get
End Property
Public ReadOnly Property Sum9 As Watt
Get
Return If(VC0, Sum8, 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum10 As Watt
Get
Return _m5.AlternatorsGenerationPowerAtCrankOverrunWatts * -1.0
End Get
End Property
Public ReadOnly Property Sum11 As Watt
Get
Return Sum5 - Max1
End Get
End Property
Public ReadOnly Property Sum12 As Watt
Get
Return _m4.GetPowerDifference + Sum11
End Get
End Property
Public ReadOnly Property Sum13 As Watt
Get
Return Sum9 + _m4.GetPowerDifference
End Get
End Property
Public ReadOnly Property Sum14 As Watt
Get
Return If(VC1, _m4.GetPowerCompressorOff, 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum15 As Watt
Get
Return If(VC2, (_m4.GetPowerCompressorOn * _signals.PneumaticOverrunUtilisation), 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum16 As Watt
Get
Return Sum14 + Sum15
End Get
End Property
Public ReadOnly Property Sum17 As Watt
Get
Return If(VC3, _m4.GetPowerCompressorOff, 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum18 As Watt
Get
Return If(VC4, (_m4.GetPowerCompressorOn * _signals.PneumaticOverrunUtilisation), 0.SI(Of Watt))
End Get
End Property
Public ReadOnly Property Sum19 As Watt
Get
Return Sum17 + Sum18
End Get
End Property
'Constructor
Public Sub New(m1 As IM1_AverageHVACLoadDemand,
m2 As IM2_AverageElectricalLoadDemand,
m3 As IM3_AveragePneumaticLoadDemand,
m4 As IM4_AirCompressor,
m5 As IM5_SmartAlternatorSetGeneration,
signals As ISignals)
_m1 = m1
_m2 = m2
_m3 = m3
_m4 = m4
_m5 = m5
_signals = signals
End Sub
End Class
End Namespace
...@@ -9,95 +9,101 @@ ...@@ -9,95 +9,101 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules Namespace DownstreamModules
Public Class M7
Public Class M7 Implements IM7
implements IM7
Private _m5 As IM5_SmartAlternatorSetGeneration
Private _m5 As IM5_SmartAlternatorSetGeneration Private _m6 As IM6
Private _m6 As IM6 Private _signals As ISignals
Private _signals As ISignals
'Boolean Conditions
'Boolean Conditions Private ReadOnly Property C1 As Boolean
Private Readonly Property C1 As Boolean Get
Get Return _m6.OverrunFlag AndAlso _signals.ClutchEngaged AndAlso _signals.InNeutral = False
Return If(_m6.OverrunFlag=1,True,False) Andalso _signals.ClutchEngaged Andalso _signals.InNeutral=false End Get
End Get End Property
End Property
'Internal Switched Outputs
'Internal Switched Outputs Private ReadOnly Property SW1 As Watt
Private Readonly Property SW1 As Single Get
Get
Dim idle As Boolean = _signals.EngineSpeed <= _signals.EngineIdleSpeed AndAlso
Dim idle As Boolean = _signals.EngineSpeed <=_signals.EngineIdleSpeed ANDAlso ( NOT _signals.ClutchEngaged OrElse _signals.InNeutral) (Not _signals.ClutchEngaged OrElse _signals.InNeutral)
Return If ( idle, _m5.AlternatorsGenerationPowerAtCrankIdleWatts, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts) Return _
If(idle, _m5.AlternatorsGenerationPowerAtCrankIdleWatts, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts)
End Get End Get
End Property End Property
Private Readonly Property SW2 As Single
Get Private ReadOnly Property SW2 As Watt
Return If( C1, _m6.SmartElecAndPneumaticAltPowerGenAtCrank, SW1) Get
End Get Return If(C1, _m6.SmartElecAndPneumaticAltPowerGenAtCrank, SW1)
End Property End Get
Private Readonly Property SW3 As Single End Property
Get
Return If( C1,_m6.SmartElecAndPneumaticAirCompPowerGenAtCrank,_m6.AveragePowerDemandAtCrankFromPneumatics) Private ReadOnly Property SW3 As Watt
End Get Get
End Property Return If(C1, _m6.SmartElecAndPneumaticAirCompPowerGenAtCrank, _m6.AveragePowerDemandAtCrankFromPneumatics)
Private Readonly Property SW4 As Single End Get
Get End Property
Return If( C1,_m6.SmartElecOnlyAltPowerGenAtCrank,SW1)
End Get Private ReadOnly Property SW4 As Watt
End Property Get
Private Readonly Property SW5 As Single Return If(C1, _m6.SmartElecOnlyAltPowerGenAtCrank, SW1)
Get End Get
Return If( C1, _m6.SmartPneumaticOnlyAirCompPowerGenAtCrank,_m6.AveragePowerDemandAtCrankFromPneumatics) End Property
End Get
End Property Private ReadOnly Property SW5 As Watt
Get
'Public readonly properties ( Outputs ) Return If(C1, _m6.SmartPneumaticOnlyAirCompPowerGenAtCrank, _m6.AveragePowerDemandAtCrankFromPneumatics)
Public ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Single Implements IM7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank End Get
Get End Property
Return SW2
End Get 'Public readonly properties ( Outputs )
End Property Public ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Watt _
Public ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Single Implements IM7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank Implements IM7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank
Get Get
Return SW3 Return SW2
End Get End Get
End Property End Property
Public ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Single Implements IM7.SmartElectricalOnlyAuxAltPowerGenAtCrank
Get Public ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Watt _
Return SW4 Implements IM7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
End Get Get
End Property Return SW3
Public ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Single Implements IM7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank End Get
Get End Property
Return SW5
End Get Public ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Watt _
End Property Implements IM7.SmartElectricalOnlyAuxAltPowerGenAtCrank
Get
'Constructor Return SW4
Public sub new ( m5 as IM5_SmartAlternatorSetGeneration, _ End Get
m6 As IM6, _ End Property
signals As ISignals)
Public ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Watt _
_m5 = m5 Implements IM7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank
_m6 = m6 Get
_signals = signals Return SW5
End Get
End Sub End Property
'Constructor
End Class Public Sub New(m5 As IM5_SmartAlternatorSetGeneration,
m6 As IM6,
signals As ISignals)
_m5 = m5
_m6 = m6
_signals = signals
End Sub
End Class
End Namespace End Namespace
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
...@@ -30,100 +31,100 @@ Namespace DownstreamModules ...@@ -30,100 +31,100 @@ Namespace DownstreamModules
#Region "Internal Sums and Switches" #Region "Internal Sums and Switches"
'Internal Staged Sums and Switches 'Internal Staged Sums and Switches
Private ReadOnly Property Sum1 As Single Private ReadOnly Property Sum1 As Watt
Get Get
Return _ Return _
_m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank() + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank()
End Get End Get
End Property End Property
Private ReadOnly Property Sum2 As Single Private ReadOnly Property Sum2 As Watt
Get Get
Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank + _m6.AveragePowerDemandAtCrankFromPneumatics Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank() + _m6.AveragePowerDemandAtCrankFromPneumatics
End Get End Get
End Property End Property
Private ReadOnly Property Sum3 As Single Private ReadOnly Property Sum3 As Watt
Get Get
Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC
End Get End Get
End Property End Property
Private ReadOnly Property Sum4 As Single Private ReadOnly Property Sum4 As Watt
Get Get
Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics
End Get End Get
End Property End Property
Private ReadOnly Property Sum5 As Single Private ReadOnly Property Sum5 As Watt
Get Get
Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5 Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5
End Get End Get
End Property End Property
Private ReadOnly Property Sum6 As Single Private ReadOnly Property Sum6 As Watt
Get Get
Return Sum5 * SW6 Return If(SW6, Sum5, SIBase(Of Watt).Create(0))
End Get End Get
End Property End Property
Private ReadOnly Property SW1 As Single Private ReadOnly Property SW1 As Watt
Get Get
Return If(_signals.SmartPneumatics, Sum1, Sum2) Return If(_signals.SmartPneumatics, Sum1, Sum2)
End Get End Get
End Property End Property
Private ReadOnly Property SW2 As Single Private ReadOnly Property SW2 As Watt
Get Get
Return If(_signals.SmartPneumatics, Sum3, Sum4) Return If(_signals.SmartPneumatics, Sum3, Sum4)
End Get End Get
End Property End Property
Private ReadOnly Property SW3 As Single Private ReadOnly Property SW3 As Watt
Get Get
Return _ Return _
If _ If _
(_signals.SmartPneumatics, _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank, (_signals.SmartPneumatics, _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank(),
_m7.SmartElectricalOnlyAuxAltPowerGenAtCrank) _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank())
End Get End Get
End Property End Property
Private ReadOnly Property SW4 As Integer Private ReadOnly Property SW4 As Boolean
Get Get
Return If(_signals.SmartElectrics, _m6.SmartElecAndPneumaticsCompressorFlag, _m6.SmartPneumaticsOnlyCompressorFlag) Return If(_signals.SmartElectrics, _m6.SmartElecAndPneumaticsCompressorFlag, _m6.SmartPneumaticsOnlyCompressorFlag)
End Get End Get
End Property End Property
Private ReadOnly Property SW5 As Single Private ReadOnly Property SW5 As Watt
Get Get
Return If(_signals.SmartElectrics, SW1, SW2) Return If(_signals.SmartElectrics, SW1, SW2)
End Get End Get
End Property End Property
Private ReadOnly Property SW6 As Single Private ReadOnly Property SW6 As Boolean
Get Get
Return If(_signals.EngineStopped, 0, 1) Return Not _signals.EngineStopped
End Get End Get
End Property End Property
#End Region #End Region
'OUT1 'OUT1
Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single _ Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Watt _
Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
Get Get
Return Sum6 Return Sum6
End Get End Get
End Property End Property
'OUT2 'OUT2
Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single _ Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Watt _
Implements IM8.SmartElectricalAlternatorPowerGenAtCrank Implements IM8.SmartElectricalAlternatorPowerGenAtCrank
Get Get
Return SW3 Return SW3
End Get End Get
End Property End Property
'OUT3 'OUT3
Public ReadOnly Property CompressorFlag As Integer Implements IM8.CompressorFlag Public ReadOnly Property CompressorFlag As Boolean Implements IM8.CompressorFlag
Get Get
Return SW4 Return SW4
End Get End Get
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
' '
' See the LICENSE.txt for the specific language governing permissions and limitations. ' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac Imports VectoAuxiliaries.Hvac
...@@ -21,13 +22,13 @@ Namespace DownstreamModules ...@@ -21,13 +22,13 @@ Namespace DownstreamModules
#Region "Aggregates" #Region "Aggregates"
'AG1 'AG1
Private _LitresOfAirCompressorOnContinuallyAggregate As Double Private _LitresOfAirCompressorOnContinuallyAggregate As NormLiter
'AG2 'AG2
Private _LitresOfAirCompressorOnOnlyInOverrunAggregate As Double Private _LitresOfAirCompressorOnOnlyInOverrunAggregate As NormLiter
'AG3 'AG3
Private _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate As Double Private _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate As Gram
'AG4 'AG4
Private _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate As Double Private _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate As Gram
#End Region #End Region
...@@ -46,28 +47,28 @@ Namespace DownstreamModules ...@@ -46,28 +47,28 @@ Namespace DownstreamModules
#Region "Class Outputs" #Region "Class Outputs"
'OUT 1 'OUT 1
Public ReadOnly Property LitresOfAirCompressorOnContinually As Single _ Public ReadOnly Property LitresOfAirCompressorOnContinually As NormLiter _
Implements IM9.LitresOfAirCompressorOnContinually Implements IM9.LitresOfAirCompressorOnContinually
Get Get
Return _LitresOfAirCompressorOnContinuallyAggregate Return _LitresOfAirCompressorOnContinuallyAggregate
End Get End Get
End Property End Property
'OUT 2 'OUT 2
Public ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As Single _ Public ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As NormLiter _
Implements IM9.LitresOfAirCompressorOnOnlyInOverrun Implements IM9.LitresOfAirCompressorOnOnlyInOverrun
Get Get
Return _LitresOfAirCompressorOnOnlyInOverrunAggregate Return _LitresOfAirCompressorOnOnlyInOverrunAggregate
End Get End Get
End Property End Property
'OUT 3 'OUT 3
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Single _ Public ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Gram _
Implements IM9.TotalCycleFuelConsumptionCompressorOffContinuously Implements IM9.TotalCycleFuelConsumptionCompressorOffContinuously
Get Get
Return _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate Return _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate
End Get End Get
End Property End Property
'OUT 4 'OUT 4
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Single _ Public ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Gram _
Implements IM9.TotalCycleFuelConsumptionCompressorOnContinuously Implements IM9.TotalCycleFuelConsumptionCompressorOnContinuously
Get Get
Return _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate Return _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate
...@@ -77,136 +78,140 @@ Namespace DownstreamModules ...@@ -77,136 +78,140 @@ Namespace DownstreamModules
#End Region #End Region
'Staging Calculations 'Staging Calculations
Private Function S0(ByVal rpm As Single) As Single Private Function S0(ByVal rpm As Double) As PerSecond
If rpm < 1 Then rpm = 1 If rpm < 1 Then rpm = 1
Return rpm / RPM_TO_RADS_PER_SECOND Return rpm.RPMtoRad() ' / RPM_TO_RADS_PER_SECOND
End Function End Function
Private ReadOnly Property S1 As Single Private ReadOnly Property S1 As Watt
Get Get
Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC + M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC + M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
End Get End Get
End Property End Property
Private ReadOnly Property S2 As Single Private ReadOnly Property S2 As NewtonMeter
Get Get
If S0(Signals.EngineSpeed) = 0 Then _ If S0(Signals.EngineSpeed).IsEqual(0) Then _
Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.") Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
Return M4.GetPowerCompressorOn / S0(Signals.EngineSpeed) Return M4.GetPowerCompressorOn / S0(Signals.EngineSpeed)
End Get End Get
End Property End Property
Private ReadOnly Property S3 As Single Private ReadOnly Property S3 As NewtonMeter
Get Get
If S0(Signals.EngineSpeed) = 0 Then _ If S0(Signals.EngineSpeed).IsEqual(0) Then _
Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.") Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
Return M4.GetPowerCompressorOff / S0(Signals.EngineSpeed) Return M4.GetPowerCompressorOff / S0(Signals.EngineSpeed)
End Get End Get
End Property End Property
Private ReadOnly Property S4 As Single Private ReadOnly Property S4 As NewtonMeter
Get Get
If S0(Signals.EngineSpeed) = 0 Then _ If S0(Signals.EngineSpeed).IsEqual(0) Then _
Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.") Throw New DivideByZeroException("Engine speed is zero and cannot be used as a divisor.")
Return S1 / S0(Signals.EngineSpeed) Return S1 / S0(Signals.EngineSpeed)
End Get End Get
End Property End Property
Private ReadOnly Property S5 As Single Private ReadOnly Property S5 As NewtonMeter
Get Get
Return S2 + S14 Return S2 + S14
End Get End Get
End Property End Property
Private ReadOnly Property S6 As Single Private ReadOnly Property S6 As NewtonMeter
Get Get
Return S14 + S3 Return S14 + S3
End Get End Get
End Property End Property
Private ReadOnly Property S7 As Single Private ReadOnly Property S7 As NewtonMeter
Get Get
Return S4 + S5 Return S4 + S5
End Get End Get
End Property End Property
Private ReadOnly Property S8 As Single Private ReadOnly Property S8 As NewtonMeter
Get Get
Return S4 + S6 Return S4 + S6
End Get End Get
End Property End Property
Private ReadOnly Property S9 As Single Private ReadOnly Property S9 As NormLiterPerSecond
Get Get
Return M4.GetFlowRate * M6.OverrunFlag * M8.CompressorFlag Return If(M6.OverrunFlag AndAlso M8.CompressorFlag, M4.GetFlowRate, SIBase(Of NormLiterPerSecond).Create(0))
End Get End Get
End Property End Property
Private ReadOnly Property S10 As Single Private ReadOnly Property S10 As NormLiterPerSecond
Get Get
Return S13 * PSAC.OverrunUtilisationForCompressionFraction Return S13 * PSAC.OverrunUtilisationForCompressionFraction
End Get End Get
End Property End Property
Private ReadOnly Property S11 As Single Private ReadOnly Property S11 As GramPerSecond
Get Get
'SCHM 3_02 'SCHM 3_02
Dim int1 As Single = FMAP.GetFuelConsumption(S7, Signals.EngineSpeed) Dim int1 As GramPerSecond = FMAP.GetFuelConsumption(S7, Signals.EngineSpeed)
int1 = If(int1 > 0 AndAlso Not Single.IsNaN(int1), int1, 0) int1 = If(int1 > 0 AndAlso Not Double.IsNaN(int1.Value()), int1, 0.SI(Of GramPerSecond))
Return int1 / 3600 Return int1
End Get End Get
End Property End Property
Private ReadOnly Property S12 As Single Private ReadOnly Property S12 As GramPerSecond
Get Get
'SCHM 3_02 'SCHM 3_02
Dim int2 As Single = FMAP.GetFuelConsumption(S8, Signals.EngineSpeed) Dim int2 As GramPerSecond = FMAP.GetFuelConsumption(S8, Signals.EngineSpeed)
int2 = If(int2 > 0 AndAlso Not Single.IsNaN(int2), int2, 0) int2 = If(int2 > 0 AndAlso Not Double.IsNaN(int2.Value()), int2, 0.SI(Of GramPerSecond))
Return int2 / 3600 Return int2
End Get End Get
End Property End Property
Private ReadOnly Property S13 As Single Private ReadOnly Property S13 As NormLiterPerSecond
Get Get
Return If(Signals.ClutchEngaged AndAlso Not (Signals.InNeutral), S9, 0) Return If(Signals.ClutchEngaged AndAlso Not (Signals.InNeutral), S9, SIBase(Of NormLiterPerSecond).Create(0))
End Get End Get
End Property End Property
Private ReadOnly Property S14 As Single Private ReadOnly Property S14 As NewtonMeter
Get Get
Return Signals.EngineDrivelineTorque + ((Signals.PreExistingAuxPower * 1000) / S0(Signals.EngineSpeed)) Return _
SIBase(Of NewtonMeter).Create(Signals.EngineDrivelineTorque) +
(SIBase(Of Watt).Create(Signals.PreExistingAuxPower * 1000) / S0(Signals.EngineSpeed))
End Get End Get
End Property End Property
Private ReadOnly Property SW1 As Integer Private ReadOnly Property SW1 As Boolean
Get Get
Return If(Signals.EngineStopped, 0, 1) Return Not Signals.EngineStopped
End Get End Get
End Property End Property
'Utility Methods 'Utility Methods
Public Sub ClearAggregates() Implements IM9.ClearAggregates Public Sub ClearAggregates() Implements IM9.ClearAggregates
_LitresOfAirCompressorOnContinuallyAggregate = 0 _LitresOfAirCompressorOnContinuallyAggregate = SIBase(Of NormLiter).Create(0)
_LitresOfAirCompressorOnOnlyInOverrunAggregate = 0 _LitresOfAirCompressorOnOnlyInOverrunAggregate = SIBase(Of NormLiter).Create(0)
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate = 0 _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate = SIBase(Of Gram).Create(0)
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate = 0 _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate = SIBase(Of Gram).Create(0)
End Sub End Sub
Public Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) Implements IM9.CycleStep Public Sub CycleStep(stepTimeInSeconds As Second) Implements IM9.CycleStep
If Signals.EngineStopped Then Return If Signals.EngineStopped Then Return
_LitresOfAirCompressorOnContinuallyAggregate += stepTimeInSeconds * M4.GetFlowRate * SW1 If (SW1) Then
_LitresOfAirCompressorOnOnlyInOverrunAggregate += stepTimeInSeconds * S10 * SW1 _LitresOfAirCompressorOnContinuallyAggregate += M4.GetFlowRate * stepTimeInSeconds
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate += stepTimeInSeconds * S11 * SW1 _LitresOfAirCompressorOnOnlyInOverrunAggregate += S10 * stepTimeInSeconds
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate += stepTimeInSeconds * S12 * SW1 _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate += S11 * stepTimeInSeconds
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate += S12 * stepTimeInSeconds
End If
End Sub End Sub
'Constructor 'Constructor
...@@ -219,6 +224,8 @@ Namespace DownstreamModules ...@@ -219,6 +224,8 @@ Namespace DownstreamModules
Me.FMAP = fmap Me.FMAP = fmap
Me.PSAC = psac Me.PSAC = psac
Me.Signals = signals Me.Signals = signals
ClearAggregates()
End Sub End Sub
'Auxiliary Event 'Auxiliary Event
......
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