Files
JIMRI/help/en/package/jmri/jmrit/beantable/SignalMastRepeater.shtml
T
2026-06-17 14:00:51 +02:00

460 lines
23 KiB
Plaintext

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Apple macOS version 5.8.0">
<title>JMRI: Signal Masts Repeater</title>
<meta name="author" content="Kevin Dickerson">
<meta name="author" content="B. Milhaupt">
<meta name="Date.Modified" content="20200107">
<meta name="keywords" content="JMRI help Signal Mast Repeater">
<!--#include virtual="/help/en/parts/Style.shtml" -->
<style>
.ctr {text-align: center;}
</style>
</head>
<body>
<!--#include virtual="/help/en/parts/Header.shtml" -->
<div id="mBody">
<div id="mainContent" class="no-sidebar">
<h1>Signal Mast Repeater</h1>
<p>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.</p>
<p>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.</p>
<h2>Configuring a Repeater</h2>
<p>The Signal Mast Repeater table is accessed via the "Tools" pull-down menu at the top of
the Signal Masts Table window.</p>
<h3>Adding a Repeater</h3>
<p>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.</p>
<p>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.</p>
<h3>Configuring operation of a Repeater</h3>
<p>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:</p>
<table border="2">
<tr>
<td class="ctr"><img src="images/SignalMastRepeaterMaster-to-SlaveButton.png" alt=
"Master to Slave repeat button image">
</td>
<td>indicates that Master mast aspect changes are repeated to the Slave mast.</td>
</tr>
<tr>
<td class="ctr"><img src="images/SignalMastRepeaterSlave-to-MasterButton.png" alt=
"Master to Slave repeat button image">
</td>
<td>indicates that Slave mast aspect changes are repeated to the Master mast.</td>
</tr>
<tr>
<td class="ctr"><img src="images/SignalMastRepeaterBidirectionalButton.png" alt=
"Master to Slave repeat button image">
</td>
<td>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.</td>
</tr>
</table>
<p>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.</p>
<h2>A use-case for a Signal Mast Repeater</h2>
<p>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 <strong>one</strong> 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.</p>
<p>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.</p>
<p>JMRI's Signal Mast Logic "discovery" finds only two of the three routes:</p>
<ul>
<li>Route 1 - a route from RA2 to RA173, via switch 1 lined "reverse" (diverging) and
switch 5 lined normal; and</li>
<li>Route 2 - a route from RA2 to RA171, via switch 1 lined "normal" (straight)</li>
</ul>
<p>JMRI Signal Mast Logic Discovery for RA2 fails to automatically discover the last
route:</p>
<ul>
<li>Route 3 - a route from RA2 to RA173 via switch 1 normal and Switch 3 reverse and Switch
5 reverse.</li>
</ul>
<p>Each of the three routes is separately discussed below.</p>
<h3>Example Route 1</h3>
<p>This route is from signal RA2, via switch 1 "reversed" (thrown), and switch 5 "normal"
(closed), to signal RA173, and is shown below.</p>
<img src="images/SignalMastRepeaterRoute1.png" alt=
"an example showing a properly-discovered route from signal mast RA2 to signal mast RA173.">
<p>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).</p>
<img src="images/SignalMastRepeaterRoute1SMLogic.png" alt=
"an example showing the signal mast logic for the properly-discovered route from signal mast RA2 to signal mast RA173.">
<h3>Example Route 2</h3>
<p>This route is from signal RA2, via switch 1 "normal" (closed), and switch 3 "normal"
(closed), to signal RA171, and is shown below.</p>
<img src="images/SignalMastRepeaterRoute2.png" alt=
"an example showing a properly-discovered route from signal mast RA2 to signal mast RA171.">
<p>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).</p>
<img src="images/SignalMastRepeaterRoute2SMLogic.png" alt=
"an example showing the signal mast logic for the properly-discovered route from signal mast RA2 to signal mast RA171.">
<h3>Example route 3 (the undiscovered route)</h3>
<p>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.</p>
<img src="images/SignalMastRepeaterRoute3.png" alt=
"an example showing two different routes from one signal mast to its destination signal mast">
<p>Note that signal RA2 does <strong>not</strong> 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.</p>
<img src="images/SignalMastRepeaterRoute3NoSMLogic.png" alt=
"Signal Mast Logic automatically generated by the 'discovery' process">
<p>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.</p>
<h2>Why Signal Mast Logic discovery misses the third route</h2>
<p>When discovering signal mast pairs between which to create Signal Mast Logic, JMRI
<strong>finds only one path</strong> between a given signal mast pair. JMRI's discovery
process <strong>then stops looking for other paths between those two signal masts</strong>,
and moves on to discovery for another signal mast pair.</p>
<p>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.</p>
<h2>The workaround</h2>
<p>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.</p>
<p>The duplicate of signal mast RA173 turns out to be a great idea! And it is the beginning
of the solution!</p>
<p>But a given point on a Layout Editor panel can only have <strong>one</strong> signal mast
governing movement in a given direction. That means that the duplicate signal mast
<strong>cannot</strong> be tied to the same spot on the panel. And, in a roundabout way, it
also means that Signal Mast Logic discovery <strong>is unable</strong> to automatically
identify the alternate path to the the duplicate of RA173.</p>
<p>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.</p>
<h2>Workaround for the example</h2>
<p>The steps to work around the Signal Mast Discovery shortcoming described above are:</p>
<ol>
<li>Create a duplicate "destination" signal mast;</li>
<li>Configure the duplicate mast as a Signal Mast Repeater for the primary destination
signal mast;</li>
<li>Place the virtual signal mast on the Layout Editor panel;</li>
<li>Manually create the required Signal Mast Logic;</li>
<li>Test the logic.</li>
</ol>
<p>The steps are detailed here:</p>
<ol>
<li>Create the duplicate destination Signal Mast
<ol>
<li>Open the <a href="SignalMastTable.shtml">Signal Mast Table</a>, via
"Tools"-&gt;"Tables"-&gt;"Signal Masts".
</li>
<li>
<a href="AddEditSignalingLogic.shtml">Add</a> 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".<br>
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.<br>
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.
</li>
</ol>
</li>
<li>Configure the duplicate Signal Mast to repeat the physical Signal Mast
<ol>
<li>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.</li>
<li>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.</li>
<li>Select the "Slave" Signal Mast to act in conjunction with the selected Master
Signal Mast - in this case, mast "Virtual RA173".
<p><img src="images/SignalMastRepeaterCreation0.png" alt="repeater list">
</p>
</li>
<li>Activate the "Add" button. This will place a new line in the table of repeaters at
in top section of the window.</li>
<li>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:"<br>
<img src="images/SignalMastRepeaterBidirectionalButton.png" alt=
"Master to Slave repeat button image">
<p>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.</p>
<p><img src="images/SignalMastRepeaterCreation.png" alt="repeater list with row">
</p>
</li>
<li>You may now close the Signal Mast Repeater window.</li>
</ol>
</li>
<li>Optionally, place the duplicate Signal Mast on the Layout Editor panel.<br>
(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.)
<ol>
<li>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.</li>
<li>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.
<p><img src="images/SignalMastRepeaterIconPlaced.png" alt="Icon Placed">
</p>
</li>
<li>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.</li>
</ol>
</li>
<li>Create the Signal Mast Logic for the undiscovered route.
<ol>
<li>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 <a href=
"AddEditSignalingLogic.shtml">Adding/Editing Signal Mast Logic</a>.)
</li>
<li>Select the destination mast "Virtual RA173".
<p><img src="images/SignalMastRepeaterCreationSelectDestination.png" alt=
"Select destination">
</p>
</li>
<li>Add the "Blocks" associated with the route.
<ol>
<li>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 <strong>must not</strong> indicate
anything other than "Stop" if any of those blocks is occupied. This configuration
is shown below.
<p><img src="images/SignalMastRepeaterCreationBlocks.png" alt=
"Create block entires">
</p>
</li>
</ol>
</li>
<li>Add the "Turnouts", and their positions, associated with the route.
<ol>
<li>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.
<p><img src="images/SignalMastRepeaterCreationTurnouts.png" alt=
"Create turnout entries">
</p>
</li>
</ol>
</li>
<li>If necessary, add any opposing "Signal Mast(s)" associated with the route. This is
often a requirement for signals in CTC territory.
<ol>
<li>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.
<p><img src="images/SignalMastRepeaterCreationMasts.png" alt=
"Create mast entries">
</p>
</li>
</ol>
</li>
</ol>
<p>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.</p>
<img src="images/SignalMastRepeaterFinalSignalMastLogic.png" alt="FInal SML list">
</li>
<li>Select the "Update Signal Logic" button to make the changes to the RA2 Signal Mast
Logic.</li>
<li>Save your work! See <a href="../../../../html/apps/LoadStoreWork.shtml">Loading and
Storing Your Work</a>.
</li>
<li>Exit the Layout Editor "Edit" mode.</li>
</ol>
That completes the changes!
<h3>Testing the workaround</h3>
<ul>
<li>Click on Turnout 1 until it is "closed" (normal, straight route, ...). Click on Turnout
2 until it is "closed". Click on signal RA171 until it gives an indication which is
less-restrictive than "Stop and Proceed". You should get an indication greater than "stop"
on RA2. If not, make sure that the sensors associated with the blocks in the path are all
"unoccupied" (i.e inactive).</li>
<li>Once you get RA2 to automatically upgrade from "Stop", click on RA171 to cycle thru its
available indications and watch to see which indications show on RA2. Note that the "Speed"
settings for the turnouts and the blocks in the path can all affect the indications seen on
RA2. See below.</li>
<li>Line switch 1 to its diverging position, and line switch 5 to its straight position.
Click on signal RA173 until it gives an indication which is less-restrictive than "Stop and
Proceed". You should automatically get an indication greater than "stop" on RA2. If not,
make sure that the sensors associated with the blocks in the path are all "unoccupied" (i.e
inactive).</li>
<li>Once you get RA2 to automatically upgrade from "Stop" for this path, click on RA173 to
cycle thru its available indications and watch to see which indications show on RA2. Note
that the "Speed" settings for the turnouts and the blocks in the path can all affect the
indications seen on RA2.</li>
<li>Then test the route which was not found by the "discover" process. Line Switch 1
"normal", Switch 3 "diverging" and Switch 5 "diverging". This should activate the
manually-entered route in the Signal Mast Logic, and should allow changes to RA173 to
affect signal RA2. This should allow RA2 to properly display something other than "Stop",
as shown here.
<p><img src="images/SignalMastRepeaterRoute3Functioning.png" alt="Show route 3">
</p>
</li>
</ul>
<p>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).</p>
<p><strong>Note:</strong>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.</p>
<img src="images/SignalMastRepeaterTurnoutSettings.png" alt="Turnut settings">
<h3>A General Note on Signal Repeaters and Multiple Routes</h3>
<p>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.)</p>
<h1>See Also</h1>
For related information, see:
<ul>
<li>The <a href="../../../../html/tools/signaling/index.shtml#tools">Signaling</a> main
help page.
</li>
<li>The <a href="../../../../html/tools/signaling/AspectSignaling.shtml">Aspect Signaling</a> help page.
</li>
<li>The <a href="../../../../html/tools/signaling/SignalMasts.shtml">Signal Mast</a>
documentation.
</li>
<li>The <a href="SignalMastTable.shtml">The Signal Mast Table</a> help page.
</li>
<li>The <a href="SignalMastAddEdit.shtml">Adding Signal Masts</a> help page.
</li>
<li>The <a href="../../../../html/tools/signaling/SignalMastLogic.shtml">Signal Mast
Logic</a> introduction.
</li>
<li>The <a href="SignalMastLogicTable.shtml">Signal Mast Logic Table</a> help page.
</li>
<li>The <a href="AddEditSignalingLogic.shtml">Adding/Editing Signal Mast Logic</a> help
page.
</li>
</ul>
<!--#include virtual="/help/en/parts/Footer.shtml" -->
</div>
<!-- closes #mainContent-->
</div>
<!-- closes #mBody-->
<script src="/js/help.js"></script>
</body>
</html>