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