Skip to content

Commit 7ff949b

Browse files
committed
Distributed Power: use ORTS_SIGNED_TRACTION_BRAKING to compute load
1 parent 394972a commit 7ff949b

File tree

2 files changed

+40
-9
lines changed

2 files changed

+40
-9
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/MSTSDieselLocomotive.cs

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ public string GetDPDebugStatus()
929929
return status.ToString();
930930
}
931931

932-
public string GetDpuStatus(bool dataDpu, CABViewControlUnits loadUnits = CABViewControlUnits.KILO_LBS)// used by the TrainDpuInfo window
932+
public string GetDpuStatus(bool dataDpu, CABViewControlUnits loadUnits = CABViewControlUnits.NONE)// used by the TrainDpuInfo window
933933
{
934934
string throttle = "";
935935
if (ThrottlePercent > 0)
@@ -968,15 +968,46 @@ public string GetDpuStatus(bool dataDpu, CABViewControlUnits loadUnits = CABView
968968
status.AppendFormat("{0}\t", throttle);
969969

970970
// Load
971-
var data = 0.0f;
972-
if (ThrottlePercent > 0)
971+
var data = 0f;
972+
if (FilteredMotiveForceN != 0)
973+
data = Math.Abs(this.FilteredMotiveForceN);
974+
else
975+
data = Math.Abs(this.LocomotiveAxle.DriveForceN);
976+
if (DynamicBrakePercent > 0)
973977
{
974-
if (FilteredMotiveForceN != 0)
975-
data = FilteredMotiveForceN / MaxForceN * MaxCurrentA;
976-
else
977-
data = LocomotiveAxle.DriveForceN / MaxForceN * MaxCurrentA;
978+
data = -Math.Abs(DynamicBrakeForceN);
979+
}
980+
if (loadUnits == CABViewControlUnits.NONE)
981+
loadUnits = IsMetric ? CABViewControlUnits.AMPS : CABViewControlUnits.KILO_LBS;
982+
switch (loadUnits)
983+
{
984+
case CABViewControlUnits.AMPS:
985+
if (ThrottlePercent > 0)
986+
{
987+
data = (data / MaxForceN) * MaxCurrentA;
988+
}
989+
if (DynamicBrakePercent > 0)
990+
{
991+
data = (data / MaxDynamicBrakeForceN) * DynamicBrakeMaxCurrentA;
992+
}
993+
status.AppendFormat("{0:F0} amps\t", data);
994+
break;
995+
996+
case CABViewControlUnits.NEWTONS:
997+
status.AppendFormat("{0:F0} N\t", data);
998+
break;
999+
1000+
case CABViewControlUnits.KILO_NEWTONS:
1001+
data = data / 1000.0f;
1002+
status.AppendFormat("{0:F0} kN\t", data);
1003+
break;
1004+
1005+
case CABViewControlUnits.KILO_LBS:
1006+
default:
1007+
data = N.ToLbf(data) * 0.001f;
1008+
status.AppendFormat("{0:F0} klbf\t", data);
1009+
break;
9781010
}
979-
status.AppendFormat("{0:F0} amps\t", Math.Abs(data));
9801011

9811012
// BP
9821013
var brakeInfoValue = brakeValue(Simulator.Catalog.GetString("BP"), Simulator.Catalog.GetString("EOT"));

Source/RunActivity/Viewer3D/RollingStock/SubSystems/DistributedPowerInterface.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public void ExitWindow(DPIWindow window)
157157
public class DPDefaultWindow : DPIWindow
158158
{
159159
public bool FullTable;
160-
public CABViewControlUnits LoadUnits = CABViewControlUnits.KILO_LBS;
160+
public CABViewControlUnits LoadUnits = CABViewControlUnits.NONE;
161161
public DPDefaultWindow(DistributedPowerInterface dpi, CabViewControl control) : base(dpi, 640, 240)
162162
{
163163
var param = (control as CVCScreen).CustomParameters;

0 commit comments

Comments
 (0)