Skip to content

Commit

Permalink
Automatic merge of T1.4-44-gf92b5fa09 and 8 pull requests
Browse files Browse the repository at this point in the history
- Pull request #480 at 7815b89: Blueprint https://blueprints.launchpad.net/or/+spec/digital-alignment-in-3dcabs
- Pull request #510 at 1ac4334: Add performance monitoring for diesel mechanic locomotives and new parameters
- Pull request #519 at 94c4637: Website changes for Release v1.4
- Pull request #522 at 78c046c: Correct issue with tender water mass
- Pull request #525 at 41d74e4: Add SignalTypeName and DrawStateName to SignalFeatures
- Pull request #526 at 2bfe684: Bug fix for https://bugs.launchpad.net/or/+bug/1949292 AI train disappears after coupling and reversing
- Pull request #527 at c786144: Brake cuts power refactor and new parameters
- Pull request #528 at 212eba1: Updated link to Siskiyou Route site
  • Loading branch information
openrails-bot committed Nov 1, 2021
10 parents 55e1118 + f92b5fa + 7815b89 + 1ac4334 + 94c4637 + 78c046c + 41d74e4 + 2bfe684 + c786144 + 212eba1 commit 456d2f2
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3368,6 +3368,7 @@ public virtual void StartGearBoxIncrease()
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
dieselloco.DieselEngines[0].GearBox.clutchOn = false;
dieselloco.DieselEngines[0].GearBox.ManualGearChange = true;

}
else if (dieselloco.DieselEngines[0].GearBox.Gears[0].TypeGearBox == 3)
Expand Down Expand Up @@ -3427,6 +3428,7 @@ public virtual void StartGearBoxDecrease()
AlerterReset(TCSEvent.GearBoxChanged);
SignalGearBoxChangeEvents();
dieselloco.DieselEngines[0].GearBox.clutchOn = false;
dieselloco.DieselEngines[0].GearBox.ManualGearChange = true;
}
else if (dieselloco.DieselEngines[0].GearBox.Gears[0].TypeGearBox == 3)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -997,11 +997,27 @@ public void Update(float elapsedClockSeconds)
else
GearBox.ClutchPercent = 100f;

if (GearBox.CurrentGear != null)
if (GearBox.CurrentGear != null && !GearBox.ManualGearChange)
{
// When clutch is engage (true) engine rpm should follow wheel shaft speed
if (GearBox.IsClutchOn)
DemandedRPM = GearBox.ShaftRPM;
}
else if (GearBox.ManualGearChange)
{
// During a manual gear change reduce engine shaft speed to match wheel shaft speed
DemandedRPM = IdleRPM;
if (RealRPM <= GearBox.ShaftRPM)
{
GearBox.ManualGearChange = false;
}
}

if (RealRPM < 0.8f * IdleRPM && ThrottlePercent > 0)
{
HandleEvent(PowerSupplyEvent.StopEngine);
Simulator.Confirmer.Message(ConfirmLevel.Warning, Simulator.Catalog.GetString("Diesel Engine has stalled."));
}
}

}
Expand Down Expand Up @@ -1201,6 +1217,7 @@ public void Update(float elapsedClockSeconds)
GearBox.NextGear = null;
}
}

if (GearBox.CurrentGear == null)
OutputPowerW = 0f;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void Parse(string lowercasetoken, STFReader stf)
{
case "engine(gearboxnumberofgears": GearBoxNumberOfGears = stf.ReadIntBlock(1); initLevel++; break;
case "engine(gearboxdirectdrivegear": GearBoxDirectDriveGear = stf.ReadIntBlock(1); break; // initLevel++; break;
case "engine(ortsgearboxtype": GearBoxType = stf.ReadIntBlock(1); Trace.TraceInformation("Read - {0}", GearBoxType); break; // default = 1
case "engine(ortsgearboxtype": GearBoxType = stf.ReadIntBlock(1); break; // default = 1
case "engine(gearboxoperation":
temp = stf.ReadStringBlock("manual");
switch (temp)
Expand Down Expand Up @@ -253,6 +253,11 @@ public void AutoAtGear()
gearedDown = false;
}

