diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index 943ffed1da5fdce4a5ab0e0524df0e95fb5e8077..b27574109a453b6237a21d7edf005e3ae861c308 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -572,8 +572,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies dryRunResponse.ElectricMotor.AvgDrivetrainSpeed; var gbxOutTqV = dryRunResponse.Gearbox.OutputTorque - emTq; - var prevGbxSpeed = (DataBus.GearboxInfo as AbstractGearbox<GearboxState>).PreviousState - .OutAngularVelocity; + var prevGbxSpeed = GetPrevGbxSpeed(); var gbxLoss = ModelData.GearboxData.Gears[gear.Gear].LossMap .GetTorqueLoss((dryRunResponse.Gearbox.OutputSpeed + prevGbxSpeed) / 2.0, gbxOutTqV); gbxInTq = gbxOutTqV / ModelData.GearboxData.Gears[gear.Gear].Ratio + gbxLoss.Value; @@ -597,8 +596,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies gbxInTorque = anglInTorque; } var gear = dryRunResponse.Gearbox.Gear; - var prevGbxSpeed = (DataBus.GearboxInfo as AbstractGearbox<GearboxState>).PreviousState - .OutAngularVelocity; + var prevGbxSpeed = GetPrevGbxSpeed(); var gbxLoss = ModelData.GearboxData.Gears[gear.Gear].LossMap .GetTorqueLoss((dryRunResponse.Gearbox.OutputSpeed + prevGbxSpeed) / 2.0, gbxInTorque); gbxInTq = gbxInTorque / ModelData.GearboxData.Gears[gear.Gear].Ratio + gbxLoss.Value; @@ -609,6 +607,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies return gbxInTq; } + private PerSecond GetPrevGbxSpeed() + { + switch (DataBus.GearboxInfo) { + case Gearbox gbx: + return gbx.PreviousState.OutAngularVelocity; + case ATGearbox atGbx: + return atGbx.PreviousState.OutAngularVelocity; + default: throw new VectoException("Unsupported gearbox type!"); + } + } + public void OperatingpointChangedDuringRequest(Second absTime, Second dt, NewtonMeter outTorque, PerSecond outAngularVelocity, bool dryRun, IResponse retVal) diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P2/P2 Group 5_LimitVehiclePropTq.vecto b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P2/P2 Group 5_LimitVehiclePropTq.vecto index 1d9670246f14cfeadbea10e851c1bb20d8534eeb..cd2de6775748e972587df0f68c1ba5fbb00f6b56 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P2/P2 Group 5_LimitVehiclePropTq.vecto +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P2/P2 Group 5_LimitVehiclePropTq.vecto @@ -17,7 +17,6 @@ "AuxiliaryAssembly": "Classic", "AuxiliaryVersion": "CLASSIC", "AdvancedAuxiliaryFilePath": "", - "Aux": [], "Padd": 3000.0, "Padd_electric": 0.0, "VACC": "Vehicle\\Truck.vacc", diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P3_APT/P3 APT Group 5_LimitVehiclePropTq.vecto b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P3_APT/P3 APT Group 5_LimitVehiclePropTq.vecto index 66759402c4058b416d4a5ebf4210e032a5f1bab0..a739bc00dcfaf077175efacf28c2cb83ba953020 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P3_APT/P3 APT Group 5_LimitVehiclePropTq.vecto +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/2nd_AmendmDeclMode/JSON/P_HEV/Group5_P3_APT/P3 APT Group 5_LimitVehiclePropTq.vecto @@ -17,7 +17,6 @@ "AuxiliaryAssembly": "Classic", "AuxiliaryVersion": "CLASSIC", "AdvancedAuxiliaryFilePath": "", - "Aux": [], "Padd": 3000.0, "Padd_electric": 0.0, "VACC": "Vehicle\\Truck.vacc",