@@ -251,16 +251,16 @@ public enum SlipControlType
251251
252252 // parameters for Track Sander based upon compressor air and abrasive table for 1/2" sand blasting nozzle @ 50psi
253253 public float MaxTrackSandBoxCapacityM3 ; // Capacity of sandbox
254- public float TrackSanderAirComsumptionForwardM3pS ;
255- public float TrackSanderAirComsumptionReverseM3pS = 0 ;
256- public float TrackSanderSandConsumptionForwardM3pS ;
254+ public float MaxTrackSanderAirComsumptionForwardM3pS ;
255+ public float MaxTrackSanderAirComsumptionReverseM3pS = 0 ;
256+ public float MaxTrackSanderSandConsumptionForwardM3pS ;
257257 public float CurrentTrackSanderAirConsumptionM3pS ;
258258 public float CurrentTrackSanderSandConsumptionM3pS ;
259259 public float CurrentTrackSandBoxCapacityM3 ;
260- public float TrackSanderSandConsumptionReverseM3pS = 0 ;
260+ public float MaxTrackSanderSandConsumptionReverseM3pS = 0 ;
261261 public float SandWeightKgpM3 = 1600 ; // One cubic metre of sand weighs about 1.54-1.78 tonnes.
262- public float TrackSanderSteamConsumptionForwardLbpS ;
263- public float TrackSanderSteamConsumptionReverseLbpS = 0 ;
262+ public float MaxTrackSanderSteamConsumptionForwardLbpS ;
263+ public float MaxTrackSanderSteamConsumptionReverseLbpS = 0 ;
264264
265265
266266 // Vacuum Braking parameters
@@ -1150,20 +1150,20 @@ public override void Parse(string lowercasetoken, STFReader stf)
11501150 MaxTrackSandBoxCapacityM3 = Me3 . FromFt3 ( MaxTrackSandBoxCapacityM3 ) ;
11511151 break ;
11521152 case "engine(ortsmaxtracksandersandconsumptionforward" :
1153- Me3 . FromFt3 ( TrackSanderSandConsumptionForwardM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1154- TrackSanderSandConsumptionForwardM3pS = Me3 . FromFt3 ( TrackSanderSandConsumptionForwardM3pS ) ;
1153+ Me3 . FromFt3 ( MaxTrackSanderSandConsumptionForwardM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1154+ MaxTrackSanderSandConsumptionForwardM3pS = Me3 . FromFt3 ( MaxTrackSanderSandConsumptionForwardM3pS ) ;
11551155 break ;
11561156 case "engine(ortsmaxtracksandersandconsumptionreverse" :
1157- Me3 . FromFt3 ( TrackSanderSandConsumptionReverseM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1158- TrackSanderSandConsumptionReverseM3pS = Me3 . FromFt3 ( TrackSanderSandConsumptionReverseM3pS ) ;
1157+ Me3 . FromFt3 ( MaxTrackSanderSandConsumptionReverseM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1158+ MaxTrackSanderSandConsumptionReverseM3pS = Me3 . FromFt3 ( MaxTrackSanderSandConsumptionReverseM3pS ) ;
11591159 break ;
11601160 case "engine(ortsmaxtracksanderairconsumptionforward" :
1161- Me3 . FromFt3 ( TrackSanderAirComsumptionForwardM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1162- TrackSanderAirComsumptionForwardM3pS = Me3 . FromFt3 ( TrackSanderAirComsumptionForwardM3pS ) ;
1161+ Me3 . FromFt3 ( MaxTrackSanderAirComsumptionForwardM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1162+ MaxTrackSanderAirComsumptionForwardM3pS = Me3 . FromFt3 ( MaxTrackSanderAirComsumptionForwardM3pS ) ;
11631163 break ;
11641164 case "engine(ortsmaxtracksanderairconsumptionreverse" :
1165- Me3 . FromFt3 ( TrackSanderAirComsumptionReverseM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1166- TrackSanderAirComsumptionReverseM3pS = Me3 . FromFt3 ( TrackSanderAirComsumptionReverseM3pS ) ;
1165+ Me3 . FromFt3 ( MaxTrackSanderAirComsumptionReverseM3pS = stf . ReadFloatBlock ( STFReader . UNITS . VolumeDefaultFT3 , null ) ) ;
1166+ MaxTrackSanderAirComsumptionReverseM3pS = Me3 . FromFt3 ( MaxTrackSanderAirComsumptionReverseM3pS ) ;
11671167 break ;
11681168 case "engine(ortscruisecontrol" : SetUpCruiseControl ( stf ) ; break ;
11691169 case "engine(ortsmultipositioncontroller" : SetUpMPC ( stf ) ; break ;
@@ -1221,10 +1221,10 @@ public override void Copy(MSTSWagon copy)
12211221 SanderSpeedEffectUpToMpS = locoCopy . SanderSpeedEffectUpToMpS ;
12221222 SanderSpeedOfMpS = locoCopy . SanderSpeedOfMpS ;
12231223 MaxTrackSandBoxCapacityM3 = locoCopy . MaxTrackSandBoxCapacityM3 ;
1224- TrackSanderSandConsumptionForwardM3pS = locoCopy . TrackSanderSandConsumptionForwardM3pS ;
1225- TrackSanderSandConsumptionReverseM3pS = locoCopy . TrackSanderSandConsumptionReverseM3pS ;
1226- TrackSanderAirComsumptionForwardM3pS = locoCopy . TrackSanderAirComsumptionForwardM3pS ;
1227- TrackSanderAirComsumptionReverseM3pS = locoCopy . TrackSanderAirComsumptionReverseM3pS ;
1224+ MaxTrackSanderSandConsumptionForwardM3pS = locoCopy . MaxTrackSanderSandConsumptionForwardM3pS ;
1225+ MaxTrackSanderSandConsumptionReverseM3pS = locoCopy . MaxTrackSanderSandConsumptionReverseM3pS ;
1226+ MaxTrackSanderAirComsumptionForwardM3pS = locoCopy . MaxTrackSanderAirComsumptionForwardM3pS ;
1227+ MaxTrackSanderAirComsumptionReverseM3pS = locoCopy . MaxTrackSanderAirComsumptionReverseM3pS ;
12281228 PowerOnDelayS = locoCopy . PowerOnDelayS ;
12291229 DoesHornTriggerBell = locoCopy . DoesHornTriggerBell ;
12301230 MaxSteamHeatPressurePSI = locoCopy . MaxSteamHeatPressurePSI ;
@@ -1331,7 +1331,6 @@ public override void Save(BinaryWriter outf)
13311331 outf . Write ( PowerReduction ) ;
13321332 outf . Write ( ScoopIsBroken ) ;
13331333 outf . Write ( IsWaterScoopDown ) ;
1334- outf . Write ( CurrentTrackSandBoxCapacityM3 ) ;
13351334 outf . Write ( SaveAdhesionFilter ) ;
13361335 outf . Write ( GenericItem1 ) ;
13371336 outf . Write ( GenericItem2 ) ;
@@ -1341,6 +1340,10 @@ public override void Save(BinaryWriter outf)
13411340 outf . Write ( previousChangedGearBoxNotch ) ;
13421341 outf . Write ( DynamicBrake ) ;
13431342 outf . Write ( DynamicBrakeIntervention ) ;
1343+ outf . Write ( CurrentTrackSandBoxCapacityM3 ) ;
1344+ outf . Write ( CurrentTrackSanderSandConsumptionM3pS ) ;
1345+ outf . Write ( CurrentTrackSanderAirConsumptionM3pS ) ;
1346+
13441347
13451348 base . Save ( outf ) ;
13461349
@@ -1383,7 +1386,6 @@ public override void Restore(BinaryReader inf)
13831386 PowerReduction = inf . ReadSingle ( ) ;
13841387 ScoopIsBroken = inf . ReadBoolean ( ) ;
13851388 IsWaterScoopDown = inf . ReadBoolean ( ) ;
1386- CurrentTrackSandBoxCapacityM3 = inf . ReadSingle ( ) ;
13871389
13881390 SaveAdhesionFilter = inf . ReadSingle ( ) ;
13891391
@@ -1398,6 +1400,9 @@ public override void Restore(BinaryReader inf)
13981400
13991401 DynamicBrake = inf . ReadBoolean ( ) ;
14001402 DynamicBrakeIntervention = inf . ReadSingle ( ) ;
1403+ CurrentTrackSandBoxCapacityM3 = inf . ReadSingle ( ) ;
1404+ CurrentTrackSanderSandConsumptionM3pS = inf . ReadSingle ( ) ;
1405+ CurrentTrackSanderAirConsumptionM3pS = inf . ReadSingle ( ) ;
14011406
14021407 base . Restore ( inf ) ;
14031408
@@ -1773,19 +1778,19 @@ public override void Initialize()
17731778 MaxTrackSandBoxCapacityM3 = Me3 . FromFt3 ( 40.0f ) ; // Capacity of sandbox - assume 40.0 cu ft
17741779 }
17751780
1776- if ( TrackSanderAirComsumptionForwardM3pS == 0 )
1781+ if ( MaxTrackSanderAirComsumptionForwardM3pS == 0 && SandingSystemType == SandingSystemTypes . Air )
17771782 {
1778- TrackSanderAirComsumptionForwardM3pS = Me3 . FromFt3 ( 56.0f ) / 60.0f ; // Default value - cubic feet per min (CFM) 28 ft3/m x 2 sanders @ 140 psi - convert to /sec values
1783+ MaxTrackSanderAirComsumptionForwardM3pS = Me3 . FromFt3 ( 56.0f ) / 60.0f ; // Default value - cubic feet per min (CFM) 28 ft3/m x 2 sanders @ 140 psi - convert to /sec values
17791784 }
17801785
1781- if ( TrackSanderSandConsumptionForwardM3pS == 0 )
1786+ if ( MaxTrackSanderSandConsumptionForwardM3pS == 0 )
17821787 {
1783- TrackSanderSandConsumptionForwardM3pS = Me3 . FromFt3 ( 3.4f ) / 3600.0f ; // Default value - 1.7 ft3/h x 2 sanders @ 140 psi - convert to /sec values
1788+ MaxTrackSanderSandConsumptionForwardM3pS = Me3 . FromFt3 ( 3.4f ) / 3600.0f ; // Default value - 1.7 ft3/h x 2 sanders @ 140 psi - convert to /sec values
17841789 }
17851790
1786- if ( TrackSanderSteamConsumptionForwardLbpS == 0 && SandingSystemType == SandingSystemTypes . Steam )
1791+ if ( MaxTrackSanderSteamConsumptionForwardLbpS == 0 && SandingSystemType == SandingSystemTypes . Steam )
17871792 {
1788- TrackSanderSteamConsumptionForwardLbpS = 300f / 3600f ; // Default value - 300lbs/hr - this value is un confirmed at this stage.
1793+ MaxTrackSanderSteamConsumptionForwardLbpS = 300f / 3600f ; // Default value - 300lbs/hr - this value is un confirmed at this stage.
17891794 }
17901795
17911796 base . Initialize ( ) ;
@@ -3270,13 +3275,13 @@ public void UpdateTrackSander(float elapsedClockSeconds)
32703275
32713276 if ( Direction == Direction . Reverse )
32723277 {
3273- sandingSteamConsumptionLbpS = TrackSanderSteamConsumptionReverseLbpS ;
3274- sandingSandConsumptionM3pS = TrackSanderSandConsumptionReverseM3pS ;
3278+ sandingSteamConsumptionLbpS = MaxTrackSanderSteamConsumptionReverseLbpS ;
3279+ sandingSandConsumptionM3pS = MaxTrackSanderSandConsumptionReverseM3pS ;
32753280 }
32763281 else
32773282 {
3278- sandingSteamConsumptionLbpS = TrackSanderSteamConsumptionForwardLbpS ;
3279- sandingSandConsumptionM3pS = TrackSanderSandConsumptionForwardM3pS ;
3283+ sandingSteamConsumptionLbpS = MaxTrackSanderSteamConsumptionForwardLbpS ;
3284+ sandingSandConsumptionM3pS = MaxTrackSanderSandConsumptionForwardM3pS ;
32803285 }
32813286
32823287 // Calculate steam consumption
@@ -3302,13 +3307,13 @@ public void UpdateTrackSander(float elapsedClockSeconds)
33023307
33033308 if ( Direction == Direction . Reverse )
33043309 {
3305- sandingAirConsumptionM3pS = TrackSanderAirComsumptionReverseM3pS ;
3306- sandingSandConsumptionM3pS = TrackSanderSandConsumptionReverseM3pS ;
3310+ sandingAirConsumptionM3pS = MaxTrackSanderAirComsumptionReverseM3pS ;
3311+ sandingSandConsumptionM3pS = MaxTrackSanderSandConsumptionReverseM3pS ;
33073312 }
33083313 else
33093314 {
3310- sandingAirConsumptionM3pS = TrackSanderAirComsumptionForwardM3pS ;
3311- sandingSandConsumptionM3pS = TrackSanderSandConsumptionForwardM3pS ;
3315+ sandingAirConsumptionM3pS = MaxTrackSanderAirComsumptionForwardM3pS ;
3316+ sandingSandConsumptionM3pS = MaxTrackSanderSandConsumptionForwardM3pS ;
33123317 }
33133318
33143319 // Calculate air consumption and change in main air reservoir pressure
@@ -3331,7 +3336,12 @@ public void UpdateTrackSander(float elapsedClockSeconds)
33313336 }
33323337 }
33333338 }
3334-
3339+ else // reset to zero if sander is off
3340+ {
3341+ CurrentTrackSanderSandConsumptionM3pS = 0 ;
3342+ CurrentTrackSanderAirConsumptionM3pS = 0 ;
3343+ SandingSteamUsageLBpS = 0 ;
3344+ }
33353345 }
33363346
33373347 public override bool GetSanderOn ( )
0 commit comments