Elvas Tower: FuelRate SmoothedData - Elvas Tower

Jump to content

  • 2 Pages +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

FuelRate SmoothedData Rate Topic: -----

#1 User is offline   Lindsayts 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,849
  • Joined: 25-November 11
  • Gender:Male
  • Country:

Posted 02 June 2013 - 08:30 PM

In MSTSSteamLocomotive.cs there is the line below, (line 78)

"SmoothedData FuelRate = new SmoothedData(300); // Automatic fireman takes 5 minutes to fully react to changing needs."

I assume this is the cause of the boilers VERY poor response to changing loads.

A good steam loco crew is a highly skilled team, no fireman worth anything would allow such a delay before fully responding. In fact it is usual to prepare well in advance of any changes that will be required. When a long grade is coming it was usual for a fireman to start putting coal on early partly to allow the boiler to 1: to reach full pressure and 2: to avoid as much as possible to have to shovel at full bore to keep steam up.

In Victoria it was not uncommon for a fireman of the loco hauling the Melbourne Sydney train to add between 2000 to 3000 pounds of coal on the fire prior to leaving the loco depot at North Melbourne. If this was not done the train could not maintain the necesary speed on the grades, if only a single fireman was avaible. The loco putting out 2500 to 3000 bhp a power well beyond a single fireman. Note, it took aprox an hour at 50mph for the train to reach the top of the range so this procudure was quite feasible.

It would be gratefull for this to be changed, something like 10 to 20 secs would be more reasonable.

Lindsay

#2 User is offline   steamer_ctn 

  • Open Rails Developer
  • Group: Status: Elite Member
  • Posts: 1,889
  • Joined: 24-June 11
  • Gender:Male
  • Country:

Posted 03 June 2013 - 02:43 AM

View PostLindsayts, on 02 June 2013 - 08:30 PM, said:

In MSTSSteamLocomotive.cs there is the line below, (line 78)

"SmoothedData FuelRate = new SmoothedData(300); // Automatic fireman takes 5 minutes to fully react to changing needs."

I assume this is the cause of the boilers VERY poor response to changing loads.


I suspect that this value is to model the change in thermal mass of the boiler, and in principle, is probably reasonable, as the boiler does not heat up as soon as a shovel load of coal is loaded, but takes some time.

I think the problem really lies with the AI Fireman.

As you have rightly suggested when the loco is manually fired the fireman can "look ahead" and prepare for steep climbs that require the boiler to be at its peak performance.

Whereas the AI Fireman doesn't look ahead, and merely reacts to changing conditions, so for example given the above delay it will be 5 mins after the train hits a rising gradient before the AI Fireman will get the boiler operating at optimum conditions for the climb.

At the moment the burnrate, firerate and Firemass all drop off as the train progresses, which seems unusual to me. So I suspect that the AI Fireman needs a good talking to.

So rather then changing the above, perhaps the answer lies in "better" AI logic? The ideal would be for the AI Fireman to look for rising gradients and adjust his fire accordingly, but I suspect that the code to do this may be quite complex, and not realistic. So perhaps a compromise is needed, where he can monitor "on board" parameters to achieve the best outcome.

Is anybody able to shed light on the AI code logic?

#3 User is offline   copperpen 

  • Executive Vice President
  • Group: Status: Elite Member
  • Posts: 3,144
  • Joined: 08-August 05
  • Gender:Male
  • Simulator:MSTS & OR
  • Country:

Posted 03 June 2013 - 03:14 AM

Not entirely certain on this, but the AI fireman seems to be tied to water level and amount of coal in the firebox. This is why it springs into action at the wrong times. The one saving grace with using the AI fireman is you will always have steam, but not always at the pressure you need it at. I feel that it should also be tied into the boiler pressure in some way.

#4 User is offline   scottb613 

  • Vice President
  • Group: Status: First Class
  • Posts: 2,973
  • Joined: 06-July 09
  • Gender:Male
  • Location:Downeast Maine (soon)
  • Simulator:ORTS
  • Country:

Posted 03 June 2013 - 03:21 AM

Bah - who uses AI Firemen ??? Hah - just kidding - while I don't have much to offer - I'm definately reading all these steam posts with great interest...
:sign_thanks:

Regards,
Scott

#5 User is offline   Lindsayts 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,849
  • Joined: 25-November 11
  • Gender:Male
  • Country:

Posted 03 June 2013 - 03:25 PM

View Poststeamer_ctn, on 03 June 2013 - 02:43 AM, said:

I suspect that this value is to model the change in thermal mass of the boiler, and in principle, is probably reasonable, as the boiler does not heat up as soon as a shovel load of coal is loaded, but takes some time.

I think the problem really lies with the AI Fireman.

As you have rightly suggested when the loco is manually fired the fireman can "look ahead" and prepare for steep climbs that require the boiler to be at its peak performance.

Whereas the AI Fireman doesn't look ahead, and merely reacts to changing conditions, so for example given the above delay it will be 5 mins after the train hits a rising gradient before the AI Fireman will get the boiler operating at optimum conditions for the climb.

At the moment the burnrate, firerate and Firemass all drop off as the train progresses, which seems unusual to me. So I suspect that the AI Fireman needs a good talking to.

So rather then changing the above, perhaps the answer lies in "better" AI logic? The ideal would be for the AI Fireman to look for rising gradients and adjust his fire accordingly, but I suspect that the code to do this may be quite complex, and not realistic. So perhaps a compromise is needed, where he can monitor "on board" parameters to achieve the best outcome.

Is anybody able to shed light on the AI code logic?



The FuelRate variable actually comes from the AI firing code (line 617), I believe its why its so slow.

