diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATGearbox.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATGearbox.cs index 7d90d40b715c91f979acee4907748daa89e40c12..c9c252655f0d3ce6bd29049798c88e97585458af 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATGearbox.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATGearbox.cs @@ -191,7 +191,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (!dryRun && ((DataBus.VehicleStopped && outAngularVelocity > 0) || - (CurrentState.Disengaged && outTorque.IsGreater(0)))) { + (CurrentState.Disengaged && outTorque.IsGreater(0, 1e-3)))) { Gear = 1; CurrentState.TorqueConverterLocked = false; LastShift = absTime; @@ -224,6 +224,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl outTorque * (PreviousState.OutAngularVelocity + outAngularVelocity) / 2.0 }; _requestAfterGearshift = true; + LastShift = absTime; } else { loop = true; Gear = _strategy.Engage(absTime, dt, outTorque, outAngularVelocity); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs index d87ab3fd9bb42e6c4fb47b4c0bcd9efd5f557415..291ba5b6b212af9fc3366b0003034a21d576d01d 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ATShiftStrategy.cs @@ -135,7 +135,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl // 3) 1C -> 0: disengange when negative T_out and positive T_in var gear1C = gear == 1 && !_gearbox.TorqueConverterLocked; - var disengageTOutNegativeAndTInPositive = gear1C && outTorque.IsSmaller(0) && inTorque.IsGreater(0); + var disengageTOutNegativeAndTInPositive = DataBus.DriverAcceleration <= 0 && gear1C && outTorque.IsSmaller(0) && inTorque.IsGreater(0); var disengageTCEngineSpeedLowerIdle = braking && torqueNegative && gear1C && inAngularVelocity.IsSmallerOrEqual(DataBus.EngineIdleSpeed); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs index 5d7e05c2f70ec48b09f23e6e97c49d712a666c41..1e56ddad7b93a0ba778d2a8807924eb6202391fc 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/TorqueConverter.cs @@ -111,7 +111,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl //if (false && DataBus.VehicleStopped && DataBus.DriverBehavior == DrivingBehavior.Driving && outTorque.IsGreater(0)) { // dryOperatingPoint = ModelData.FindOperatingPoint(DataBus.EngineIdleSpeed, outAngularVelocity); //} else { - dryOperatingPoint = outTorque.IsGreater(0) && DataBus.BrakePower.IsEqual(0) + dryOperatingPoint = (DataBus.DriverBehavior != DrivingBehavior.Braking) || (outTorque.IsGreater(0) && DataBus.BrakePower.IsEqual(0)) ? GetMaxPowerOperatingPoint(dt, outAngularVelocity, engineResponse, PreviousState.InTorque * PreviousState.InAngularVelocity) : GetDragPowerOperatingPoint(dt, outAngularVelocity, engineResponse,