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

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

set gearbox disengage speed for AT transmissions based on downshift line in first locked gear

parent ece25b29
No related branches found
No related tags found
No related merge requests found
......@@ -362,6 +362,18 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
retVal.TorqueConverterData.CertificationNumber = torqueConverter.CertificationNumber;
}
// update disengageWhenHaltingSpeed
if (retVal.Type.AutomaticTransmission()) {
var firstGear = retVal.GearList.First(x => x.IsLockedGear());
if (retVal.Gears[firstGear.Gear].ShiftPolygon.Downshift.Any()) {
var downshiftSpeedInc = retVal.Gears[firstGear.Gear].ShiftPolygon
.InterpolateDownshiftSpeed(0.SI<NewtonMeter>()) * 1.05;
var vehicleSpeedDisengage = downshiftSpeedInc / axlegearRatio / retVal.Gears[firstGear.Gear].Ratio *
dynamicTyreRadius;
retVal.DisengageWhenHaltingSpeed = vehicleSpeedDisengage;
}
}
return retVal;
}
......
......@@ -333,6 +333,18 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
gearshiftData.CLUpshiftMinAcceleration, gearshiftData.CCUpshiftMinAcceleration);
}
// update disengageWhenHaltingSpeed
if (retVal.Type.AutomaticTransmission()) {
var firstGear = retVal.GearList.First(x => x.IsLockedGear());
if (retVal.Gears[firstGear.Gear].ShiftPolygon.Downshift.Any()) {
var downshiftSpeedInc = retVal.Gears[firstGear.Gear].ShiftPolygon
.InterpolateDownshiftSpeed(0.SI<NewtonMeter>()) * 1.05;
var vehicleSpeedDisengage = downshiftSpeedInc / axlegearRatio / retVal.Gears[firstGear.Gear].Ratio *
dynamicTyreRadius;
retVal.DisengageWhenHaltingSpeed = vehicleSpeedDisengage;
}
}
return retVal;
}
......
......@@ -38,6 +38,7 @@ using System.Runtime.Serialization;
using Newtonsoft.Json;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
......@@ -52,6 +53,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
public class GearboxData : SimulationComponentData
{
private GearList _gearlist;
private MeterPerSecond _disengageWhenHaltingSpeed;
public GearboxType Type { get; internal set; }
......@@ -73,6 +75,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
[JsonIgnore]
public GearList GearList => _gearlist ?? (_gearlist = CreateGearList());
public MeterPerSecond DisengageWhenHaltingSpeed {
get {
return _disengageWhenHaltingSpeed != null
? _disengageWhenHaltingSpeed
: (Type.AutomaticTransmission()
? Constants.SimulationSettings.ATGearboxDisengageWhenHaltingSpeed
: Constants.SimulationSettings.ClutchDisengageWhenHaltingSpeed);
}
internal set {
_disengageWhenHaltingSpeed = value;
}
}
private GearList CreateGearList()
{
var gearList = new List<GearshiftPosition>();
......
......@@ -157,7 +157,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var braking = DataBus.DriverInfo.DriverBehavior == DrivingBehavior.Braking;
var torqueNegative = outTorque.IsSmaller(0);
var slowerThanDisengageSpeed =
DataBus.VehicleInfo.VehicleSpeed.IsSmaller(Constants.SimulationSettings.ATGearboxDisengageWhenHaltingSpeed);
DataBus.VehicleInfo.VehicleSpeed.IsSmaller(GearboxModelData.DisengageWhenHaltingSpeed);
var disengageBeforeHalting = braking && torqueNegative && slowerThanDisengageSpeed;
// 2) L -> 0: disengage if inAngularVelocity == 0
......
......@@ -258,7 +258,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
(inAngularVelocity.IsSmaller(DataBus.EngineInfo.EngineIdleSpeed))) &&
(DataBus.Brakes.BrakePower.IsGreater(0) || inTorque.IsSmaller(0));
var vehicleSpeedBelowThreshold =
DataBus.VehicleInfo.VehicleSpeed.IsSmaller(Constants.SimulationSettings.ClutchDisengageWhenHaltingSpeed);
DataBus.VehicleInfo.VehicleSpeed.IsSmaller(ModelData.DisengageWhenHaltingSpeed);
if (halted || (driverDeceleratingNegTorque && vehicleSpeedBelowThreshold)) {
EngageTime = VectoMath.Max(EngageTime, absTime + dt);
_strategy?.Disengage(absTime, dt, outTorque, outAngularVelocity);
......
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