Immediate steam production does not rely on the waters thermal mass. Superheated water carries a certain amount of thermal energy (note, the amount of energy carried by such water is enormouse), one can accurately measure the boilers pressure with a temperature gauge. See the table line 34 Common/SteamTable.cs. When you open the regulator the boiler pressure drops slightly this unbalances the equilibrium of the waters pressure and temperature. A certain quantity heat is removed from the water by it turning into steam, this restores this balance. The fire puts heat into the water to maintain the equilibriums balance upset by the constant removal of heat, due to the flow of steam.

If one can suddenly drop a fire from a running steam locomotive it will ___NOT___ stop immediately. The boiler pressure will drop as the steam removes heat from the water. Steam production will only cease when the water temp drops below 100 degrees C and the boiler is at atmospheric pressure.

Lindsay

#6 User is offline   Lindsayts 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,849
  • Joined: 25-November 11
  • Gender:Male
  • Country:

Posted 03 June 2013 - 03:39 PM

View Postcopperpen, on 03 June 2013 - 03:14 AM, said:

Not entirely certain on this, but the AI fireman seems to be tied to water level and amount of coal in the firebox. This is why it springs into action at the wrong times. The one saving grace with using the AI fireman is you will always have steam, but not always at the pressure you need it at. I feel that it should also be tied into the boiler pressure in some way.


In reality what the sim really needs in an AI fireman is an ability for the driver to communicate instructions. Say for instance "we are comming up to a long grade, start putting some more fuel on" or "we are near to the top of the grade stop firing". This actaully happens in real life all though in most cases the fireman would not have to be told. Such firing AI could possibly be put into the code but it would be complex and there are plenty more important things to worry about before it.

Lindsay

#7 User is offline   steamer_ctn 

  • Open Rails Developer
  • Group: Status: Elite Member
  • Posts: 1,889
  • Joined: 24-June 11
  • Gender:Male
  • Country:

Posted 04 June 2013 - 02:44 AM

After looking at the code more, I believe that the major problems are with the AI Fireman, which probably explains why the OR team have indicated that there is a need to rebuild the code.

For example:

i) The damper does not appear to be included in either the Manul or AI firing code

ii) The blower can be used in maunal firing mode, and in the AI code it is only on when the locomotive is statonary or not using any steam.

This means that in the AI mode once the locomotive is moving there is no draught for the fire, which means that the fire rate does not appear to heat up the boiler, hence limited steam is produced.

I have added code to provide to provide a view in the HUD to show the primary parameters associated with steam locomotive performance.

I am interested in some info on how the damper and blower works.

I will continue to invetigate the code and see if I can recommend any modifications, but it will be a slow task.

#8 User is offline   copperpen 

  • Executive Vice President
  • Group: Status: Elite Member
  • Posts: 3,144
  • Joined: 08-August 05
  • Gender:Male
  • Simulator:MSTS & OR
  • Country:

Posted 04 June 2013 - 05:21 AM

When the engine is in motion, the draught for the fire comes from the lower pressure created in the smokebox by the exhaust. While stationary and if required the blower can provide this draught. The amount of air drawn into the firebox and thence through the fire by either method is controlled by the opening or closing of the dampers.

The steam blower is essentially a nozzle, or ring of nozzles inside the base of the exhaust that are angled upwards. Steam coming from these under pressure creates a lower pressure area in the smokebox the same way as the exhaust works. Air moves to fill this area coming via the firebox and boiler tubes. It can also be used to reduce the possibility of a backdraught when in a tunnel, although this is not the primary purpose.

#9 User is offline   steamer_ctn 

  • Open Rails Developer
  • Group: Status: Elite Member
  • Posts: 1,889
  • Joined: 24-June 11
  • Gender:Male
  • Country:

Posted 04 June 2013 - 01:08 PM

View Postcopperpen, on 04 June 2013 - 05:21 AM, said:

When the engine is in motion, the draught for the fire comes from the lower pressure created in the smokebox by the exhaust. While stationary and if required the blower can provide this draught. The amount of air drawn into the firebox and thence through the fire by either method is controlled by the opening or closing of the dampers.

The steam blower is essentially a nozzle, or ring of nozzles inside the base of the exhaust that are angled upwards. Steam coming from these under pressure creates a lower pressure area in the smokebox the same way as the exhaust works. Air moves to fill this area coming via the firebox and boiler tubes. It can also be used to reduce the possibility of a backdraught when in a tunnel, although this is not the primary purpose.


Thanks for that.

How do you determine how much to open the blower and/or the damper?

#10 User is offline   Lindsayts 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,849
  • Joined: 25-November 11
  • Gender:Male
  • Country:

Posted 04 June 2013 - 01:22 PM

The burnrate should follow the draught which is as copperpen said is a function of the steam used OR does not appear to behave completely like that.

The pressure drop produced by the venturi in the smokebox is fairly decent, manometer tests show this reaches 200 to 300 mm (.3 to .5psi) of water with the loco at full power. The fireman using the dampers to stop the fire from being overdriven.

I have finally given up trying to figure out the source, I use either standard C or M68k assembly, I find the combination of C# and the programming style makes the source in parts to be almost incomprehensible. For me C# is a dead end as there is no stand alone complier for it on Linux (Note 1) and mono is in effect a windows enviroment on Linux which is unsuitable for what I do.

Note 1: The only attempt to build one being abandoned a couple of years ago, and no one looks like they will take it up, which for an open source world the size of Linux is NOT good.

Lindsay

  • 2 Pages +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

2 User(s) are reading this topic
0 members, 2 guests, 0 anonymous users