Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

Merge branch 'amdm2/bug/34-retrycount-exceeded' into 'amdm2/develop'

Amdm2/bug/34 retrycount exceeded

See merge request vecto!16
parents 906c478f 92c68b5c
No related branches found
No related tags found
No related merge requests found
...@@ -36,12 +36,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -36,12 +36,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
private HybridStrategyResponse CurrentStrategySettings; private HybridStrategyResponse CurrentStrategySettings;
protected DebugData DebugData = new DebugData(); protected DebugData DebugData = new DebugData();
private readonly IVehicleContainer _vehicleContainer;
public HybridController(IVehicleContainer container, IHybridControlStrategy strategy, IElectricSystem es) : base(container) public HybridController(IVehicleContainer container, IHybridControlStrategy strategy, IElectricSystem es) : base(container)
{ {
_electricMotorCtl = new Dictionary<PowertrainPosition, ElectricMotorController>(); _electricMotorCtl = new Dictionary<PowertrainPosition, ElectricMotorController>();
_vehicleContainer = container;
switch (container.RunData.GearboxData.Type) { switch (container.RunData.GearboxData.Type) {
case GearboxType.ATPowerSplit: case GearboxType.ATPowerSplit:
case GearboxType.ATSerial: case GearboxType.ATSerial:
...@@ -148,11 +149,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -148,11 +149,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
CurrentState.StrategyResponse = strategySettings; CurrentState.StrategyResponse = strategySettings;
} }
var gearShiftResponse = ShiftGear(strategySettings, dryRun, absTime, dt); var gearShiftResponse = ShiftGear(strategySettings, dryRun, absTime, dt, out var retryAfterGearshift);
if (gearShiftResponse != null) { if (gearShiftResponse != null) {
return gearShiftResponse; return gearShiftResponse;
} }
retry = retryAfterGearshift;
if (!dryRun /*&& DataBus.VehicleInfo.VehicleStopped*/) { if (!dryRun /*&& DataBus.VehicleInfo.VehicleStopped*/) {
SelectedGear = GetNextGear(strategySettings); SelectedGear = GetNextGear(strategySettings);
} }
...@@ -228,17 +231,26 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -228,17 +231,26 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return modifiedResponse; return modifiedResponse;
} }
protected virtual AbstractResponse ShiftGear(HybridStrategyResponse strategySettings, bool dryRun, Second absTime, Second dt) protected virtual AbstractResponse ShiftGear(HybridStrategyResponse strategySettings, bool dryRun, Second absTime, Second dt, out bool retry)
{ {
retry = false;
if (!dryRun && strategySettings.ShiftRequired) { if (!dryRun && strategySettings.ShiftRequired) {
var oldGear = DataBus.GearboxInfo.Gear;
DataBus.GearboxCtl.TriggerGearshift(absTime, dt); DataBus.GearboxCtl.TriggerGearshift(absTime, dt);
_shiftStrategy.SetNextGear(strategySettings.NextGear); _shiftStrategy.SetNextGear(strategySettings.NextGear);
SelectedGear = strategySettings.NextGear; SelectedGear = strategySettings.NextGear;
if (!DataBus.GearboxInfo.GearboxType.AutomaticTransmission()) { if (!DataBus.GearboxInfo.GearboxType.AutomaticTransmission()) {
return new ResponseGearShift(this); return new ResponseGearShift(this);
} }
else if (_vehicleContainer.RunData.HybridStrategyParameters.MaxPropulsionTorque
?.GetVECTOValueOrDefault(oldGear) != null)
{
retry = true;
}
} }
return null; return null;
......
...@@ -39,8 +39,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -39,8 +39,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
} }
} }
protected override AbstractResponse ShiftGear(HybridStrategyResponse strategySettings, bool dryRun, Second absTime, Second dt) protected override AbstractResponse ShiftGear(HybridStrategyResponse strategySettings, bool dryRun, Second absTime, Second dt, out bool retry)
{ {
retry = false;
return null; return null;
} }
......
...@@ -92,6 +92,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies ...@@ -92,6 +92,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
TestPowertrain.CombustionEngine.UpdateFrom(DataBus.EngineInfo); TestPowertrain.CombustionEngine.UpdateFrom(DataBus.EngineInfo);
TestPowertrain.Gearbox.UpdateFrom(DataBus.GearboxInfo); TestPowertrain.Gearbox.UpdateFrom(DataBus.GearboxInfo);
TestPowertrain.Clutch.UpdateFrom(DataBus.ClutchInfo); TestPowertrain.Clutch.UpdateFrom(DataBus.ClutchInfo);
TestPowertrain.Brakes.UpdateFrom(DataBus.Brakes);
var pos = ModelData.ElectricMachinesData.FirstOrDefault().Item1; var pos = ModelData.ElectricMachinesData.FirstOrDefault().Item1;
TestPowertrain.ElectricMotor.UpdateFrom(DataBus.ElectricMotorInfo(pos)); TestPowertrain.ElectricMotor.UpdateFrom(DataBus.ElectricMotorInfo(pos));
foreach (var emPos in TestPowertrain.ElectricMotorsUpstreamTransmission.Keys) { foreach (var emPos in TestPowertrain.ElectricMotorsUpstreamTransmission.Keys) {
...@@ -851,7 +852,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies ...@@ -851,7 +852,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies
var disengageSpeedThreshold = ModelData.GearboxData.DisengageWhenHaltingSpeed; var disengageSpeedThreshold = ModelData.GearboxData.DisengageWhenHaltingSpeed;
// hint: only check for halting speed if vehicle is actually braking to halt. // hint: only check for halting speed if vehicle is actually braking to halt.
var vehiclespeedBelowThreshold = DataBus.VehicleInfo.VehicleSpeed.IsSmaller(disengageSpeedThreshold) var vehicleEndSpeed = DataBus.VehicleInfo.VehicleSpeed +
DataBus.DriverInfo.DriverAcceleration * ModelData.GearboxData.TractionInterruption;
var vehiclespeedBelowThreshold = vehicleEndSpeed.IsSmaller(disengageSpeedThreshold)
&& (DataBus.DriverInfo.NextBrakeTriggerSpeed?.IsEqual(0) ?? false); && (DataBus.DriverInfo.NextBrakeTriggerSpeed?.IsEqual(0) ?? false);
if (!ElectricMotorCanPropellDuringTractionInterruption && !DataBus.GearboxInfo.GearEngaged(absTime)) { if (!ElectricMotorCanPropellDuringTractionInterruption && !DataBus.GearboxInfo.GearEngaged(absTime)) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment