Signal Mast Repeater

The Signal Mast Repeater tool allows you to configure one Signal Mast to follow the state of another, or for a change on either Signal Mast to force the other to the same state.

Signal Mast Repeaters require that both Signal Masts must be of the same Signal System and the same Mast Type. Signal Mast Repeaters cannot be configured between masts of differing types or between signaling differing signaling systems.

Configuring a Repeater

The Signal Mast Repeater table is accessed via the "Tools" pull-down menu at the top of the Signal Masts Table window.

Adding a Repeater

When creating a new Repeater, and a Master mast is selected from the pull-down list at the bottom of the window, the Slave pull-down list will be populated with Signal Masts of the corresponding signaling system and mast type. If there are no valid masts then the option to select the Slave will remain disabled, with an empty list.

Once both a Master mast and a Slave mast have been selected, the "Add" button may be activated to add the Repeater to the list at the top of the window.

Configuring operation of a Repeater

The "Repeat" function may operate in any of three modes which define the direction(s) in which the "repeat function" occurs. The direction of repeat for a given Repeater is configured in the upper part of the Signal Mast Repeater tool window using a button in the column named "Update" This column is typically found between the master and slave name columns. Activating the button sequences through the three available modes. Each mode is shown on the button by one or two arrow-like representations of the direction in which repeats are made:

Master to Slave repeat button image indicates that Master mast aspect changes are repeated to the Slave mast.
Master to Slave repeat button image indicates that Slave mast aspect changes are repeated to the Master mast.
Master to Slave repeat button image indicates that any Master mast aspect change is repeated to the Slave mast, and any Slave mast aspect change is repeated to the Master mast.

By default, a Repeater is enabled when it is created. It is possible to disable an individual Repeater by un-checking the box in the "Enable" column for the particular row containing the Repeater. This can be useful for debugging your Repeater's effect on the layout.

A use-case for a Signal Mast Repeater

In those cases where there are multiple routes between a "source" signal mast and a "destination" signal mast, with no intervening signal masts, the regular JMRI Signal Mast Logic "discovery" project will only identify one of the valid routes. JMRI's Signal Mast Logic ignores any other existing routes and does not generate any logic in the Source mast's logic for those un-discovered routes.

The Layout Editor panel below shows a track arrangement where this Signal Mast Logic discovery shortcoming can be seen. For this panel, there are three different routes from signal RA2.

JMRI's Signal Mast Logic "discovery" finds only two of the three routes:

JMRI Signal Mast Logic Discovery for RA2 fails to automatically discover the last route:

Each of the three routes is separately discussed below.

Example Route 1

This route is from signal RA2, via switch 1 "reversed" (thrown), and switch 5 "normal" (closed), to signal RA173, and is shown below.

an example showing a properly-discovered route from signal mast RA2 to signal mast RA173.

Route 1 was properly discovered by the Signal Mast Logic and is shown in the top row of the Signal Mast Logic window image, below. the Route 1 logic is enabled (checked). Under the conditions shown in the image above, Route 1 is currently an active route, as indicated by the associated check marks. Examination of the conditions shown above shows that RA2 is presenting a "Diverging Clear" aspect (Red over Green over Red).

an example showing the signal mast logic for the properly-discovered route from signal mast RA2 to signal mast RA173.

Example Route 2

This route is from signal RA2, via switch 1 "normal" (closed), and switch 3 "normal" (closed), to signal RA171, and is shown below.

an example showing a properly-discovered route from signal mast RA2 to signal mast RA171.

Route 2 was properly discovered by the Signal Mast Logic and is shown in the second row of the Signal Mast Logic window image, below. The Route 2 logic is enabled (checked). Under the conditions shown in the image above, Route 2 is currently an active route, as indicated by the associated check marks. Examination of the conditions shown above shows that RA2 is presenting a "Clear" aspect (Green over Red over Red).

an example showing the signal mast logic for the properly-discovered route from signal mast RA2 to signal mast RA171.

Example route 3 (the undiscovered route)

Route 3 is not discovered by the Signal Mast Logic. This route is from signal RA2, via switch 1 "normal" (closed), switch 3 "reversed" (thrown) and switch 5 "reversed" (thrown) to signal RA173, and is shown below.

an example showing two different routes from one signal mast to its destination signal mast

Note that signal RA2 does not give an indication better than "Stop" under these conditions, because there is no Signal Logic entry which discovered the path from RA2 to RA173 via this route.

Signal Mast Logic automatically generated by the 'discovery' process

Note that neither of the two rows of the Signal Mast Logic table shown above are marked as "Active", because the route requirements of these two Signal Mast Logic entries are not met.

Why Signal Mast Logic discovery misses the third route

When discovering signal mast pairs between which to create Signal Mast Logic, JMRI finds only one path between a given signal mast pair. JMRI's discovery process then stops looking for other paths between those two signal masts, and moves on to discovery for another signal mast pair.

There are a variety of technical reasons for this behavior, and, at least for the near future, there is no expectation that this behavior will change. A workaround is needed.

The workaround

That explanation of the problem contains a hint on how to resolve the problem - JMRI's Signal Mast Logic works with unique pairs of signals. This implies that a signal mast which duplicates the behavior of RA173 might allow Signal Mast Logic to be created for the undiscovered route from RA2 to RA173.

The duplicate of signal mast RA173 turns out to be a great idea! And it is the beginning of the solution!

But a given point on a Layout Editor panel can only have one signal mast governing movement in a given direction. That means that the duplicate signal mast cannot be tied to the same spot on the panel. And, in a roundabout way, it also means that Signal Mast Logic discovery is unable to automatically identify the alternate path to the the duplicate of RA173.

Proceeding from this point requires manual work - it is necessary to manually create the Signal Mast Logic entry which we would have preferred that Signal Mast Logic discovery would create. That's where the "Add Signal Logic" button on the signal's "Signal Mast Logic" window comes into play.

Workaround for the example

The steps to work around the Signal Mast Discovery shortcoming described above are:

  1. Create a duplicate "destination" signal mast;
  2. Configure the duplicate mast as a Signal Mast Repeater for the primary destination signal mast;
  3. Place the virtual signal mast on the Layout Editor panel;
  4. Manually create the required Signal Mast Logic;
  5. Test the logic.

