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

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

AT Model: improve shifting: don't disengage only when halt is intended,

torque converter: decision on max-power/drag power depends on driving behavior
parent 23d15ef8
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
......@@ -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);
......
......@@ -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,
......
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