/// <summary>
/// Indicates when a manual gear change has been initiated
/// </summary>
public bool ManualGearChange;

/// <summary>
/// ClutchOn is true when clutch is fully engaged, and false when slipping
/// </summary>
Expand Down Expand Up @@ -392,7 +397,17 @@ public float TractiveForceN

if (GearBoxOperation == GearBoxOperation.Manual || (GearBoxOperation != GearBoxOperation.Manual && ClutchPercent >= -20))
{
float tractiveForceN = DieselEngine.DieselTorqueTab[DieselEngine.RealRPM] / DieselEngine.DieselTorqueTab.MaxY() * CurrentGear.MaxTractiveForceN;
// Allow rpm to go below idle for display purposes, but not for calculation - creates -ve te
float dieselRpM = 0;
if (DieselEngine.RealRPM < DieselEngine.IdleRPM)
{
dieselRpM = DieselEngine.IdleRPM;
}
else
{
dieselRpM = DieselEngine.RealRPM;
}
float tractiveForceN = DieselEngine.DieselTorqueTab[dieselRpM] / DieselEngine.DieselTorqueTab.MaxY() * CurrentGear.MaxTractiveForceN;


// Limit tractive force if engine is governed, ie speed cannot exceed the governed speed
Expand All @@ -408,7 +423,7 @@ public float TractiveForceN
tractiveForceN = MathHelper.Clamp(tractiveForceN, 0.0f, CurrentGear.MaxTractiveForceN); // Clamp tractive effort so that it doesn't go below zero
}

// Trace.TraceInformation("Geared Tractive Effort #1 - Driving - TE: {0} lbf, RpM: {1}, Torque: {2} lb-ft, Throttle%: {3}, MaxTorque: {4} lb-ft, MaxTE {5} lbf, Speed: {6} mph, Clutch {7}, Gear: {8} IsClutchOn {9} Shaft RpM {10}", tractiveForceN * 0.224809f, DieselEngine.RealRPM, DieselEngine.DieselTorqueTab[DieselEngine.RealRPM] * 0.737562f, DieselEngine.DemandedThrottlePercent, DieselEngine.DieselTorqueTab.MaxY(), CurrentGear.MaxTractiveForceN * 0.224809f, CurrentSpeedMpS * 2.23694f, ClutchPercent, Locomotive.GearBoxController.CurrentNotch, IsClutchOn, ShaftRPM);
// Trace.TraceInformation("Geared Tractive Effort #1 - Driving - TE: {0} lbf, RpM: {1}, Torque: {2} lb-ft, Throttle%: {3}, MaxTorque: {4} lb-ft, MaxTE {5} lbf, Speed: {6} mph, Clutch {7}, Gear: {8} IsClutchOn {9} Shaft RpM {10} DemandedRpM {11}", tractiveForceN * 0.224809f, DieselEngine.RealRPM, DieselEngine.DieselTorqueTab[DieselEngine.RealRPM] * 0.737562f, DieselEngine.DemandedThrottlePercent, DieselEngine.DieselTorqueTab.MaxY(), CurrentGear.MaxTractiveForceN * 0.224809f, CurrentSpeedMpS * 2.23694f, ClutchPercent, Locomotive.GearBoxController.CurrentNotch, IsClutchOn, ShaftRPM, DieselEngine.DemandedRPM);

if (CurrentSpeedMpS > 0)
{
Expand All @@ -419,6 +434,12 @@ public float TractiveForceN

}

// When a manual gear change is initiated, then reduce motive to zero whilst gear change is occurring
if (ManualGearChange)
{
tractiveForceN = 0;
}

return tractiveForceN;

}
Expand Down

0 comments on commit 456d2f2

Please sign in to comment.