The steps are detailed here:

  1. Create the duplicate destination Signal Mast
    1. Open the Signal Mast Table, via "Tools"->"Tables"->"Signal Masts".
    2. Add the dummy signal mast to be a near-identical of the physical signal mast, which is RA173 in this case. For ease of reference, choose a name that is similar to the mast being mimic'd - in the case here, "Virtual RA173".
      This dummy mast must use the same "signaling system" as the mast it is to mimic, and it must be of the same "mast type". The Repeater need not use the same "Mast Driver" type.
      If no physical representation of the repeated mast is required, the Mast Driver type of "Virtual Mast" may be used. If the chosen Mast Driver type uses one or more a hardware addresses, be sure to use address information which is not already in-use by any other layout hardware or other virtual masts.
  2. Configure the duplicate Signal Mast to repeat the physical Signal Mast
    1. Select the "Tools" pull-down on the Signal Mast Table's tool bar. Select "Repeaters". This opens the "Signal Mast Repeaters" window, and pre-populates the "Master" signal list at the bottom of the window with all available signal masts.
    2. At the bottom of the window, select the "Master" signal - in this case, mast "RA173". The tool will then pre-populate the list of "Slave" signal masts which use the same signaling system and mast type as the selected Master mast.
    3. Select the "Slave" Signal Mast to act in conjunction with the selected Master Signal Mast - in this case, mast "Virtual RA173".

    4. Activate the "Add" button. This will place a new line in the table of repeaters at in top section of the window.
    5. The arrowhead within the table entry for "RA173" and "Virtual RA173" determines whether changes to one signal mast will be reflected by the other mast. By default, a change on one mast will be reflected on the other, as shown by the button shown below:"
      Master to Slave repeat button image

      Click on that button to cycle the arrowheads so that there is only one arrowhead, and it should point towards "Virtual RA173". This means that changes to RA173's indication will be reflected upon Virtual RA173, but that changes on Virtual RA173 will not be reflected upon RA173. This is shown below.

    6. You may now close the Signal Mast Repeater window.
  3. Optionally, place the duplicate Signal Mast on the Layout Editor panel.
    (Note that placing the the duplicate Signal Mast on the Layout Editor panel provides no obvious functional advantages for this Repeater use-case, and is done mainly for debugging purposes.)
    1. Place the new virtual Signal Mast somewhere on the Layout Editor panel. It is necessary to select the "Signal Mast Icon" radio button, and select the newly-created dummy mast in the adjacent selection box.
    2. Place the icon onto the panel in some location which makes sense to you. I chose to place it immediately below RA173, as shown below.

    3. You might wish to right-click on the virtual Signal Mast and select the option to "hide" the Signal Mast icon when not in "edit" mode. For the purposes of this example, the icon remains un-hidden.
  4. Create the Signal Mast Logic for the undiscovered route.
    1. Right-click on RA2 and select the "Signal Mast Logic: RA2" selection. This opens up the "Signal Mast Pairs: RA2" window (For further help, see Adding/Editing Signal Mast Logic.)
    2. Select the destination mast "Virtual RA173".

    3. Add the "Blocks" associated with the route.
      1. In the "blocks" section, select all of the blocks between the entering signal RA2 and the leaving signal (Virtual) RA173 which are on the "undiscovered" route. In this case, blocks 2, 3, 4, 7, and 8 are on the "undiscovered" path. They must be entered as "Unoccupied", since signal RA2 must not indicate anything other than "Stop" if any of those blocks is occupied. This configuration is shown below.

    4. Add the "Turnouts", and their positions, associated with the route.
      1. Select the "Turnouts" tab. "Include" each of the turnouts, and each one's required direction of throw, for those turnouts on the route of the undiscovered path between the entering signal RA2 and the leaving signal (Virtual) RA173. In this case, Turnout 1 must be "closed" (normal), Turnout 3 must be "thrown" (reversed), and Turnout 5 must be "thrown" (reversed) on this route. This configuration is shown below.

    5. If necessary, add any opposing "Signal Mast(s)" associated with the route. This is often a requirement for signals in CTC territory.
      1. If you find it necessary to prevent absolute signal RA2 from clearing when opposing absolute signal LA4 displays anything less-restrictive than "stop", then Signal Mast LA4 must be included in the RA4 Signal Mast Logic's "Signal Mast" tab. RA2's Signal Mast Logic entry must require that LA4 is at "Stop". This configuration is shown below.

    The resulting Signal Mast Logic list for RA2 appears similar to the image below, although the "Active" logic item may be selected differently, or no "Active" item may be shown, depending on layout conditions.

  5. Select the "Update Signal Logic" button to make the changes to the RA2 Signal Mast Logic.
  6. Save your work! Select "File"->"Store Panels...".
  7. Exit the Layout Editor "Edit" mode.
That completes the changes!

Testing the workaround

The speed settings for the turnouts and blocks in a given path all can influence the aspect shown on the signal. The slowest speed on any part of the route will limit the signal indication to one which allows that speed (or some lower speed, if that specific speed is not available by signal indication).

Note:If the individual turnouts are left at JMRI's "default" values, then any route with a diverging turnout will automatically force the signal to a maximum speed of "restricting" for the route. To achieve the images shown above, it was necessary to change the turnout "diverging" speeds (in the Turnouts table) to be at least "Slow", as shown below. For the selected signaling system, that was sufficient to allow the signal mast logic to choose "Diverging Clear" (Red-Green-Red) for those routes where a switch required a diverging route.

A General Note on Signal Repeaters and Multiple Routes

This concept can be extended to situations where "n" routes are available from one signal mast to another signal mast. With "n" routes, discovery will only find one of those "n" routes. Using the workaround described above, it is necessary to create "n-1" signal mast repeaters for the destination mast. And it is necessary to manually create "n-1" Signal Mast Logic entries from the source signal mast to each of the virtual copies of the destination mast. (The example given above is described the case where the value of "n" was 2.)

See Also

For related information, see: