Skip to content

Commit 28fe751

Browse files
committed
Update booster control
1 parent 0188799 commit 28fe751

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/MSTSSteamLocomotive.cs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2343,14 +2343,14 @@ public override void Update(float elapsedClockSeconds)
23432343
// Trace.TraceInformation("Idle Mode - Timer {0} GearPeriod {1} Reset {2} BoosterHeating {3} Sync {4}", BoosterIdleHeatingTimerS, BoosterGearEngageTimePeriodS, BoosterIdleHeatingTimerReset, BoosterIdleHeatingTimePeriodS, BoosterGearSyncTimePeriodS);
23442344
}
23452345
// Run mode
2346-
else if (SteamBoosterAirOpen && SteamBoosterIdle && SteamBoosterLatchedLocked && !BoosterAirisLow && throttle > 0.01)
2346+
else if (SteamBoosterAirOpen && SteamBoosterIdle && !BoosterAirisLow)
23472347
{
23482348
SteamBoosterIdleMode = false;
23492349
SteamBoosterRunMode = true;
23502350

23512351
// Trace.TraceInformation("Run Mode - Timer {0} GearPeriod {1}", BoosterGearEngageTimeS, BoosterGearEngageTimePeriodS);
23522352

2353-
if (BoosterGearEngageTimerS > BoosterGearEngageTimePeriodS) // Booster gears engaged
2353+
if (BoosterGearEngageTimerS > BoosterGearEngageTimePeriodS && SteamBoosterLatchedLocked && throttle > 0.01) // Booster gears engaged
23542354
{
23552355
enginethrottle = throttle;
23562356
BoosterCylinderSteamExhaustOn = true;
@@ -2427,12 +2427,23 @@ public override void Update(float elapsedClockSeconds)
24272427

24282428
// Calculate steam pressure for booster steam gauge
24292429
if (SteamEngines[i].AuxiliarySteamEngineType == SteamEngine.AuxiliarySteamEngineTypes.Booster)
2430-
{
2431-
if (SteamEngines[i].LogSteamChestPressurePSI > CabSteamChestPressurePSI && SteamBoosterRunMode && SteamBoosterAirOpen)
2430+
{
2431+
if (SteamBoosterRunMode && SteamEngines[i].LogSteamChestPressurePSI > PrevCabSteamBoosterPressurePSI)
24322432
{
24332433
CabSteamBoosterPressurePSI = SteamEngines[i].LogSteamChestPressurePSI;
24342434
PrevCabSteamBoosterPressurePSI = CabSteamBoosterPressurePSI;
24352435
}
2436+
else if (SteamBoosterRunMode && SteamEngines[i].LogSteamChestPressurePSI < PrevCabSteamBoosterPressurePSI)
2437+
{
2438+
var DesiredBoosterPressure = SteamEngines[i].LogSteamChestPressurePSI;
2439+
2440+
if (DesiredBoosterPressure < PrevCabSteamBoosterPressurePSI)
2441+
{
2442+
CabSteamBoosterPressurePSI = PrevCabSteamBoosterPressurePSI - 1;
2443+
CabSteamBoosterPressurePSI = MathHelper.Clamp(CabSteamBoosterPressurePSI, 0, MaxBoilerPressurePSI);
2444+
PrevCabSteamBoosterPressurePSI = CabSteamBoosterPressurePSI;
2445+
}
2446+
}
24362447
else if (SteamBoosterIdleMode)
24372448
{
24382449
var DesiredBoosterPressure = (BoosterIdleChokeSizeIn / BoosterMaxIdleChokeSizeIn) * BoilerPressurePSI;
@@ -2443,8 +2454,12 @@ public override void Update(float elapsedClockSeconds)
24432454
CabSteamBoosterPressurePSI = MathHelper.Clamp(CabSteamBoosterPressurePSI, 0, MaxBoilerPressurePSI);
24442455
PrevCabSteamBoosterPressurePSI = CabSteamBoosterPressurePSI;
24452456
}
2457+
else
2458+
{
2459+
CabSteamBoosterPressurePSI = PrevCabSteamBoosterPressurePSI;
2460+
}
24462461
}
2447-
else
2462+
else // Booster disabled
24482463
{
24492464
var DesiredBoosterPressure = 0;
24502465

@@ -2453,16 +2468,10 @@ public override void Update(float elapsedClockSeconds)
24532468
CabSteamBoosterPressurePSI = PrevCabSteamBoosterPressurePSI - 1;
24542469
CabSteamBoosterPressurePSI = MathHelper.Clamp(CabSteamBoosterPressurePSI, 0, MaxBoilerPressurePSI);
24552470
PrevCabSteamBoosterPressurePSI = CabSteamBoosterPressurePSI;
2456-
}
2471+
}
24572472
}
24582473
}
24592474

2460-
if (SteamEngines[i].LogSteamChestPressurePSI > CabSteamChestPressurePSI && SteamEngines[i].AuxiliarySteamEngineType == SteamEngine.AuxiliarySteamEngineTypes.Booster)
2461-
{
2462-
CabSteamBoosterPressurePSI = SteamEngines[i].LogSteamChestPressurePSI;
2463-
}
2464-
2465-
24662475
if (SteamEngines[i].MeanEffectivePressurePSI > MeanEffectivePressurePSI)
24672476
{
24682477
MeanEffectivePressurePSI = SteamEngines[i].MeanEffectivePressurePSI;

0 commit comments

Comments
 (0)