@@ -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