Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

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

additional criteria for AT transmissions: if during a deceleration phase the...

additional criteria for AT transmissions: if during a deceleration phase the required motor speed goes below idle speed and thus no operating point can be found at all throw an exception. in case of such an exeption, disengage for the simulation interval and perform braking with disengaged powertrain
parent fe16b70d
No related branches found
No related tags found
No related merge requests found
......@@ -551,9 +551,20 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return retVal;
}
operatingPoint = SearchBrakingPower(absTime, operatingPoint.SimulationDistance, gradient,
operatingPoint.Acceleration, response);
var engaged = (DataBus as IGearboxInfo).DisengageGearbox;
try {
operatingPoint = SearchBrakingPower(
absTime, operatingPoint.SimulationDistance, gradient,
operatingPoint.Acceleration, response);
} catch (VectoSearchAbortedException vsa) {
Log.Warn("Search braking power aborted {0}", vsa);
if (DataBus.GearboxType.AutomaticTransmission()) {
(DataBus as IGearboxControl).DisengageGearbox = true;
operatingPoint = SearchBrakingPower(
absTime, operatingPoint.SimulationDistance, gradient,
operatingPoint.Acceleration, response);
}
}
if (!ds.IsEqual(operatingPoint.SimulationDistance, 1E-15.SI<Meter>())) {
Log.Info(
"SearchOperatingPoint Braking reduced the max. distance: {0} -> {1}. Issue new request from driving cycle!",
......@@ -648,7 +659,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
retVal.SimulationInterval = operatingPoint.SimulationInterval;
retVal.SimulationDistance = ds;
retVal.OperatingPoint = operatingPoint;
if (DataBus.GearboxType.AutomaticTransmission() && engaged != (DataBus as IGearboxInfo).DisengageGearbox) {
(DataBus as IGearboxControl).DisengageGearbox = engaged;
}
return retVal;
}
......@@ -794,6 +808,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
: response.GearboxPowerRequest;
return delta.Value();
},
abortCriterion: (result, i) => {
if (i < 7) {
return false;
}
var response = (ResponseDryRun)result;
if (response == null) {
return false;
}
return DataBus.GearboxType.AutomaticTransmission() && response.DeltaDragLoad.Value().IsSmallerOrEqual(-double.MaxValue / 20);
},
forceLineSearch: DataBus.GearboxType.AutomaticTransmission() && !DataBus.TCLocked);
return operatingPoint;
......
......@@ -310,7 +310,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var maxSpeed = VectoMath.Min(ModelData.TorqueConverterSpeedLimit, DataBus.EngineN95hSpeed);
for (var n = DataBus.EngineIdleSpeed;
n <= maxSpeed;
n += maxSpeed / 20) {
n += maxSpeed / 100) {
var tcOp = ModelData.FindOperatingPoint(n, outAngularVelocity);
var inTorque = CalculateAverageInTorque(tcOp);
var res = (ResponseDryRun)NextComponent.Request(absTime, dt, inTorque, tcOp.InAngularVelocity, true);
......
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