JMRI® is...
Signaling
Adding signals to your layout with JMRI.
Tools
JMRI tools for working with your layout:
Layout Automation
Use JMRI to automate parts of your layout and operations:
Supported Hardware
JMRI supports a wide range of DCC systems, command stations and protocols.
Applications
By the community of JMRI.org:

JMRI Help:

Contents Index
Glossary FAQ

Donate to JMRI.org

JMRI: Simple Signal Logic Example

Don't use the Simple Signal Logic (SSL) Tool when you have already built Signal Masts and the more advanced Signal Mast Logic in the same Panel/Configuration file.

This page provides an example of using the JMRI Simple Signal Logic (in short: SSL) to control Signals Heads connected to a Digitrax SE8C board. This also works for other types of single head hardware signals, including LEDs connected to stationary decoders, C/MRI systems, etc.
Please try our ready-to-use example as a starter for setting up your own SSL.

Modeling railroad signaling on a layout can be done in many different ways, ranging from "stoplights" to complete emulation of a particular prototype's signaling rule book. For more information on the various possibilities, please see the JMRI Signaling help page.

Predefined example

A predefined SSL example is provided in the JMRI installation (see the download page for information on downloading). To use this example:

Setting up your own example

The complete set of steps involved in creating this example are:
  1. Launch and configure the PanelPro application. Restart it to have your preferences take effect.
    For more information on launching and configuring PanelPro, please see the PanelPro help page.
  2. Tell the program about your Sensors:
    • From the Tools menu, open the "Tables" ⇒ "Sensors" tool.
    • If you have a Digitrax DCC system with your occupancy detectors connected to LocoNet, just power the track Off and On using either a DT-series throttle or the "Power Control..." pane from the Tools menu. PanelPro will capture all sensor addresses from the resulting LocoNet traffic.
    • For layouts with a different System Connection, use the "Add..." button at the bottom of the Sensor Table to create the needed sensors.
  3. Save your work. See Loading and Storing Your Work. (You might want to do this often!)
  4. Tell the program about your computer-driven Turnouts:
    • From the Tools menu, open the "Tables" ⇒ "Turnouts" tool.
    • If you have a Digitrax DCC system, just throw or close each Turnout from a throttle. PanelPro will capture the Turnout addresses from the resulting LocoNet traffic.
    • You can also use the "Add..." button on the Turnout Table to open a pane to enter new Turnouts.
    • The "Turnout Control..." pane, found in the Tools menu, also creates a new Turnout entry for every turnout address you operate.
  5. If you have Signal Heads connected to "turnout-type" outputs, tell the program about those Turnout addresses too (SE8C users skip this step).
  6. Tell PanelPro how your Signal Heads are addressed:Signal Head Table Figure
    • From the PanelPro Tools menu, open the Tables ⇒ Signals ⇒ Signal Heads tool.
    • Click the "Add..." button at the left bottom of the table to pop a pane. At the top are several choices for your type of Signal Head driver:
      Triple Output
      A Signal Head Connection Type with red/yellow/green lights that are driven by three separate outputs. The outputs are driven by JMRI turnout logic, and appear in the Turnout Table.
      To configure one of these, enter the name you want to give it (typically something like "IH2"), and the address numbers of the three outputs that drive the lamps (like "258" etc.).
      Double Output
      A Signal Head Connection Type with lights that are driven by two output connections. The two outputs drive red and green lights separately; PanelPro will turn them both On to make yellow. The outputs are driven by JMRI turnout logic, and appear in the Turnout Table.
      To configure one of these, enter the name you want to give it (typically something like "IH2"), and the address numbers of the two outputs that drive the lamps (like "258" etc.).
      SE8c 4 Aspect
      This Connection Type is for Signal Heads driven by a Digitrax SE8c decoder.
      Enter the lower of the two Turnout addresses that this Signal Head responds to. For example, if it's the first Signal Head on your first SE8c board, you can control it by setting Turnouts 257 and 258 with your throttle. Enter "257" in the Turnout Number box on the pane.
      Note: The SE8c board should be configured so that the "4th aspect" is "Dark"; JMRI will handle any flashing that's needed.
      And many more...
      Other signal driver options are "DCC Signal Decoder" and "Acela", among many others (you may have to scroll up or down to see them all).
      See the Signal Heads help page for more information an each.
      Once you've set the options, click "OK". You can use this pane repeatedly to enter as many Signal Heads as you have.
  7. Configure your signaling logic using the Simple Signal Logic (SSL) Tool.
    Open the "Simple Signal Logic" tool from the "Tools" menu. You should get a pane with a number of fields: Simple Signal Logic Window
    • In the top box, enter the name of the Signal Head you want to configure.
    • The radio buttons below that select one of four possible uses for this signal:
      • "On Single Block" - this signal protects one end of a straight through block, with no signaled turnouts
      • "Main Leg of (trailing-point) Turnout" - this signal is along the main route through a turnout, which is defined as the direction taken by trains when the turnout is "Closed". It's protecting the frog of the turnout so that trains will stop before running through a turnout set against them.
      • "Diverging Leg of (trailing-point) Turnout" - this signal is along the diverging route through a turnout, which is defined as the direction taken by trains when the turnout is set to "Thrown". It's protecting the frog of the turnout so that trains will stop before running through a turnout set against them.
      • "On Facing-Point Turnout" - this signal is protecting the points-end of a turnout. Depending on whether the Turnout you watch is "Thrown" or "Closed", the train will take one of two different routes, and the Signal will protect different next Blocks, which you fill in next.
    • If you want the Signal Head to go Red when a Sensor shows Occupied (sensor active), enter the Sensor Name in the next box.
    • If this signal is protecting travel in the trailing point direction through a turnout, you can have the Signal Head show Red if the turnout is thrown against the train. To do this, enter the Turnout Name to be monitored in the 3rd box, and select whether the Signal Head should be Red when the Turnout is either Thrown or Closed.
    • If you want multi-block logic, e.g. Absolute Block Signaling "Light", enter the name of the following Signal Head in the last box. When that Signal Head shows Red, the one you're now configuring will be set to Yellow to warn the engineer that the train must be able to stop at the next signal.

      If you'd like to give an additional warning, check the "With Flashing Yellow" checkbox. In that case, the signal before a Red will show Yellow, and the signal before that Yellow will show a Flashing Yellow.
      We suggest you use the newer Aspect Based Signaling instead of SSL for any more complex setup.
    • Once you've set the options, click "Apply". You can use this form repeatedly to enter as many as you'd like, each with it's own unique name of course.
  8. Once you save your work you're done! See Loading and Storing Your Work.

Now try out your Simple Signal Logic by operating your layout.
Although it's a lot less fun than actually running the layout, you can also test your Simple Signal Logic by changing Turnout and Sensor states on the computer itself. Just click on the status information in one of the Tables to change it. For example, if Turnout "LT23" is showing "Thrown" in the Turnout Table, click on that word to change it to "Closed". The signal icon will update to the new Appearance.

You can create a small Control Panel to do this graphically. For more info on how to do that, see the Panels help page.

Back to Simple Signal Logic help page.

Located at en\html\tools\signaling\