diff --git a/VECTO/mAAUX_Global.vb b/VECTO/mAAUX_Global.vb index 1deed0f8a7e14673d4f1e6af32915252d0dafdee..1eb3e26e569b7043e27eff5c55ea4c974d61b591 100644 --- a/VECTO/mAAUX_Global.vb +++ b/VECTO/mAAUX_Global.vb @@ -7,7 +7,7 @@ Module mAAUX_Global Public EngineDrivelinePower As Single Public EngineDrivelineTorque As Single Public EngineMotoringPower As Single - Public EngineSpeed As Integer + Public EngineSpeed As Single Public PreExistingAuxPower As Single Public Idle As Boolean Public InNeutral As Boolean diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb index 22f80edd6bb1787ec16437726c4d18934a9dc9a1..8c500f704b3423831f08b4d2d4ca3ab1821e0a77 100644 --- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb +++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M11.vb @@ -116,7 +116,7 @@ Namespace DownstreamModules Private ReadOnly Property Sum10 As Single Get - Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC \ Sum0(signals.EngineSpeed) + Return M6.AvgPowerDemandAtCrankFromElectricsIncHVAC / Sum0(signals.EngineSpeed) End Get End Property diff --git a/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb b/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb index 9af3bf48c12e614bc56e52e5186501e31f893f39..20019383d0a50cd3c8e5fc65a17ab1e2dd1bbdcc 100644 --- a/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb +++ b/VECTOAux/VectoAuxiliaries/DownstreamModules/M8.vb @@ -15,118 +15,129 @@ Imports VectoAuxiliaries.Pneumatics Imports VectoAuxiliaries.Hvac Namespace DownstreamModules + Public Class M8 + Implements IM8 - Public Class M8 - Implements IM8 - - #Region "Private Fields" - - private _m1 As IM1_AverageHVACLoadDemand - private _m6 As IM6 - private _m7 As IM7 - private _signals As ISignals - - #End Region - - #Region "Internal Sums and Switches" - - 'Internal Staged Sums and Switches - private ReadOnly Property Sum1 As Single - Get - Return _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank - End Get -End Property - private ReadOnly Property Sum2 As Single - Get - Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank +_m6.AveragePowerDemandAtCrankFromPneumatics - End Get -End Property - private ReadOnly Property Sum3 As Single - Get - Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC - End Get -End Property - private ReadOnly Property Sum4 As Single - Get - Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics - End Get -End Property - private ReadOnly Property Sum5 As Single - Get - Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5 - End Get -End Property - Private ReadOnly Property Sum6 As Single - Get - Return Sum5 * SW6 - End Get - End Property - Private ReadOnly Property SW1 As Single - Get - Return If( _signals.SmartPneumatics, Sum1, Sum2) - End Get - End Property - Private ReadOnly Property SW2 As Single - Get - Return If( _signals.SmartPneumatics,Sum3,Sum4) - End Get -End Property - Private ReadOnly Property SW3 As Single - Get - Return If(_signals.SmartPneumatics,_m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank,_m7.SmartElectricalOnlyAuxAltPowerGenAtCrank) - End Get -End Property - Private ReadOnly Property SW4 As integer - Get - Return If( _signals.SmartElectrics,_m6.SmartElecAndPneumaticsCompressorFlag,_m6.SmartPneumaticsOnlyCompressorFlag) - End Get -End Property - Private ReadOnly Property SW5 As Single - Get - Return If( _signals.SmartElectrics,SW1,SW2) - End Get - End Property - Private ReadOnly Property SW6 As Single - Get - Return If(_signals.EngineStopped, 0 , 1) - End Get - End Property +#Region "Private Fields" + + Private _m1 As IM1_AverageHVACLoadDemand + Private _m6 As IM6 + Private _m7 As IM7 + Private _signals As ISignals #End Region - - 'OUT1 - Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries - Get - Return Sum6 - End Get - End Property - 'OUT2 - Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single Implements IM8.SmartElectricalAlternatorPowerGenAtCrank - Get - Return SW3 - End Get - End Property - 'OUT3 - Public ReadOnly Property CompressorFlag As Integer Implements IM8.CompressorFlag - Get - Return SW4 - End Get - End Property - - 'Constructor - Public Sub new( m1 As IM1_AverageHVACLoadDemand, m6 As IM6, m7 As IM7, signals As ISignals) - - _m1=m1 - _m6=m6 - _m7=m7 - _signals=signals - - End Sub - - -End Class -End Namespace +#Region "Internal Sums and Switches" + + 'Internal Staged Sums and Switches + Private ReadOnly Property Sum1 As Single + Get + Return _ + _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank + _m7.SmartElectricalAndPneumaticAuxAirCompPowerGenAtCrank + End Get + End Property + + Private ReadOnly Property Sum2 As Single + Get + Return _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank + _m6.AveragePowerDemandAtCrankFromPneumatics + End Get + End Property + + Private ReadOnly Property Sum3 As Single + Get + Return _m7.SmartPneumaticOnlyAuxAirCompPowerGenAtCrank + _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + End Get + End Property + + Private ReadOnly Property Sum4 As Single + Get + Return _m6.AvgPowerDemandAtCrankFromElectricsIncHVAC + _m6.AveragePowerDemandAtCrankFromPneumatics + End Get + End Property + + Private ReadOnly Property Sum5 As Single + Get + Return _m1.AveragePowerDemandAtCrankFromHVACMechanicalsWatts + SW5 + End Get + End Property + + Private ReadOnly Property Sum6 As Single + Get + Return Sum5 * SW6 + End Get + End Property + + Private ReadOnly Property SW1 As Single + Get + Return If(_signals.SmartPneumatics, Sum1, Sum2) + End Get + End Property + + Private ReadOnly Property SW2 As Single + Get + Return If(_signals.SmartPneumatics, Sum3, Sum4) + End Get + End Property + + Private ReadOnly Property SW3 As Single + Get + Return _ + If _ + (_signals.SmartPneumatics, _m7.SmartElectricalAndPneumaticAuxAltPowerGenAtCrank, + _m7.SmartElectricalOnlyAuxAltPowerGenAtCrank) + End Get + End Property + + Private ReadOnly Property SW4 As Integer + Get + Return If(_signals.SmartElectrics, _m6.SmartElecAndPneumaticsCompressorFlag, _m6.SmartPneumaticsOnlyCompressorFlag) + End Get + End Property + + Private ReadOnly Property SW5 As Single + Get + Return If(_signals.SmartElectrics, SW1, SW2) + End Get + End Property + + Private ReadOnly Property SW6 As Single + Get + Return If(_signals.EngineStopped, 0, 1) + End Get + End Property +#End Region + + 'OUT1 + Public ReadOnly Property AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries As Single _ + Implements IM8.AuxPowerAtCrankFromElectricalHVACAndPneumaticsAncillaries + Get + Return Sum6 + End Get + End Property + 'OUT2 + Public ReadOnly Property SmartElectricalAlternatorPowerGenAtCrank As Single _ + Implements IM8.SmartElectricalAlternatorPowerGenAtCrank + Get + Return SW3 + End Get + End Property + 'OUT3 + Public ReadOnly Property CompressorFlag As Integer Implements IM8.CompressorFlag + Get + Return SW4 + End Get + End Property + + 'Constructor + Public Sub New(m1 As IM1_AverageHVACLoadDemand, m6 As IM6, m7 As IM7, signals As ISignals) + + _m1 = m1 + _m6 = m6 + _m7 = m7 + _signals = signals + End Sub + End Class +End Namespace diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb index a8d2ef5100f68076ae67d15216cf064eeebe80b0..1e88f01bcd04240967debdf0125bf5708bf3218b 100644 --- a/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb +++ b/VECTOAux/VectoAuxiliaries/Pneumatics/CompressorMap.vb @@ -108,7 +108,7 @@ Namespace Pneumatics ''' <param name="rpm">compressor rotation speed</param> ''' <returns></returns> ''' <remarks>Single</remarks> - Public Function GetFlowRate(ByVal rpm As Integer) As Single Implements ICompressorMap.GetFlowRate + Public Function GetFlowRate(ByVal rpm As Double) As Single Implements ICompressorMap.GetFlowRate Dim val As CompressorMapValues = InterpolatedTuple(rpm) Return val.FlowRate End Function @@ -119,7 +119,7 @@ Namespace Pneumatics ''' <param name="rpm">compressor rotation speed</param> ''' <returns></returns> ''' <remarks>Single</remarks> - Public Function GetPowerCompressorOn(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOn + Public Function GetPowerCompressorOn(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOn Dim val As CompressorMapValues = InterpolatedTuple(rpm) Return val.PowerCompressorOn End Function @@ -130,7 +130,7 @@ Namespace Pneumatics ''' <param name="rpm">compressor rotation speed</param> ''' <returns></returns> ''' <remarks>Single</remarks> - Public Function GetPowerCompressorOff(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOff + Public Function GetPowerCompressorOff(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOff Dim val As CompressorMapValues = InterpolatedTuple(rpm) Return val.PowerCompressorOff End Function @@ -140,7 +140,7 @@ Namespace Pneumatics ''' </summary> ''' <returns>CompressorMapValues</returns> ''' <remarks>Throws exception if rpm are outside map</remarks> - Private Function InterpolatedTuple(ByVal rpm As Integer) As CompressorMapValues + Private Function InterpolatedTuple(ByVal rpm As Double) As CompressorMapValues 'check the rpm is within the map Dim min As Integer = map.Keys.Min() Dim max As Integer = map.Keys.Max() diff --git a/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb b/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb index 683312eb845076a6a377d5b9427d903f63c120f3..42cebc7666f3a3e8d60a3954d8e374eead48df3f 100644 --- a/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb +++ b/VECTOAux/VectoAuxiliaries/Pneumatics/ICompressorMap.vb @@ -26,7 +26,7 @@ Namespace Pneumatics ''' <param name="rpm">compressor rotation speed</param> ''' <returns></returns> ''' <remarks>Single</remarks> - Function GetFlowRate(ByVal rpm As Integer) As Single + Function GetFlowRate(ByVal rpm As Double) As Single ''' <summary> ''' Returns mechanical power at rpm when compressor is on @@ -34,7 +34,7 @@ Namespace Pneumatics ''' <param name="rpm">compressor rotation speed</param> ''' <returns></returns> ''' <remarks>Single</remarks> - Function GetPowerCompressorOn(ByVal rpm As Integer) As Single + Function GetPowerCompressorOn(ByVal rpm As Double) As Single ''' <summary> ''' Returns mechanical power at rpm when compressor is off @@ -42,7 +42,7 @@ Namespace Pneumatics ''' <param name="rpm">compressor rotation speed</param> ''' <returns></returns> ''' <remarks>Single</remarks> - Function GetPowerCompressorOff(ByVal rpm As Integer) As Single + Function GetPowerCompressorOff(ByVal rpm As Double) As Single 'Returns Average Power Demand Per Compressor Unit FlowRate Function GetAveragePowerDemandPerCompressorUnitFlowRate() As Single diff --git a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb index 9fe1764afd2b83b4b8df6ea893c8333308eb6393..f726848898c80af4d0d48d2b373103182d4d0bce 100644 --- a/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb +++ b/VECTOAux/VectoAuxiliariesTests/Mocks/CompressorMapMock.vb @@ -19,15 +19,15 @@ Namespace Mocks End If End Function - Public Function GetFlowRate(ByVal rpm As Integer) As Single Implements ICompressorMap.GetFlowRate + Public Function GetFlowRate(ByVal rpm As Double) As Single Implements ICompressorMap.GetFlowRate Return 2.0 End Function - Public Function GetPowerCompressorOn(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOn + Public Function GetPowerCompressorOn(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOn Return 8.0 End Function - Public Function GetPowerCompressorOff(ByVal rpm As Integer) As Single Implements ICompressorMap.GetPowerCompressorOff + Public Function GetPowerCompressorOff(ByVal rpm As Double) As Single Implements ICompressorMap.GetPowerCompressorOff Return 5.0 End Function diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb index 39ad35d01546bc298107ac5b5322ade3ca6ccb03..76e513745b5afacaa25fef44889a0f4feeb1eaea 100644 --- a/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb +++ b/VectoCommon/AdvancedAuxiliaryInterfaces/ISignals.vb @@ -56,7 +56,7 @@ Public Interface ISignals ''' <value></value> ''' <returns></returns> ''' <remarks>RPM in old money - Vecto Input</remarks> - Property EngineSpeed As Integer + Property EngineSpeed As Double ''' <summary> ''' Smart Pneumatics diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb b/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb index 5e034fb3cdb1659b9f3db674c56cd1a2584601e6..0cada55b0331cbddbb0da75ab9ef30fbe058c778 100644 --- a/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb +++ b/VectoCommon/AdvancedAuxiliaryInterfaces/Signals.vb @@ -21,7 +21,7 @@ Public Class Signals Public Property EngineDrivelinePower As Single Implements ISignals.EngineDrivelinePower Public Property EngineDrivelineTorque As Single Implements ISignals.EngineDrivelineTorque Public Property EngineMotoringPower As Single Implements ISignals.EngineMotoringPower - Public Property EngineSpeed As Integer Implements ISignals.EngineSpeed + Public Property EngineSpeed As Double Implements ISignals.EngineSpeed Public Property SmartElectrics As Boolean Implements ISignals.SmartElectrics Get diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs index a3a4ec3ca58d520768a9fdde20acdf601531048c..991e49b884f66bc7060808c24c093024b89961c4 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BusAuxiliariesAdapter.cs @@ -194,8 +194,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl // smart aux should be on during braking } } - Auxiliaries.Signals.EngineMotoringPower = -(float)DataBus.EngineDragPower(angularSpeed).Value() / 1000; - Auxiliaries.Signals.EngineSpeed = (int)(angularSpeed.Value() / Constants.RPMToRad); + Auxiliaries.Signals.EngineMotoringPower = (float)(-DataBus.EngineDragPower(angularSpeed).Value() / 1000); + Auxiliaries.Signals.EngineSpeed = angularSpeed.Value() / Constants.RPMToRad; Auxiliaries.Signals.PreExistingAuxPower = 0; //mAAUX_Global.PreExistingAuxPower; Auxiliaries.Signals.Idle = DataBus.VehicleStopped; Auxiliaries.Signals.InNeutral = DataBus.Gear == 0;