Skip to content

Commit 906e402

Browse files
committed
Correct steam exhaust operation
1 parent 5c6dbc7 commit 906e402

File tree

1 file changed

+32
-9
lines changed

1 file changed

+32
-9
lines changed

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

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2099,6 +2099,9 @@ private void UpdateFX(float elapsedClockSeconds)
20992099
// Find
21002100
for (int i = 0; i < NumCylinders; i++)
21012101
{
2102+
2103+
// Trace.TraceInformation("NumCyl - {0} i {1}", NumCylinders, i);
2104+
21022105
// float realCrankAngleRad = (float)(LocomotiveAxle.AxlePositionRad + i * WheelCrankAngleDiffRad[i]);
21032106
float realCrankAngleRad = (float)(LocomotiveAxle.AxlePositionRad);
21042107
float normalisedCrankAngleRad = 0;
@@ -2132,43 +2135,51 @@ private void UpdateFX(float elapsedClockSeconds)
21322135
exhaustCrankAngleRad = CylinderExhaustOpenFactor * (float)Math.PI + (float)Math.PI;
21332136
}
21342137

2138+
// Trace.TraceInformation("Cylinder {0} ExhaustCrank {1} RealCrank {2} NormalCrank {3}", i + 1, MathHelper.ToDegrees(exhaustCrankAngleRad), MathHelper.ToDegrees(realCrankAngleRad), MathHelper.ToDegrees(normalisedCrankAngleRad));
2139+
21352140
if (absSpeedMpS > 0.001)
21362141
{
2137-
if (i == 0 && (normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad))
2142+
if (i == 0 && ((normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad)))
21382143
{
21392144
CylinderSteamExhaust1On = true;
2145+
2146+
// Trace.TraceInformation("Exhaust - Factor {0} ExhaustCrank {1} RealCrank {2} NormalCrank {3} Exhaust1On {4} Cylinder {5} i {6}", CylinderExhaustOpenFactor, MathHelper.ToDegrees(exhaustCrankAngleRad), MathHelper.ToDegrees(realCrankAngleRad), MathHelper.ToDegrees(normalisedCrankAngleRad), CylinderSteamExhaust1On, i + 1, i);
21402147
}
2141-
else
2148+
else if (i == 0)
21422149
{
21432150
CylinderSteamExhaust1On = false;
2151+
// Trace.TraceInformation("Test #1 {0}", CylinderSteamExhaust1On);
21442152
}
2145-
2146-
if (i == 1 && (normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad))
2153+
2154+
else if (i == 1 && ((normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad)))
21472155
{
21482156
CylinderSteamExhaust2On = true;
2157+
// Trace.TraceInformation("Exhaust - Factor {0} ExhaustCrank {1} RealCrank {2} NormalCrank {3} Exhaust2On {4} Cylinder {5} i {6}", CylinderExhaustOpenFactor, MathHelper.ToDegrees(exhaustCrankAngleRad), MathHelper.ToDegrees(realCrankAngleRad), MathHelper.ToDegrees(normalisedCrankAngleRad), CylinderSteamExhaust2On, i + 1, i);
21492158
}
2150-
else
2159+
else if (i ==1)
21512160
{
21522161
CylinderSteamExhaust2On = false;
21532162
}
21542163

21552164
// Trace.TraceInformation("Exhaust - Factor {0} ExhaustCrank {1} RealCrank {2} NormalCrank {3} ExhaustOn {4} Cylinder {5}", CylinderExhaustOpenFactor, MathHelper.ToDegrees(exhaustCrankAngleRad), MathHelper.ToDegrees(realCrankAngleRad), MathHelper.ToDegrees(normalisedCrankAngleRad), SteamExhaust1On, i+1);
21562165

21572166

2158-
if (i == 2 && (normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad))
2167+
else if (i == 2 && ((normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad)))
21592168
{
21602169
CylinderSteamExhaust3On = true;
2170+
// Trace.TraceInformation("Exhaust - Factor {0} ExhaustCrank {1} RealCrank {2} NormalCrank {3} Exhaust3On {4} Cylinder {5} i {6}", CylinderExhaustOpenFactor, MathHelper.ToDegrees(exhaustCrankAngleRad), MathHelper.ToDegrees(realCrankAngleRad), MathHelper.ToDegrees(normalisedCrankAngleRad), CylinderSteamExhaust3On, i + 1, i);
21612171
}
2162-
else
2172+
else if (i ==2)
21632173
{
21642174
CylinderSteamExhaust3On = false;
21652175
}
21662176

2167-
if (i == 3 && (normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad))
2177+
else if (i == 3 && ((normalisedCrankAngleRad <= MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad) || (normalisedCrankAngleRad < 2 * MathHelper.Pi && normalisedCrankAngleRad >= exhaustCrankAngleRad)))
21682178
{
21692179
CylinderSteamExhaust4On = true;
2180+
// Trace.TraceInformation("Exhaust - Factor {0} ExhaustCrank {1} RealCrank {2} NormalCrank {3} Exhaust4On {4} Cylinder {5} i {6}", CylinderExhaustOpenFactor, MathHelper.ToDegrees(exhaustCrankAngleRad), MathHelper.ToDegrees(realCrankAngleRad), MathHelper.ToDegrees(normalisedCrankAngleRad), CylinderSteamExhaust4On, i + 1, i);
21702181
}
2171-
else
2182+
else if (i == 3)
21722183
{
21732184
CylinderSteamExhaust4On = false;
21742185
}
@@ -6836,6 +6847,18 @@ public override string GetDebugStatus()
68366847
FormatStrings.FormatVolume(CurrentTrackSandBoxCapacityM3, IsMetric),
68376848
Simulator.Catalog.GetString("M/Press"),
68386849
MainResPressurePSI);
6850+
6851+
status.AppendFormat("\n{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\n",
6852+
Simulator.Catalog.GetString("CylE:"),
6853+
Simulator.Catalog.GetString("#1"),
6854+
CylinderSteamExhaust1On ? Simulator.Catalog.GetString("Yes") : Simulator.Catalog.GetString("No"),
6855+
Simulator.Catalog.GetString("#2"),
6856+
CylinderSteamExhaust2On ? Simulator.Catalog.GetString("Yes") : Simulator.Catalog.GetString("No"),
6857+
Simulator.Catalog.GetString("#3"),
6858+
CylinderSteamExhaust3On ? Simulator.Catalog.GetString("Yes") : Simulator.Catalog.GetString("No"),
6859+
Simulator.Catalog.GetString("#4"),
6860+
CylinderSteamExhaust4On ? Simulator.Catalog.GetString("Yes") : Simulator.Catalog.GetString("No"));
6861+
68396862
}
68406863

68416864
#if DEBUG_STEAM_EFFECTS

0 commit comments

Comments
 (0)