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
Imports VectoAuxiliaries.Hvac
Imports VectoAuxiliaries.DownstreamModules
Imports System.Windows.Forms
Imports TUGraz.VectoCommon.Utils
''' <summary>
......@@ -61,7 +62,7 @@ Public Class AdvancedAuxiliaries
'Event Handler top level bubble.
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
......@@ -137,44 +138,44 @@ Public Class AdvancedAuxiliaries
M0 = New M0_NonSmart_AlternatorsSetEfficiency(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
alternatorMap,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt),
Signals,
ssmTool)
M05 = New M0_5_SmartAlternatorSetEfficiency(M0,
auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
alternatorMap,
auxConfig.ElectricalUserInputsConfig.ResultCardIdle,
auxConfig.ElectricalUserInputsConfig.ResultCardTraction,
auxConfig.ElectricalUserInputsConfig.ResultCardOverrun, Signals)
Dim M05tmp As M0_5_SmartAlternatorSetEfficiency = New M0_5_SmartAlternatorSetEfficiency(M0,
auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
alternatorMap,
auxConfig.ElectricalUserInputsConfig.ResultCardIdle,
auxConfig.ElectricalUserInputsConfig.ResultCardTraction,
auxConfig.ElectricalUserInputsConfig.ResultCardOverrun, Signals)
M05 = M05tmp
M1 = New M1_AverageHVACLoadDemand(M0,
auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency,
auxConfig.PneumaticUserInputsConfig.CompressorGearEfficiency,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt),
Signals,
ssmTOOL)
ssmTool)
M2 = New M2_AverageElectricalLoadDemand(auxConfig.ElectricalUserInputsConfig.ElectricalConsumers,
M0,
auxConfig.ElectricalUserInputsConfig.AlternatorGearEfficiency,
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage, Signals)
auxConfig.ElectricalUserInputsConfig.PowerNetVoltage.SI(Of Volt), Signals)
M3 = New M3_AveragePneumaticLoadDemand(auxConfig.PneumaticUserInputsConfig,
auxConfig.PneumaticAuxillariesConfig,
actuationsMap,
compressorMap,
VectoInputs.VehicleWeightKG,
VectoInputs.VehicleWeightKG.SI(Of Kilogram),
VectoInputs.Cycle,
Signals)
M4 = New M4_AirCompressor(compressorMap, auxConfig.PneumaticUserInputsConfig.CompressorGearRatio,
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)
M6 = New M6(M1, M2, M3, M4, M5, Signals)
M7 = New M7(M5, M6, Signals)
......@@ -227,7 +228,7 @@ Public Class AdvancedAuxiliaries
Return True
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
Try
......@@ -235,7 +236,7 @@ Public Class AdvancedAuxiliaries
M10.CycleStep(seconds)
M11.CycleStep(seconds)
Signals.CurrentCycleTimeInSeconds += seconds
Signals.CurrentCycleTimeInSeconds += seconds.Value()
Catch ex As Exception
MessageBox.Show("Exception: " + ex.Message + " Stack Trace: " + ex.StackTrace)
Return False
......@@ -271,30 +272,22 @@ Public Class AdvancedAuxiliaries
Throw New NotImplementedException
End Function
Public ReadOnly Property TotalFuelGRAMS As Single Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelGRAMS
Public ReadOnly Property TotalFuelGRAMS As Gram Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelGRAMS
Get
If Not M13 Is Nothing Then
Return M14.TotalCycleFCGrams
Else
Return 0
Return 0.SI(Of Gram)()
End If
End Get
End Property
Public ReadOnly Property TotalFuelLITRES As Single Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelLITRES
Public ReadOnly Property TotalFuelLITRES As Liter Implements VectoAuxiliaries.IAdvancedAuxiliaries.TotalFuelLITRES
Get
If Not M14 Is Nothing Then
Return M14.TotalCycleFCLitres
Else
Return 0
Return 0.SI(Of Liter)()
End If
End Get
End Property
......@@ -343,62 +336,62 @@ Public Class AdvancedAuxiliaries
'Diagnostics outputs for testing purposes in Vecto.
'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
Get
Return M0.AlternatorsEfficiency
End Get
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
Return M05.SmartIdleCurrent
End Get
End Property
Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Single? _
Public ReadOnly Property AA_SmartIdleAlternatorsEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_SmartIdleAlternatorsEfficiency
Get
Return M05.AlternatorsEfficiencyIdleResultCard
End Get
End Property
Public ReadOnly Property AA_SmartTractionCurrent_Amps As Single? _
Public ReadOnly Property AA_SmartTractionCurrent_Amps As Ampere _
Implements IAdvancedAuxiliaries.AA_SmartTractionCurrent_Amps
Get
Return M05.SmartTractionCurrent
End Get
End Property
Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Single? _
Public ReadOnly Property AA_SmartTractionAlternatorEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_SmartTractionAlternatorEfficiency
Get
Return M05.AlternatorsEfficiencyTractionOnResultCard
End Get
End Property
Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Single? _
Public ReadOnly Property AA_SmartOverrunCurrent_Amps As Ampere _
Implements IAdvancedAuxiliaries.AA_SmartOverrunCurrent_Amps
Get
Return M05.SmartOverrunCurrent
End Get
End Property
Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Single? _
Public ReadOnly Property AA_SmartOverrunAlternatorEfficiency As Double _
Implements IAdvancedAuxiliaries.AA_SmartOverrunAlternatorEfficiency
Get
Return M05.AlternatorsEfficiencyOverrunResultCard
End Get
End Property
Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As Single? _
Public ReadOnly Property AA_CompressorFlowRate_LitrePerSec As NormLiterPerSecond _
Implements IAdvancedAuxiliaries.AA_CompressorFlowRate_LitrePerSec
Get
Return M4.GetFlowRate
End Get
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
Return M6.OverrunFlag
End Get
......@@ -409,71 +402,71 @@ Public Class AdvancedAuxiliaries
Return _
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 Property
Public ReadOnly Property AA_CompressorFlag As Integer? Implements IAdvancedAuxiliaries.AA_CompressorFlag
Public ReadOnly Property AA_CompressorFlag As Boolean Implements IAdvancedAuxiliaries.AA_CompressorFlag
Get
Return M8.CompressorFlag
End Get
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
Return M14.TotalCycleFCGrams
End Get
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
Return M14.TotalCycleFCLitres
End Get
End Property
Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Single _
Public ReadOnly Property AuxiliaryPowerAtCrankWatts As Watt _
Implements IAdvancedAuxiliaries.AuxiliaryPowerAtCrankWatts
Get
Return M8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankHVACMechanicals As Single? _
Public ReadOnly Property AA_AveragePowerDemandCrankHVACMechanicals As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACMechanicals
Get
Return M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts()
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankHVACElectricals As Single? _
Public ReadOnly Property AA_AveragePowerDemandCrankHVACElectricals As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankHVACElectricals
Get
Return M1.AveragePowerDemandAtCrankFromHVACElectricsWatts()
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankElectrics As Single? _
Public ReadOnly Property AA_AveragePowerDemandCrankElectrics As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankElectrics
Get
Return M2.GetAveragePowerAtCrankFromElectrics()
End Get
End Property
Public ReadOnly Property AA_AveragePowerDemandCrankPneumatics As Single? _
Public ReadOnly Property AA_AveragePowerDemandCrankPneumatics As Watt _
Implements IAdvancedAuxiliaries.AA_AveragePowerDemandCrankPneumatics
Get
Return M3.GetAveragePowerDemandAtCrankFromPneumatics()
End Get
End Property
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOff As Single? _
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOff As Gram _
Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOff
Get
Return M9.TotalCycleFuelConsumptionCompressorOffContinuously
End Get
End Property
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOn As Single? _
Public ReadOnly Property AA_TotalCycleFuelConsumptionCompressorOn As Gram _
Implements IAdvancedAuxiliaries.AA_TotalCycleFuelConsumptionCompressorOn
Get
Return M9.TotalCycleFuelConsumptionCompressorOnContinuously
......@@ -484,57 +477,57 @@ Public Class AdvancedAuxiliaries
'TODO:REMOVE WHEN TESTING IS COMPLETE
'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
Return M12.INTRP1
Return M12.INTRP1()
End Get
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
Return M12.INTRP2
Return M12.INTRP2()
End Get
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
Return M12.P1X
Return M12.P1X()
End Get
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
Return M12.P1Y
Return M12.P1Y()
End Get
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
Return M12.P2X
Return M12.P2X()
End Get
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
Return M12.P2Y
Return M12.P2Y()
End Get
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
Return M12.P3X
Return M12.P3X()
End Get
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
Return M12.P3Y
Return M12.P3Y()
End Get
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
Return M12.XTAIN
Return M12.XTAIN()
End Get
End Property
End Class
......@@ -16,6 +16,7 @@ Imports System.IO
Imports VectoAuxiliaries.DownstreamModules
Imports System.Windows.Forms
Imports Newtonsoft.Json
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries
<Serializable()>
......@@ -53,7 +54,8 @@ Public Class AuxiliaryConfig
'Special Condition
If auxConfigFile = "EMPTY" Then
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.ResultCardOverrun = New ResultCard(New List(Of SmartResult))
ElectricalUserInputsConfig.ResultCardTraction = New ResultCard(New List(Of SmartResult))
......@@ -64,9 +66,9 @@ Public Class AuxiliaryConfig
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
......@@ -82,7 +84,8 @@ Public Class AuxiliaryConfig
'Set Default Values
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}
'Pneumatics set deault values
......@@ -90,7 +93,7 @@ Public Class AuxiliaryConfig
PneumaticAuxillariesConfig = New PneumaticsAuxilliariesConfig(True)
'Electrical set deault values
ElectricalUserInputsConfig = New ElectricsUserInputsConfig(True, VectoInputs)
ElectricalUserInputsConfig = New ElectricsUserInputsConfig(True, tmp)
ElectricalUserInputsConfig.ElectricalConsumers = New ElectricalConsumerList(28.3, 0.096, True)
'HVAC set deault values
......
......@@ -9,6 +9,7 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
......@@ -17,23 +18,23 @@ Imports VectoAuxiliaries.DownstreamModules
Namespace DownstreamModules
Public Interface IM10
'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
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.
ReadOnly Property P1X As Single
ReadOnly Property P1Y As Single
ReadOnly Property P2X As Single
ReadOnly Property P2Y As Single
ReadOnly Property P3X As Single
ReadOnly Property P3Y As Single
ReadOnly Property XTAIN As Single
ReadOnly Property INTRP1 As Single
ReadOnly Property INTRP2 As Single
ReadOnly Property P1X As NormLiter
ReadOnly Property P1Y As Gram
ReadOnly Property P2X As NormLiter
ReadOnly Property P2Y As Gram
ReadOnly Property P3X As NormLiter
ReadOnly Property P3Y As Gram
ReadOnly Property XTAIN As NormLiter
ReadOnly Property INTRP1 As Gram
ReadOnly Property INTRP2 As Gram
End Interface
End Namespace
......@@ -9,6 +9,7 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
......@@ -21,7 +22,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Single
ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Joule
''' <summary>
''' Smart Electrical Total Cycle Eletrical EnergyGenerated (J)
......@@ -29,7 +30,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Single
ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Joule
''' <summary>
''' Total Cycle Electrical Demand (J)
......@@ -37,7 +38,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property TotalCycleElectricalDemand As Single
ReadOnly Property TotalCycleElectricalDemand As Joule
''' <summary>
''' Total Cycle Fuel Consumption: Smart Electrical Load (g)
......@@ -45,7 +46,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Single
ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Gram
''' <summary>
''' Total Cycle Fuel Consumption: Zero Electrical Load (g)
......@@ -53,7 +54,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Single
ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Gram
''' <summary>
''' Stop Start Sensitive: Total Cycle Electrical Demand (J)
......@@ -61,7 +62,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Single
ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Joule
''' <summary>
''' Total Cycle Fuel Consuption : Average Loads (g)
......@@ -69,7 +70,7 @@ Namespace DownstreamModules
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Single
ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Gram
''' <summary>
''' Clears aggregated values ( Sets them to zero ).
......@@ -82,7 +83,7 @@ Namespace DownstreamModules
''' </summary>
''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param>
''' <remarks></remarks>
Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0)
Sub CycleStep(stepTimeInSeconds As Second)
End Interface
End Namespace
......
......@@ -8,50 +8,46 @@
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Namespace DownstreamModules
Public Interface IM12
''' <summary>
''' Fuel consumption with smart Electrics and Average Pneumatic Power Demand
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand As Single
''' <summary>
''' Base Fuel Consumption With Average Auxiliary Loads
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property BaseFuelConsumptionWithTrueAuxiliaryLoads As Single
''' <summary>
''' Stop Start Correction
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property StopStartCorrection As Single
'Diagnostic Signals Only For Testing - No Material interference with operation of class.
ReadOnly Property P1X As Single
ReadOnly Property P1Y As Single
ReadOnly Property P2X As Single
ReadOnly Property P2Y As Single
ReadOnly Property P3X As Single
ReadOnly Property P3Y As Single
ReadOnly Property XTAIN As Single
ReadOnly Property INTRP1 As Single
ReadOnly Property INTRP2 As Single
End Interface
Public Interface IM12
''' <summary>
''' Fuel consumption with smart Electrics and Average Pneumatic Power Demand
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand As Gram
''' <summary>
''' Base Fuel Consumption With Average Auxiliary Loads
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property BaseFuelConsumptionWithTrueAuxiliaryLoads As Gram
''' <summary>
''' Stop Start Correction
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property StopStartCorrection As Double
'Diagnostic Signals Only For Testing - No Material interference with operation of class.
ReadOnly Property P1X As Joule
ReadOnly Property P1Y As Gram
ReadOnly Property P2X As Joule
ReadOnly Property P2Y As Gram
ReadOnly Property P3X As Joule
ReadOnly Property P3Y As Gram
ReadOnly Property XTAIN As Joule
ReadOnly Property INTRP1 As Gram
ReadOnly Property INTRP2 As Gram
End Interface
End Namespace
......@@ -10,26 +10,21 @@
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Interface IM13
''' <summary>
''' Total Cycle Fuel Consumption Grams
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>WHTC and Start Stop Adjusted</remarks>
ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Single
End Interface
Public Interface IM13
''' <summary>
''' Total Cycle Fuel Consumption Grams
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>WHTC and Start Stop Adjusted</remarks>
ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Gram
End Interface
End Namespace

Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Interface IM14
ReadOnly Property TotalCycleFCGrams As Gram
Public Interface IM14
Readonly property TotalCycleFCGrams as single
ReadOnly Property TotalCycleFCLitres As single
End Interface
ReadOnly Property TotalCycleFCLitres As Liter
End Interface
End Namespace
......@@ -8,87 +8,82 @@
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
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>
''' OverrunFlag
''' </summary>
''' <value></value>
''' <returns>0 = Not in overrun, 1 = In Overrun</returns>
''' <remarks></remarks>
Readonly Property OverrunFlag As Integer
''' <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>
''' Smart Elec And Pneumatic: Air Compressor Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElecAndPneumaticAirCompPowerGenAtCrank As Watt
End Interface
''' <summary>
''' 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
......@@ -9,48 +9,45 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Interface IM7
''' <summary>
''' Smart Electrical And Pneumatic Aux: Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Single
''' <summary>
''' Smart Electrical And Pneumatic Aux : Air Compressor Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Single
''' <summary>
''' Smart Electrical Only Aux : Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly property SmartElectricalOnlyAuxAltPowerGenAtCrank as single
''' <summary>
''' Smart Pneumatic Only Aux : Air Comppressor Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Single
End Interface
Public Interface IM7
''' <summary>
''' Smart Electrical And Pneumatic Aux: Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Watt
''' <summary>
''' Smart Electrical And Pneumatic Aux : Air Compressor Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Watt
''' <summary>
''' Smart Electrical Only Aux : Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Watt
''' <summary>
''' Smart Pneumatic Only Aux : Air Comppressor Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Watt
End Interface
End Namespace
......@@ -10,44 +10,38 @@
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Interface IM8
Public Interface IM8
'OUT1
''' <summary>
''' Aux Power At Crank From Electrical HVAC And Pneumatics Ancilaries (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single
''' <summary>
''' Aux Power At Crank From Electrical HVAC And Pneumatics Ancilaries (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Watt
'OUT2
''' <summary>
''' Smart Electrical Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single
''' <summary>
''' Smart Electrical Alternator Power Gen At Crank (W)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Watt
'OUT3
''' <summary>
''' Compressor Flag
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property CompressorFlag As Integer
End Interface
''' <summary>
''' Compressor Flag
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property CompressorFlag As Boolean
End Interface
End Namespace
......@@ -9,69 +9,60 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Interface IM9
Inherits IAuxiliaryEvent
''' <summary>
''' Clears aggregated values ( Sets them to zero )
''' </summary>
''' <remarks></remarks>
Sub ClearAggregates()
''' <summary>
''' Increments all aggregated outputs
''' </summary>
''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param>
''' <remarks></remarks>
Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0)
''' <summary>
''' Litres Of Air: Compressor On Continually (L)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Start/Stop Sensitive</remarks>
ReadOnly Property LitresOfAirCompressorOnContinually As Single
''' <summary>
''' Litres Of Air Compressor On Only In Overrun (L)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As Single
''' <summary>
''' Total Cycle Fuel Consumption Compressor *On* Continuously (G)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Readonly property TotalCycleFuelConsumptionCompressorOnContinuously As single
''' <summary>
''' Total Cycle Fuel Consumption Compressor *OFF* Continuously (G)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Readonly property TotalCycleFuelConsumptionCompressorOffContinuously As single
End Interface
Public Interface IM9
Inherits IAuxiliaryEvent
''' <summary>
''' Clears aggregated values ( Sets them to zero )
''' </summary>
''' <remarks></remarks>
Sub ClearAggregates()
''' <summary>
''' Increments all aggregated outputs
''' </summary>
''' <param name="stepTimeInSeconds">Single : Mutiplies the values to be aggregated by number of seconds</param>
''' <remarks></remarks>
Sub CycleStep(stepTimeInSeconds As Second)
''' <summary>
''' Litres Of Air: Compressor On Continually (L)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Start/Stop Sensitive</remarks>
ReadOnly Property LitresOfAirCompressorOnContinually As NormLiter
''' <summary>
''' Litres Of Air Compressor On Only In Overrun (L)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As NormLiter
''' <summary>
''' Total Cycle Fuel Consumption Compressor *On* Continuously (G)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Gram
''' <summary>
''' Total Cycle Fuel Consumption Compressor *OFF* Continuously (G)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Gram
End Interface
End Namespace
......@@ -9,6 +9,8 @@
'
' 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.Pneumatics
Imports VectoAuxiliaries.Hvac
......@@ -19,60 +21,68 @@ Namespace DownstreamModules
Implements IM10
'Aggregators
Private _AverageAirConsumedLitre As Double
Private _AverageAirConsumedLitre As NormLiter
'Diagnostics
Private x1, y1, x2, y2, x3, y3, xTA, interp1, interp2 As Single
Public ReadOnly Property P1X As Single Implements IM10.P1X
Private x1 As NormLiter
Private y1 As Gram
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
Return x1
End Get
End Property
Public ReadOnly Property P1Y As Single Implements IM10.P1Y
Public ReadOnly Property P1Y As Gram Implements IM10.P1Y
Get
Return y1
End Get
End Property
Public ReadOnly Property P2X As Single Implements IM10.P2X
Public ReadOnly Property P2X As NormLiter Implements IM10.P2X
Get
Return x2
End Get
End Property
Public ReadOnly Property P2Y As Single Implements IM10.P2Y
Public ReadOnly Property P2Y As Gram Implements IM10.P2Y
Get
Return y2
End Get
End Property
Public ReadOnly Property P3X As Single Implements IM10.P3X
Public ReadOnly Property P3X As NormLiter Implements IM10.P3X
Get
Return x3
End Get
End Property
Public ReadOnly Property P3Y As Single Implements IM10.P3Y
Public ReadOnly Property P3Y As Gram Implements IM10.P3Y
Get
Return y3
End Get
End Property
Public ReadOnly Property XTAIN As Single Implements IM10.XTAIN
Public ReadOnly Property XTAIN As NormLiter Implements IM10.XTAIN
Get
Return xTA
End Get
End Property
Public ReadOnly Property INTRP1 As Single Implements IM10.INTRP1
Public ReadOnly Property INTRP1 As Gram Implements IM10.INTRP1
Get
Return interp1
End Get
End Property
Public ReadOnly Property INTRP2 As Single Implements IM10.INTRP2
Public ReadOnly Property INTRP2 As Gram Implements IM10.INTRP2
Get
Return interp2
End Get
......@@ -95,14 +105,14 @@ Namespace DownstreamModules
SmartPneumtaics
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
x1 = m9.LitresOfAirCompressorOnContinually
y1 = m9.TotalCycleFuelConsumptionCompressorOnContinuously
x2 = 0
x2 = 0.SI(Of NormLiter)()
y2 = m9.TotalCycleFuelConsumptionCompressorOffContinuously
x3 = m9.LitresOfAirCompressorOnOnlyInOverrun
y3 = m9.TotalCycleFuelConsumptionCompressorOffContinuously
......@@ -115,15 +125,15 @@ Namespace DownstreamModules
'Non-Smart Pneumatics ( OUT 1 )
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
'Smart Pneumatics ( OUT 2 )
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
End Select
......@@ -134,23 +144,23 @@ Namespace DownstreamModules
#Region "Public Properties"
Public ReadOnly Property AverageLoadsFuelConsumptionInterpolatedForPneumatics As Single _
Public ReadOnly Property AverageLoadsFuelConsumptionInterpolatedForPneumatics As Gram _
Implements IM10.AverageLoadsFuelConsumptionInterpolatedForPneumatics
Get
'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)
Return intrp1
End Get
End Property
Public ReadOnly Property FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand As Single _
Public ReadOnly Property FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand As Gram _
Implements IM10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand
Get
'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)
Return intrp2
End Get
......@@ -165,14 +175,17 @@ Namespace DownstreamModules
Me.m3 = m3
Me.m9 = m9
Me.signals = signals
_AverageAirConsumedLitre = 0.SI(Of NormLiter)()
End Sub
#End Region
Public Sub CycleStep(Optional stepTimeInSeconds As Double = 0.0) Implements IM10.CycleStep
Public Sub CycleStep(stepTimeInSeconds As Second) Implements IM10.CycleStep
_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 Class
End Namespace
......
......@@ -9,6 +9,7 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
......@@ -21,13 +22,13 @@ Namespace DownstreamModules
#Region "Private Aggregates"
'Private Aggregations
Private AG1 As Double
Private AG2 As Double
Private AG3 As Double
Private AG4 As Double
Private AG5 As Double
Private AG6 As Double
Private AG7 As Double
Private AG1 As Joule
Private AG2 As Joule
Private AG3 As Joule
Private AG4 As Gram
Private AG5 As Gram
Private AG6 As Joule
Private AG7 As Gram
#End Region
......@@ -42,187 +43,193 @@ Namespace DownstreamModules
#End Region
'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
Return rpm / RPM_to_RadiansPerSecond
Return rpm.RPMtoRad() ' / RPM_to_RadiansPerSecond
End Function
Private ReadOnly Property Sum1 As Single
Private ReadOnly Property Sum1 As Watt
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 Property
Private ReadOnly Property Sum2 As Single
Private ReadOnly Property Sum2 As Watt
Get
Return m3.GetAveragePowerDemandAtCrankFromPneumatics + m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
Return M3.GetAveragePowerDemandAtCrankFromPneumatics + M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
End Get
End Property
Private ReadOnly Property Sum3 As Single
Private ReadOnly Property Sum3 As NewtonMeter
Get
Return m8.SmartElectricalAlternatorPowerGenAtCrank / Sum0(signals.EngineSpeed)
Return M8.SmartElectricalAlternatorPowerGenAtCrank / Sum0(signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property Sum4 As Single
Private ReadOnly Property Sum4 As NewtonMeter
Get
Return Sum2 / Sum0(signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property Sum5 As Single
Private ReadOnly Property Sum5 As NewtonMeter
Get
Return Sum4 + Sum9
End Get
End Property
Private ReadOnly Property Sum6 As Single
Private ReadOnly Property Sum6 As NewtonMeter
Get
Return Sum3 + Sum5
End Get
End Property
Private ReadOnly Property Sum7 As Single
Private ReadOnly Property Sum7 As GramPerSecond
Get
'SCM 3_02
Dim intrp1 As Single = fmap.GetFuelConsumption(sum6, signals.EngineSpeed)
intrp1 = If(Not Single.IsNaN(intrp1) AndAlso intrp1 > 0, intrp1, 0)
Dim intrp1 As GramPerSecond = fmap.GetFuelConsumption(Sum6, signals.EngineSpeed)
intrp1 = If(Not Double.IsNaN(intrp1.Value()) AndAlso intrp1 > 0, intrp1, 0.SI(Of GramPerSecond))
Return intrp1
End Get
End Property
Private ReadOnly Property Sum8 As Single
Private ReadOnly Property Sum8 As GramPerSecond
Get
'SCHM 3_2
Dim intrp2 As Single = fmap.GetFuelConsumption(Sum5, signals.EngineSpeed)
intrp2 = If(Not Single.IsNaN(intrp2) AndAlso intrp2 > 0, intrp2, 0)
Dim intrp2 As GramPerSecond = fmap.GetFuelConsumption(Sum5, signals.EngineSpeed)
intrp2 = If(Not Double.IsNaN(intrp2.Value()) AndAlso intrp2 > 0, intrp2, 0.SI(Of GramPerSecond))
Return intrp2
End Get
End Property
Private ReadOnly Property Sum9 As Single
Private ReadOnly Property Sum9 As NewtonMeter
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 Property
Private ReadOnly Property Sum10 As Single
Private ReadOnly Property Sum10 As NewtonMeter
Get
Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC / Sum0(signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property Sum11 As Single
Private ReadOnly Property Sum11 As NewtonMeter
Get
Return Sum5 + Sum10
End Get
End Property
Private ReadOnly Property Sum12 As Single
Private ReadOnly Property Sum12 As GramPerSecond
Get
'SCHM 3_2
Dim intrp3 As Single = fmap.GetFuelConsumption(Sum11, signals.EngineSpeed)
intrp3 = If(Not Single.IsNaN(intrp3) AndAlso intrp3 > 0, intrp3, 0)
Dim intrp3 As GramPerSecond = fmap.GetFuelConsumption(Sum11, signals.EngineSpeed)
intrp3 = If(Not Double.IsNaN(intrp3.Value()) AndAlso intrp3 > 0, intrp3, 0.SI(Of GramPerSecond))
Return intrp3
End Get
End Property
'OUT1
Public ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Single _
Public ReadOnly Property SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly As Joule _
Implements IM11.SmartElectricalTotalCycleElectricalEnergyGeneratedDuringOverrunOnly
Get
Return AG1
End Get
End Property
'OUT2
Public ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Single _
Public ReadOnly Property SmartElectricalTotalCycleEletricalEnergyGenerated As Joule _
Implements IM11.SmartElectricalTotalCycleEletricalEnergyGenerated
Get
Return AG2
End Get
End Property
'OUT3
Public ReadOnly Property TotalCycleElectricalDemand As Single Implements IM11.TotalCycleElectricalDemand
Public ReadOnly Property TotalCycleElectricalDemand As Joule Implements IM11.TotalCycleElectricalDemand
Get
Return AG3
End Get
End Property
'OUT4
Public ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Single _
Public ReadOnly Property TotalCycleFuelConsumptionSmartElectricalLoad As Gram _
Implements IM11.TotalCycleFuelConsumptionSmartElectricalLoad
Get
Return AG4
End Get
End Property
'OUT5
Public ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Single _
Public ReadOnly Property TotalCycleFuelConsumptionZeroElectricalLoad As Gram _
Implements IM11.TotalCycleFuelConsumptionZeroElectricalLoad
Get
Return AG5
End Get
End Property
'OUT6
Public ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Single _
Public ReadOnly Property StopStartSensitiveTotalCycleElectricalDemand As Joule _
Implements IM11.StopStartSensitiveTotalCycleElectricalDemand
Get
Return AG6
End Get
End Property
'OUT7
Public ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Single _
Public ReadOnly Property TotalCycleFuelConsuptionAverageLoads As Gram _
Implements IM11.TotalCycleFuelConsuptionAverageLoads
Get
Return AG7
End Get
End Property
Private ReadOnly Property SW1 As Single
Private ReadOnly Property SW1 As Boolean
Get
Return If(signals.EngineStopped, 0, 1)
Return Not signals.EngineStopped
End Get
End Property
'Clear at the beginning of cycle
Sub ClearAggregates() Implements IM11.ClearAggregates
AG1 = 0
AG2 = 0
AG3 = 0
AG4 = 0
AG5 = 0
AG6 = 0
AG7 = 0
AG1 = 0.SI(Of Joule)()
AG2 = 0.SI(Of Joule)()
AG3 = 0.SI(Of Joule)()
AG4 = 0.SI(Of Gram)()
AG5 = 0.SI(Of Gram)()
AG6 = 0.SI(Of Joule)()
AG7 = 0.SI(Of Gram)()
End Sub
'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
AG3 += (stepTimeInSeconds * M6.AvgPowerDemandAtCrankFromElectricsIncHVAC)
AG3 += (M6.AvgPowerDemandAtCrankFromElectricsIncHVAC * stepTimeInSeconds)
If signals.EngineStopped Then Return
'S/S Sensitive
AG1 += (stepTimeInSeconds * Sum1 * SW1)
AG2 += (stepTimeInSeconds * M8.SmartElectricalAlternatorPowerGenAtCrank * SW1)
If (SW1) Then
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.
AG4 += (stepTimeInSeconds * Sum7 / 3600 * SW1)
AG5 += (stepTimeInSeconds * Sum8 / 3600 * SW1)
AG7 += (stepTimeInSeconds * Sum12 / 3600 * SW1)
'MQ: No longer needed - already per Second 'These need to be divided by 3600 as the Fuel Map output is in Grams/Second.
AG4 += (Sum7 * stepTimeInSeconds) '/ 3600
AG5 += (Sum8 * stepTimeInSeconds) ' / 3600
AG7 += (Sum12 * stepTimeInSeconds) '/ 3600
End If
End Sub
'Constructor
......@@ -235,6 +242,7 @@ Namespace DownstreamModules
Me.M8 = m8
Me.fmap = fmap
Me.signals = signals
ClearAggregates()
End Sub
End Class
End Namespace
......
......@@ -9,174 +9,191 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M12
Implements IM12
Public Class M12
Implements IM12
Private Class Point
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
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
Private Sub setPoints()
_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
......@@ -9,111 +9,118 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M13
Implements IM13
Private m10 As IM10
Private m11 As IM11
Private m12 As IM12
Private signals As ISignals
'Internal Staging Calculations
Private ReadOnly Property Sum1 As Single
Get
Return m11.TotalCycleFuelConsuptionAverageLoads * m12.StopStartCorrection
End Get
End Property
Private ReadOnly Property Sum2 As Single
Get
Return m10.AverageLoadsFuelConsumptionInterpolatedForPneumatics * m12.StopStartCorrection
End Get
End Property
Private ReadOnly Property Sum3 As Single
Get
Return m10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand * m12.StopStartCorrection
End Get
End Property
Private ReadOnly Property Sum4 As Single
Get
Return -m12.FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand + Sum1
End Get
End Property
Private ReadOnly Property Sum5 As Single
Get
Return Sum2 - Sum3
End Get
End Property
Private ReadOnly Property Sum6 As Single
Get
Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads - Sum4
End Get
End Property
Private ReadOnly Property Sum7 As Single
Get
Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads - Sum5
End Get
End Property
Private ReadOnly Property Sum8 As Single
Get
Return -Sum4 + Sum7
End Get
End Property
Private ReadOnly Property Sum9 As Single
Get
Return SW4 * SW3
End Get
End Property
'Internal Staging Switches
Private ReadOnly Property SW1 As Single
Get
Return If(signals.SmartPneumatics, Sum8, Sum6)
End Get
End Property
Private ReadOnly Property SW2 As Single
Get
Return If(signals.SmartPneumatics, Sum3, m12.BaseFuelConsumptionWithTrueAuxiliaryLoads)
End Get
End Property
Private ReadOnly Property SW3 As Single
Get
Return If(signals.SmartElectrics, SW1, SW2)
End Get
End Property
Private ReadOnly Property SW4 As Single
Get
Return If(signals.DeclarationMode, signals.WHTC, 1)
End Get
End Property
'Constructor
Public Sub New(m10 As IM10, m11 As IM11, m12 As IM12, signals As ISignals)
Me.m10 = m10
Me.m11 = m11
Me.m12 = m12
Me.signals = signals
End Sub
'Public class outputs
Public ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Single Implements IM13.WHTCTotalCycleFuelConsumptionGrams
Get
Return Sum9
End Get
End Property
End Class
Public Class M13
Implements IM13
Private m10 As IM10
Private m11 As IM11
Private m12 As IM12
Private signals As ISignals
'Internal Staging Calculations
Private ReadOnly Property Sum1 As Gram
Get
Return m11.TotalCycleFuelConsuptionAverageLoads * m12.StopStartCorrection
End Get
End Property
Private ReadOnly Property Sum2 As Gram
Get
Return m10.AverageLoadsFuelConsumptionInterpolatedForPneumatics * m12.StopStartCorrection
End Get
End Property
Private ReadOnly Property Sum3 As Gram
Get
Return m10.FuelConsumptionSmartPneumaticsAndAverageElectricalPowerDemand * m12.StopStartCorrection
End Get
End Property
Private ReadOnly Property Sum4 As Gram
Get
Return -m12.FuelconsumptionwithsmartElectricsandAveragePneumaticPowerDemand() + Sum1
End Get
End Property
Private ReadOnly Property Sum5 As Gram
Get
Return Sum2 - Sum3
End Get
End Property
Private ReadOnly Property Sum6 As Gram
Get
Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads() - Sum4
End Get
End Property
Private ReadOnly Property Sum7 As Gram
Get
Return m12.BaseFuelConsumptionWithTrueAuxiliaryLoads() - Sum5
End Get
End Property
Private ReadOnly Property Sum8 As Gram
Get
Return -Sum4 + Sum7
End Get
End Property
Private ReadOnly Property Sum9 As Gram
Get
Return SW4 * SW3
End Get
End Property
'Internal Staging Switches
Private ReadOnly Property SW1 As Gram
Get
Return If(signals.SmartPneumatics, Sum8, Sum6)
End Get
End Property
Private ReadOnly Property SW2 As Gram
Get
Return If(signals.SmartPneumatics, Sum3, m12.BaseFuelConsumptionWithTrueAuxiliaryLoads())
End Get
End Property
Private ReadOnly Property SW3 As Gram
Get
Return If(signals.SmartElectrics, SW1, SW2)
End Get
End Property
Private ReadOnly Property SW4 As Double
Get
Return If(signals.DeclarationMode, signals.WHTC, 1)
End Get
End Property
'Constructor
Public Sub New(m10 As IM10, m11 As IM11, m12 As IM12, signals As ISignals)
Me.m10 = m10
Me.m11 = m11
Me.m12 = m12
Me.signals = signals
End Sub
'Public class outputs
Public ReadOnly Property WHTCTotalCycleFuelConsumptionGrams As Gram _
Implements IM13.WHTCTotalCycleFuelConsumptionGrams
Get
Return Sum9
End Get
End Property
End Class
End Namespace
Imports VectoAuxiliaries.Electrics
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M14
Implements IM14
Private m13 As IM13
Private signals As ISignals
Private constants As IHVACConstants
Private ssm As ISSMTOOL
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 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.constants = constants
Me.ssm = hvacSSM
End Sub
'Staging Calculations
Private ReadOnly Property S1 As Single
Get
Return m13.WHTCTotalCycleFuelConsumptionGrams * constants.DieselGCVJperGram
End Get
End Property
Private ReadOnly Property S2 As Single
Get
Return ssm.GenInputs.AH_FuelEnergyToHeatToCoolant * S1
End Get
End Property
Private ReadOnly Property S3 As Single
Get
Return S2 * ssm.GenInputs.AH_CoolantHeatTransferredToAirCabinHeater
End Get
End Property
Private ReadOnly Property S4 As Single
Get
Return (S3 / signals.CurrentCycleTimeInSeconds) / 1000
End Get
End Property
Private ReadOnly Property S5 As Single
Get
Return signals.CurrentCycleTimeInSeconds / 3600
End Get
End Property
Private ReadOnly Property S6 As Single
Get
Return S5 * ssm.FuelPerHBaseAsjusted(S4) * (constants.FuelDensity * 1000)
End Get
End Property
Private ReadOnly Property S7 As Single
Get
Return m13.WHTCTotalCycleFuelConsumptionGrams + s6
End Get
End Property
Private ReadOnly Property S8 As Single
Get
Return S7 / (constants.FuelDensity * 1000)
End Get
End Property
Public ReadOnly Property TotalCycleFCGrams As Single Implements IM14.TotalCycleFCGrams
Get
Return S7
End Get
End Property
Public ReadOnly Property TotalCycleFCLitres As Single Implements IM14.TotalCycleFCLitres
Get
Return S8
End Get
End Property
End Class
Public Class M14
Implements IM14
Private m13 As IM13
Private signals As ISignals
Private constants As IHVACConstants
Private ssm As ISSMTOOL
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 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.constants = constants
Me.ssm = hvacSSM
End Sub
'Staging Calculations
Private ReadOnly Property S1 As Joule
Get
Return (m13.WHTCTotalCycleFuelConsumptionGrams.Value * constants.DieselGCVJperGram).SI(Of Joule)()
End Get
End Property
Private ReadOnly Property S2 As Joule
Get
Return ssm.GenInputs.AH_FuelEnergyToHeatToCoolant * S1
End Get
End Property
Private ReadOnly Property S3 As Joule
Get
Return S2 * ssm.GenInputs.AH_CoolantHeatTransferredToAirCabinHeater
End Get
End Property
Private ReadOnly Property S4 As Double 'kW
Get
Return (S3 / signals.CurrentCycleTimeInSeconds.SI(Of Second)()).Value() / 1000.0
End Get
End Property
Private ReadOnly Property S5 As Double ' hour
Get
Return signals.CurrentCycleTimeInSeconds / 3600
End Get
End Property
Private ReadOnly Property S6 As Gram
Get
Return (S5 * ssm.FuelPerHBaseAsjusted(S4) * (constants.FuelDensity * 1000)).SI(Of Gram)()
End Get
End Property
Private ReadOnly Property S7 As Gram
Get
Return m13.WHTCTotalCycleFuelConsumptionGrams + S6
End Get
End Property
Private ReadOnly Property S8 As Liter
Get
Return (S7.Value() / (constants.FuelDensity * 1000)).SI(Of Liter)()
End Get
End Property
Public ReadOnly Property TotalCycleFCGrams As Gram Implements IM14.TotalCycleFCGrams
Get
Return S7
End Get
End Property
Public ReadOnly Property TotalCycleFCLitres As Liter Implements IM14.TotalCycleFCLitres
Get
Return S8
End Get
End Property
End Class
End Namespace
......@@ -9,264 +9,284 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M6
Implements IM6
Public Class M6
Implements IM6
#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
Public ReadOnly Property OverrunFlag As Integer Implements IM6.OverrunFlag
Get
Return VC0
End Get
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
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 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 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
Namespace DownstreamModules
Public Class M7
implements IM7
Private _m5 As IM5_SmartAlternatorSetGeneration
Private _m6 As IM6
Private _signals As ISignals
'Boolean Conditions
Private Readonly Property C1 As Boolean
Get
Return If(_m6.OverrunFlag=1,True,False) Andalso _signals.ClutchEngaged Andalso _signals.InNeutral=false
End Get
End Property
'Internal Switched Outputs
Private Readonly Property SW1 As Single
Get
Dim idle As Boolean = _signals.EngineSpeed <=_signals.EngineIdleSpeed ANDAlso ( NOT _signals.ClutchEngaged OrElse _signals.InNeutral)
Return If ( idle, _m5.AlternatorsGenerationPowerAtCrankIdleWatts, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts)
End Get
End Property
Private Readonly Property SW2 As Single
Get
Return If( C1, _m6.SmartElecAndPneumaticAltPowerGenAtCrank, SW1)
End Get
End Property
Private Readonly Property SW3 As Single
Get
Return If( C1,_m6.SmartElecAndPneumaticAirCompPowerGenAtCrank,_m6.AveragePowerDemandAtCrankFromPneumatics)
End Get
End Property
Private Readonly Property SW4 As Single
Get
Return If( C1,_m6.SmartElecOnlyAltPowerGenAtCrank,SW1)
End Get
End Property
Private Readonly Property SW5 As Single
Get
Return If( C1, _m6.SmartPneumaticOnlyAirCompPowerGenAtCrank,_m6.AveragePowerDemandAtCrankFromPneumatics)
End Get
End Property
'Public readonly properties ( Outputs )
Public ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Single Implements IM7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank
Get
Return SW2
End Get
End Property
Public ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Single Implements IM7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
Get
Return SW3
End Get
End Property
Public ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Single Implements IM7.SmartElectricalOnlyAuxAltPowerGenAtCrank
Get
Return SW4
End Get
End Property
Public ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Single Implements IM7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank
Get
Return SW5
End Get
End Property
'Constructor
Public sub new ( m5 as IM5_SmartAlternatorSetGeneration, _
m6 As IM6, _
signals As ISignals)
_m5 = m5
_m6 = m6
_signals = signals
End Sub
End Class
Public Class M7
Implements IM7
Private _m5 As IM5_SmartAlternatorSetGeneration
Private _m6 As IM6
Private _signals As ISignals
'Boolean Conditions
Private ReadOnly Property C1 As Boolean
Get
Return _m6.OverrunFlag AndAlso _signals.ClutchEngaged AndAlso _signals.InNeutral = False
End Get
End Property
'Internal Switched Outputs
Private ReadOnly Property SW1 As Watt
Get
Dim idle As Boolean = _signals.EngineSpeed <= _signals.EngineIdleSpeed AndAlso
(Not _signals.ClutchEngaged OrElse _signals.InNeutral)
Return _
If(idle, _m5.AlternatorsGenerationPowerAtCrankIdleWatts, _m5.AlternatorsGenerationPowerAtCrankTractionOnWatts)
End Get
End Property
Private ReadOnly Property SW2 As Watt
Get
Return If(C1, _m6.SmartElecAndPneumaticAltPowerGenAtCrank, SW1)
End Get
End Property
Private ReadOnly Property SW3 As Watt
Get
Return If(C1, _m6.SmartElecAndPneumaticAirCompPowerGenAtCrank, _m6.AveragePowerDemandAtCrankFromPneumatics)
End Get
End Property
Private ReadOnly Property SW4 As Watt
Get
Return If(C1, _m6.SmartElecOnlyAltPowerGenAtCrank, SW1)
End Get
End Property
Private ReadOnly Property SW5 As Watt
Get
Return If(C1, _m6.SmartPneumaticOnlyAirCompPowerGenAtCrank, _m6.AveragePowerDemandAtCrankFromPneumatics)
End Get
End Property
'Public readonly properties ( Outputs )
Public ReadOnly Property SmartElectricalAndPneumaticAuxAltPowerGenAtCrank As Watt _
Implements IM7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank
Get
Return SW2
End Get
End Property
Public ReadOnly Property SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank As Watt _
Implements IM7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
Get
Return SW3
End Get
End Property
Public ReadOnly Property SmartElectricalOnlyAuxAltPowerGenAtCrank As Watt _
Implements IM7.SmartElectricalOnlyAuxAltPowerGenAtCrank
Get
Return SW4
End Get
End Property
Public ReadOnly Property SmartPneumaticOnlyAuxAirCompPowerGenAtCrank As Watt _
Implements IM7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank
Get
Return SW5
End Get
End Property
'Constructor
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
......@@ -10,6 +10,7 @@
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
......@@ -30,100 +31,100 @@ Namespace DownstreamModules
#Region "Internal Sums and Switches"
'Internal Staged Sums and Switches
Private ReadOnly Property Sum1 As Single
Private ReadOnly Property Sum1 As Watt
Get
Return _
_m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank
_m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank() + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank()
End Get
End Property
Private ReadOnly Property Sum2 As Single
Private ReadOnly Property Sum2 As Watt
Get
Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank + _m6.AveragePowerDemandAtCrankFromPneumatics
Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank() + _m6.AveragePowerDemandAtCrankFromPneumatics
End Get
End Property
Private ReadOnly Property Sum3 As Single
Private ReadOnly Property Sum3 As Watt
Get
Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC
End Get
End Property
Private ReadOnly Property Sum4 As Single
Private ReadOnly Property Sum4 As Watt
Get
Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics
End Get
End Property
Private ReadOnly Property Sum5 As Single
Private ReadOnly Property Sum5 As Watt
Get
Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5
End Get
End Property
Private ReadOnly Property Sum6 As Single
Private ReadOnly Property Sum6 As Watt
Get
Return Sum5 * SW6
Return If(SW6, Sum5, SIBase(Of Watt).Create(0))
End Get
End Property
Private ReadOnly Property SW1 As Single
Private ReadOnly Property SW1 As Watt
Get
Return If(_signals.SmartPneumatics, Sum1, Sum2)
End Get
End Property
Private ReadOnly Property SW2 As Single
Private ReadOnly Property SW2 As Watt
Get
Return If(_signals.SmartPneumatics, Sum3, Sum4)
End Get
End Property
Private ReadOnly Property SW3 As Single
Private ReadOnly Property SW3 As Watt
Get
Return _
If _
(_signals.SmartPneumatics, _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank,
_m7.SmartElectricalOnlyAuxAltPowerGenAtCrank)
(_signals.SmartPneumatics, _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank(),
_m7.SmartElectricalOnlyAuxAltPowerGenAtCrank())
End Get
End Property
Private ReadOnly Property SW4 As Integer
Private ReadOnly Property SW4 As Boolean
Get
Return If(_signals.SmartElectrics, _m6.SmartElecAndPneumaticsCompressorFlag, _m6.SmartPneumaticsOnlyCompressorFlag)
End Get
End Property
Private ReadOnly Property SW5 As Single
Private ReadOnly Property SW5 As Watt
Get
Return If(_signals.SmartElectrics, SW1, SW2)
End Get
End Property
Private ReadOnly Property SW6 As Single
Private ReadOnly Property SW6 As Boolean
Get
Return If(_signals.EngineStopped, 0, 1)
Return Not _signals.EngineStopped
End Get
End Property
#End Region
'OUT1
Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single _
Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Watt _
Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries
Get
Return Sum6
End Get
End Property
'OUT2
Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single _
Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Watt _
Implements IM8.SmartElectricalAlternatorPowerGenAtCrank
Get
Return SW3
End Get
End Property
'OUT3
Public ReadOnly Property CompressorFlag As Integer Implements IM8.CompressorFlag
Public ReadOnly Property CompressorFlag As Boolean Implements IM8.CompressorFlag
Get
Return SW4
End Get
......
......@@ -9,6 +9,7 @@
'
' See the LICENSE.txt for the specific language governing permissions and limitations.
Imports TUGraz.VectoCommon.Utils
Imports VectoAuxiliaries.Electrics
Imports VectoAuxiliaries.Pneumatics
Imports VectoAuxiliaries.Hvac
......@@ -21,13 +22,13 @@ Namespace DownstreamModules
#Region "Aggregates"
'AG1
Private _LitresOfAirCompressorOnContinuallyAggregate As Double
Private _LitresOfAirCompressorOnContinuallyAggregate As NormLiter
'AG2
Private _LitresOfAirCompressorOnOnlyInOverrunAggregate As Double
Private _LitresOfAirCompressorOnOnlyInOverrunAggregate As NormLiter
'AG3
Private _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate As Double
Private _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate As Gram
'AG4
Private _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate As Double
Private _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate As Gram
#End Region
......@@ -46,28 +47,28 @@ Namespace DownstreamModules
#Region "Class Outputs"
'OUT 1
Public ReadOnly Property LitresOfAirCompressorOnContinually As Single _
Public ReadOnly Property LitresOfAirCompressorOnContinually As NormLiter _
Implements IM9.LitresOfAirCompressorOnContinually
Get
Return _LitresOfAirCompressorOnContinuallyAggregate
End Get
End Property
'OUT 2
Public ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As Single _
Public ReadOnly Property LitresOfAirCompressorOnOnlyInOverrun As NormLiter _
Implements IM9.LitresOfAirCompressorOnOnlyInOverrun
Get
Return _LitresOfAirCompressorOnOnlyInOverrunAggregate
End Get
End Property
'OUT 3
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Single _
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOffContinuously As Gram _
Implements IM9.TotalCycleFuelConsumptionCompressorOffContinuously
Get
Return _TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate
End Get
End Property
'OUT 4
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Single _
Public ReadOnly Property TotalCycleFuelConsumptionCompressorOnContinuously As Gram _
Implements IM9.TotalCycleFuelConsumptionCompressorOnContinuously
Get
Return _TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate
......@@ -77,136 +78,140 @@ Namespace DownstreamModules
#End Region
'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
Return rpm / RPM_TO_RADS_PER_SECOND
Return rpm.RPMtoRad() ' / RPM_TO_RADS_PER_SECOND
End Function
Private ReadOnly Property S1 As Single
Private ReadOnly Property S1 As Watt
Get
Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC + M1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts
End Get
End Property
Private ReadOnly Property S2 As Single
Private ReadOnly Property S2 As NewtonMeter
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.")
Return M4.GetPowerCompressorOn / S0(Signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property S3 As Single
Private ReadOnly Property S3 As NewtonMeter
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.")
Return M4.GetPowerCompressorOff / S0(Signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property S4 As Single
Private ReadOnly Property S4 As NewtonMeter
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.")
Return S1 / S0(Signals.EngineSpeed)
End Get
End Property
Private ReadOnly Property S5 As Single
Private ReadOnly Property S5 As NewtonMeter
Get
Return S2 + S14
End Get
End Property
Private ReadOnly Property S6 As Single
Private ReadOnly Property S6 As NewtonMeter
Get
Return S14 + S3
End Get
End Property
Private ReadOnly Property S7 As Single
Private ReadOnly Property S7 As NewtonMeter
Get
Return S4 + S5
End Get
End Property
Private ReadOnly Property S8 As Single
Private ReadOnly Property S8 As NewtonMeter
Get
Return S4 + S6
End Get
End Property
Private ReadOnly Property S9 As Single
Private ReadOnly Property S9 As NormLiterPerSecond
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 Property
Private ReadOnly Property S10 As Single
Private ReadOnly Property S10 As NormLiterPerSecond
Get
Return S13 * PSAC.OverrunUtilisationForCompressionFraction
End Get
End Property
Private ReadOnly Property S11 As Single
Private ReadOnly Property S11 As GramPerSecond
Get
'SCHM 3_02
Dim int1 As Single = FMAP.GetFuelConsumption(S7, Signals.EngineSpeed)
int1 = If(int1 > 0 AndAlso Not Single.IsNaN(int1), int1, 0)
Dim int1 As GramPerSecond = FMAP.GetFuelConsumption(S7, Signals.EngineSpeed)
int1 = If(int1 > 0 AndAlso Not Double.IsNaN(int1.Value()), int1, 0.SI(Of GramPerSecond))
Return int1 / 3600
Return int1
End Get
End Property
Private ReadOnly Property S12 As Single
Private ReadOnly Property S12 As GramPerSecond
Get
'SCHM 3_02
Dim int2 As Single = FMAP.GetFuelConsumption(S8, Signals.EngineSpeed)
int2 = If(int2 > 0 AndAlso Not Single.IsNaN(int2), int2, 0)
Dim int2 As GramPerSecond = FMAP.GetFuelConsumption(S8, Signals.EngineSpeed)
int2 = If(int2 > 0 AndAlso Not Double.IsNaN(int2.Value()), int2, 0.SI(Of GramPerSecond))
Return int2 / 3600
Return int2
End Get
End Property
Private ReadOnly Property S13 As Single
Private ReadOnly Property S13 As NormLiterPerSecond
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 Property
Private ReadOnly Property S14 As Single
Private ReadOnly Property S14 As NewtonMeter
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 Property
Private ReadOnly Property SW1 As Integer
Private ReadOnly Property SW1 As Boolean
Get
Return If(Signals.EngineStopped, 0, 1)
Return Not Signals.EngineStopped
End Get
End Property
'Utility Methods
Public Sub ClearAggregates() Implements IM9.ClearAggregates
_LitresOfAirCompressorOnContinuallyAggregate = 0
_LitresOfAirCompressorOnOnlyInOverrunAggregate = 0
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate = 0
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate = 0
_LitresOfAirCompressorOnContinuallyAggregate = SIBase(Of NormLiter).Create(0)
_LitresOfAirCompressorOnOnlyInOverrunAggregate = SIBase(Of NormLiter).Create(0)
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate = SIBase(Of Gram).Create(0)
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate = SIBase(Of Gram).Create(0)
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
_LitresOfAirCompressorOnContinuallyAggregate += stepTimeInSeconds * M4.GetFlowRate * SW1
_LitresOfAirCompressorOnOnlyInOverrunAggregate += stepTimeInSeconds * S10 * SW1
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate += stepTimeInSeconds * S11 * SW1
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate += stepTimeInSeconds * S12 * SW1
If (SW1) Then
_LitresOfAirCompressorOnContinuallyAggregate += M4.GetFlowRate * stepTimeInSeconds
_LitresOfAirCompressorOnOnlyInOverrunAggregate += S10 * stepTimeInSeconds
_TotalCycleFuelConsumptionCompressorOnContinuouslyAggregate += S11 * stepTimeInSeconds
_TotalCycleFuelConsumptionCompressorOffContinuouslyAggregate += S12 * stepTimeInSeconds
End If
End Sub
'Constructor
......@@ -219,6 +224,8 @@ Namespace DownstreamModules
Me.FMAP = fmap
Me.PSAC = psac
Me.Signals = signals
ClearAggregates()
End Sub
'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