Notes For Real Signalmen


If you are an experienced signalman or a perfectionist like the author you will quickly spot the shortcomings of the Rail3D implementation of lever frames. This has been because it was felt that most ordinary users would find a fully detailed implementation too hard to get to grips with. I hope you will agree with me that the way the implementation is at the moment is a reasonable balance between accuracy, fun to use and not being too difficult to get into. I have also taken the view that some of the less interesting admin tasks (like keeping the register up to date) could be done by the computer rather than the user.

A training aid?

The obvious question is “Can it be used for training?” Well, “Yes” and “No”.

Yes it can, but personally I think at the moment - to be a useful training aid - it needs a competent instructor looking over the user’s shoulder. For example the simulation doesn’t care about clearing points, are when you return a signal to danger: an instructor can advise and monitor this.

Ideally, for it to be a useful training aid, the computer should be able to monitor this sort of thing, and produce a report - or score card - showing how well the trainee has performed and where they have not fully complied with the rules.

I’m probably only going to do this if there is enough demand for it - please contact me mark@rail3d.net with feedback if this is an area of interest


I hope to develop the lever frame simulation - probably to provide an “advanced mode” where more of the detail (As discussed below) is implemented, and possibly - if it is felt necessary - to provide an even simpler “Beginner” mode.

I’m not sure as yet how this will be done - but possibly using the scripting system to prompt the user and/or monitor user actions and train movement.

The Implementation

in no particular order

The Bells

Only two bell pitches are used in the simulation and more are needed - if anyone who can provide recordings of different bell pitches it would be appreciated.

Bell codes

Only three bell codes are used at present:

  • 1 for “Is Line Clear?” - call attention is not used otherwise.
  • 2 for “Train entering section”
  • 2–1 for “Train out of section”

Obviously, a proper simulation would use a full range of codes for different classes of trains - this was felt to be too complicated for the basic simulation, but would be a high priority for the advanced mode.

Also, at present the system does not model the exchange of bell codes, except slightly in the case of ilc and acceptance. In an advanced mode we might want to model the usual exchange and repetition of codes between boxes.

Block instruments

The current model is very simple and merely provides a) a place to click to sound the bell b) an indication of the release on a starting signal. This could be developed to include different forms of block instrument and features such as line indicators and even electric key token.

The register

Has been much simplified in order to a) make the thing usable to novice users and b) fit it onto a reasonable amount of screen. An advanced mode might include the full set of columns - but would probably require its own window and therefore you wouldn’t be able to see the simulation and the register at the same time.

Also, at present the computer does much of the work for you - mostly the operator only needs to enter the train accepted time (by a simple click) - in an advanced mode, certainly in a training mode, the user might have to keep the register updated without help from the computer.

Clearing points

there is no such thing in the present simulation!

At the moment, clearing points are only observed if the user chooses to do so. In an advanced mode - certainly in training mode - there would need to be some implementation. Ideally the computer should be able to monitor that the user correctly preserves clearing points, and also the adjacent boxes would need to implement them: at the moment the next box will accept a train as soon as the previous one has passed the home signal.


The current code implementation does not allow slotted distants (Etc) to be implemented: this will be added idc.

Initial register condition

Before you open the box, the register does not exist, when the box is opened, the system tries to create the register according to the trains currently in the area. This works reasonably well, but is not perfect and sometimes trains are not shown properly.

I don’t think it is a big issue, but it could be improved.

Computer control

If you watch the computer operating a frame you will notice it doesn’t play by the same rules:

  • The computer does not use fpls
  • The computer ignores the interlocking
  • The computer can move an unlimited number of levers simultaneously
  • The computer does not bother with clearing distances
  • The computer returns levers to normal before the whole train has passed

and so on.

Manual and automatic bells and entries - acknowledging bells etc

The whole process of bell codes, acknowledgement and exchange is simplified in the current code. In most cases it is not necessary to acknowledge bells, and many of the codes (eg entering section, out of section) are handled automatically for you. An obvious modification for the advanced mode is to require the user to do these.

Reg 5 (etc)

It would be nice to implement some of the more advanced stuff, like:

  • Reg 5 acceptance
  • Permissive working
  • Shunting and calling on signals.
  • Banking locos
  • Single line working

The unexpected

In the Rail3D world everything goes according to plan!

But nice features of an advanced mode would include:

  • Train failed in section
  • Train passed without tail lamp
  • Pilotman working

I’m sure there is more, and I’d be please to receive comments and suggestions.

Mark Goodspeed