380 lines
20 KiB
Plaintext
380 lines
20 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: Occupancy Block Table Help</title>
|
|
<meta name="author" content="Bob Jacobsen">
|
|
<meta name="keywords" content="JMRI help Occupancy OBlock Table">
|
|
<!--#include virtual="/help/en/parts/Style.shtml" -->
|
|
</head>
|
|
<body>
|
|
<!--#include virtual="/help/en/parts/Header.shtml" -->
|
|
|
|
<div id="mBody">
|
|
<div id="mainContent" class="no-sidebar">
|
|
<h1>Warrants: The Occupancy Block Tables</h1>
|
|
|
|
<h2>Introduction</h2>
|
|
The Occupancy Block (OBlock) Tables were developed to define the elements needed to create
|
|
"<a href="../logix/Warrant.shtml">Warrants</a>" that allow trains to run automatically over
|
|
predetermined routes. It was also a design goal to generate these routes automatically by
|
|
merely specifying the origin and destination of Trains. Furthermore, it was designed for use
|
|
by Logix so that users can define and control automated Trains running from Panel Editor
|
|
panels of their own design.
|
|
<h3>What are Portals and why use them?</h3>
|
|
|
|
<p>Occupancy Blocks, or more properly named "track circuits", are portions of track having
|
|
one or more Sensors to detect occupancy by Trains. These rail blocks, called
|
|
<strong>OBlocks</strong>, are usually separated by gaps cut in the track which isolate the
|
|
detecting sensors. However this is not always the case, since optical sensors might also be
|
|
used to detect occupancy in a section of track. But whatever method is used to determine a
|
|
block and the means of detecting its occupancy, there is some point that separates one block
|
|
from another block. This dividing line between two blocks, whether a physical gap or an
|
|
imaginary line, marks a transition from one block to another. These transition points are
|
|
called <strong>Portals</strong>.</p>
|
|
|
|
<p>Undoubtably you created Blocks on your layout because it was important for you to know
|
|
when one section of track was exited and another was entered. One or more track circuits
|
|
might be grouped together to make a prototypical Block, i.e. a section of track whose use is
|
|
governed by signals. This can provide Interlocking. The Signals governing a Block are
|
|
logically placed at the Portal points. If you have signals on your layout, consider where
|
|
they are located. Most likely they are placed near dividing points between Blocks. So
|
|
regardless of the name, Portals are a significant concept.</p>
|
|
|
|
<h3>OPaths through Portals</h3>
|
|
|
|
<p>There may be many ways to traverse an OBlock. For example, in the diagram below both
|
|
OPaths 31a and 31b traverse Block 31.<br>
|
|
A Path within a Block will enter at one Portal and exit through another Portal. See for
|
|
example Path 31b in the diagram, which enters Block 31 through Portal 2-31b and exits via
|
|
Portal 31-5.<br>
|
|
Or a Path may terminate within the Block, that is, the Path is a spur. Again, Portals are a
|
|
useful concept to indicate these entrance and exit points.</p>
|
|
|
|
<p>Note that a Path must have at least one Portal for an entry/exit point and cannot have
|
|
more than two Portals. A <strong>Path</strong> is unambiguously defined by specifying the
|
|
Turnouts and their settings for a Train to proceed safely through the Block.</p>
|
|
<!-- image by Egbert Broerse @silverailscolo 2018 -->
|
|
<img src="images/OBlockPortalsExample.png" width="842" height="137" alt=
|
|
"OBlock Portals Paths Concept Track Diagram">
|
|
<h2 id="definitions">Definitions</h2>
|
|
Warrants and the Occupancy Tables use the following elements:
|
|
<ul>
|
|
<li>
|
|
<strong>Blocks</strong> are implemented in JMRI as OBlocks, which are extensions of JMRI
|
|
Blocks. They have the following characteristics:
|
|
<ul>
|
|
<li>An OBlock has from 1 to N Portals.</li>
|
|
|
|
<li>Although an OBlock can be defined without a Sensor, i.e. a "Dark Block", it should
|
|
have a Sensor. If it has more than one Sensor, these Sensors should be "OR"ed together
|
|
and trigger a single internal Sensor for the Block.</li>
|
|
|
|
<li>An OBlock has from 1 to M OPaths.</li>
|
|
|
|
<li>An OBlock has 0 to K PathTurnouts.</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Portals</strong> separate Blocks. They have the following characteristics:
|
|
<ul>
|
|
<li>A Portal has exactly two Blocks (no more, no less)</li>
|
|
|
|
<li>A Portal serves both directions of travel.</li>
|
|
|
|
<li>A Portal may have 0 to 2 Signals. If a Portal has a Signal, it faces one of its
|
|
Blocks. A second Signal, if it exists, faces the other Block. Each Signal controls the
|
|
movement of a Train exiting the Block it faces and thus the entrance of the Train to
|
|
the other Block.</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Paths</strong> traverse a Block. They are implemented as JMRI OPaths, which are
|
|
extensions of JMRI Paths. They have the following characteristics:
|
|
<ul>
|
|
<li>An OPath has 0 to N Path Turnouts, each with a defined state allowing a Train to
|
|
follow the Path.</li>
|
|
|
|
<li>An OPath has at least one, and no more than two, Portals.</li>
|
|
|
|
<li>An OPath serves both directions of travel, so no duplicates are needed to travel N
|
|
and S.</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
How OBlocks, Portals and OPaths are used is described in the <a href=
|
|
"../logix/Warrant.shtml">Warrants</a> Help. You may want to browse that before reading
|
|
further.
|
|
<p>OBlocks, Portals and OPaths can be created and edited using the methods described below,
|
|
or they can also be created and edited from a WYSIWYG graphical interface described in the
|
|
<a href="../display/CircuitBuilder.shtml">Circuit Builder</a> Help.</p>
|
|
|
|
<p>Circuit Builder can be used you if you have a Control Panel Editor track diagram using
|
|
track icons showing your layout. Otherwise you will need to use the tables below. See
|
|
<a href="../logix/OBlockEdit.shtml">Creating and Editing OBlocks, Portals and OPaths</a> for
|
|
more details on using the tables.</p>
|
|
|
|
<h2 id="oblock_gui_options">Tables to edit Occupancy Block, Portals and Path</h2>
|
|
|
|
<p>In JMRi Preferences > Display you can choose your preferred interface to edit these
|
|
items in tables (restart required):</p>
|
|
|
|
<ul>
|
|
<li>As a "tabbed" set in the regular JMRI Tables style, with dedicated editing panels and
|
|
combo-boxes to select items already defined in JMRI:<br>
|
|
<a href="images/OBlockTableTabbed.png"><img src="images/OBlockTableTabbed.png" class=
|
|
"floatRight" width="701" height="290" alt="OBlock tabbed Tables in JMRI 4.21.3"></a>
|
|
</li>
|
|
|
|
<li>As a virtual "desktop" of windows grouped table windows, supporting Drag-n-Drop and
|
|
in-table editing and validation<br>
|
|
<a href="images/OBlockWindow.png"><img src="images/OBlockWindow.png" class="floatRight"
|
|
width="701" height="287" alt="OBlock Tables frame in JMRI 4.3.4"></a>
|
|
</li>
|
|
</ul>
|
|
|
|
<h3>Tabbed OBlock GUI</h3>
|
|
<span class="since">since 4.21.3</span>
|
|
<p>The information in the tables is basically the same as you find in the desktop style, but
|
|
instead of an empty bottom row. New items are added by clicking one of the [Add...] buttons
|
|
below the tables. This opens up a pane to configure all items for a new OBlock etc. Feedback
|
|
in the status bar and tooltips assists to fill in the correct information.<br>
|
|
When you are done, click [Create] to complete the definition in JMRI, after which it shows up
|
|
as an extra row in the table.<br>
|
|
To edit an item in one of the tables, click the [Edit] button at the end of its table
|
|
row.<br>
|
|
To prevent duplication, please refer to the detailed description of all items below.<br>
|
|
Specific help is accessible via the Window Help menu.</p>
|
|
|
|
<h3>Desktop OBlock GUI</h3>
|
|
|
|
<p>The tables to edit OBlocks etc are contained within a single frame that can be minimized
|
|
or closed. The individual table frames can be minimized within this parent frame using the
|
|
familiar OS window buttons.</p>
|
|
|
|
<p>Each of the tables in the Occupancy Block, Portal, Path Frame has a bottom row with blank
|
|
entries. Entering data into these entries and pressing the 'Enter' key will create a new item
|
|
in the table. 'Drag and Drop' and 'Copy and Paste' are implemented to provide easy ways to
|
|
move text from table to table.</p>
|
|
|
|
<h3>Columns in the Occupancy Block Table</h3>
|
|
Each Occupancy Block on your layout should be entered as a row in this table, listing:
|
|
<ul>
|
|
<li><strong>System Name</strong>: The System Name of the OBlock. The system letter 'O', and
|
|
type letter 'B' is used for 'OBlock' although the implementation is not
|
|
system-specific.<br>
|
|
If these letters are not entered they are automatically prepended.</li>
|
|
|
|
<li><strong>User Name</strong>: The User Name of the OBlock.</li>
|
|
|
|
<li><strong>Comment</strong>: You may enter any text in this field you wish.</li>
|
|
|
|
<li><strong>Sensor</strong>: The Sensor that detects occupancy of the Block.</li>
|
|
|
|
<li><strong>State</strong>: Shows a bit map of the Occupancy Sensor's state. Click on the
|
|
cell to see the word values.</li>
|
|
|
|
<li><strong>Length</strong>: The length of the Block (see next line for units). This is an
|
|
important parameter if you use NX Warrants.</li>
|
|
|
|
<li><strong>Units</strong>: The unit used to determine the length (inches or
|
|
centimeters).</li>
|
|
|
|
<li><strong>Speed Notch</strong>: An optional speed limit for the Block. A drop-down box
|
|
lists the Signal Aspects controlling speed. A blank entry indicates any speed restriction
|
|
will continue to be enforced. This should be the typical setting. "Normal" indicates speed
|
|
will return to the previous normal speed.</li>
|
|
|
|
<li><strong>Paths</strong>: A button that opens the <strong>Block-Path</strong> Table where
|
|
the Paths of this Block are entered. This table is described below.</li>
|
|
|
|
<li><strong>Delete</strong>: A button to delete the Block. To make the deletion permanent,
|
|
save your configuration file to disk</li>
|
|
</ul>
|
|
|
|
<p>This table is initially sorted by the System Name of the OBlocks. This means that when a
|
|
new row is added the entry will jump to its position in the sort. After entering a new
|
|
OBlock, you may find it at the top of the window should you need to do further editing.<br>
|
|
<span class="since">since 2.12</span>You can sort the table by clicking on a column
|
|
header.</p>
|
|
|
|
<p>Several columns are hidden in the OBlock table. To hide/unhide a column, right click in
|
|
the Header portion of the table.</p>
|
|
|
|
<h3>Columns in the Portal Table</h3>
|
|
|
|
<p>The Portal table has columns for the blocks each portal separates. You do not need to be
|
|
concerned about the direction of travel through the portal. <em>It does not matter which side
|
|
of the portal the blocks names are entered</em>, since the algorithms that compute train
|
|
routes will decipher the correct entrance and exit points.</p>
|
|
|
|
<ul>
|
|
<li><strong>Block Name</strong>: The user or system name of the OBlock on one side of the
|
|
Portal.</li>
|
|
|
|
<li><strong>Portal Name</strong>: The portal name. The names of portals must be
|
|
unique.</li>
|
|
|
|
<li><strong>Block Name</strong>: The user or system name of the OBlock on the other side of
|
|
the Portal.</li>
|
|
|
|
<li><strong>Delete</strong>: A button to delete the Portal. To make the deletion permanent,
|
|
save your configuration file to disk</li>
|
|
</ul>
|
|
This table is sorted by Portal Name. This means that when a new row is added the entry will
|
|
jump to its position in the sort. After entering a new Portal, you may find it at the top of
|
|
the window for further editing.
|
|
<h3>Columns in the Signal Table</h3>
|
|
|
|
<p>For each signal on your layout, make an entry in the Signal Table. This Signal will
|
|
control the actions of any warranted train - changing its speed according to the Signal's
|
|
indication when the train reaches the Portal where the signal is placed. That is, the Signal
|
|
'protects' the Blocks beyond the Portal. The Signal may be either a <strong>Signal
|
|
Mast</strong> or a <strong>Signal Head</strong>.</p>
|
|
|
|
<ul>
|
|
<li><strong>Signal Name</strong>: Enter the name of the Signal, either the System Name or
|
|
User Name (In the case where the same name is used for both a Signal Mast and Signal Head,
|
|
the Signal Mast will be chosen by the program).</li>
|
|
|
|
<li><strong>From (Approach) Block</strong>: Enter the name, either System Name or User
|
|
Name, of the Block that the Signal faces. The Signal controls the movement of a Train
|
|
exiting from the approach Block and entering into the protected Block.</li>
|
|
|
|
<li><strong>(Through) Portal</strong>: Enter the name of the Portal where the Signal is
|
|
placed.</li>
|
|
|
|
<li><strong>To (Protected) Block</strong>: Enter the name, either System Name or User Name,
|
|
of the Block whose entrance is protected by the Signal.</li>
|
|
|
|
<li><strong>Offset</strong>: (Optional) The distance added (or subtracted for negative
|
|
values) to the point where a speed change required by the Signal's Aspect should begin.
|
|
Often this equals the distance from where the mast of the signal is placed to where the gap
|
|
of the Block it protects is.</li>
|
|
|
|
<li><strong>Units</strong>: The unit used to determine the offset length (in inches or
|
|
centimeters, click to convert).</li>
|
|
</ul>
|
|
|
|
<h3>How Signal Aspects change Speed</h3>
|
|
|
|
<p>A Warrant detects the signal Aspect when it's train enters the <em>approach</em> Block and
|
|
- if needed - prepares to change the speed before it reaches the <em>protected</em> Block.
|
|
Any speed change is ramped down to the speed required by the Signal. The Warrant calculates
|
|
when the speed ramp-down should begin using the parameters involved with the Speed Profile or
|
|
throttle factor of the engine (see <a href="Warrant.shtml#SpeedMap">Warrants</a>). The point
|
|
where the speed change should complete can be adjusted (+/-) by the above
|
|
<strong>Length</strong> amount, should that be desirable.</p>
|
|
|
|
<p>Likewise, when the Signal indicates a Clear or increased speed from a stopped or reduced
|
|
speed condition, the speed will be ramped up to the allowed or recorded speed.</p>
|
|
|
|
<h3 id="oblockpath">Columns in Block-Path Tables</h3>
|
|
|
|
<p>Each Block in the Occupancy Block Table will have one or more Paths in it. Pressing the
|
|
<strong>Paths</strong> button in a row of the Occupancy Block Table will open this table.
|
|
<em>Direction of the path is immaterial</em>. 'from' and 'to' do not have to correspond to
|
|
any particular side of the Block; they are just Portal names for the Path that traverses from
|
|
'this portal' to 'that portal'.</p>
|
|
|
|
<ul>
|
|
<li><strong>From Portal</strong>: The Portal name of one entrance/exit point of the
|
|
Path.</li>
|
|
|
|
<li><strong>Path Name</strong>: The name of the Path. Path names only have to be unique
|
|
within the Block. E.g, "Westbound Main" could be used as the Path Name in all the Blocks of
|
|
the "Westbound Main" on your layout.</li>
|
|
|
|
<li><strong>To Portal Name</strong>: The Portal name of the other entrance/exit point of
|
|
the Path.</li>
|
|
|
|
<li>
|
|
<strong>Turnouts</strong>: A button that opens the <strong>Block-Path-Turnout</strong>
|
|
table, where the turnouts that define the Path are entered. This table is described
|
|
<a href="#oblockpathturnout">below</a>.
|
|
</li>
|
|
|
|
<li><strong>Delete</strong>: A button to delete the Path. To make the deletion permanent,
|
|
save your configuration file to disk</li>
|
|
</ul>
|
|
|
|
<h3 id="oblockpathturnout">Columns in Block-Path-Turnout Tables</h3>
|
|
If the Path crosses a Turnout, then it is necessary to have the Turnout in the correct
|
|
position in order to traverse the Path. This table is used to define these settings (if the
|
|
path does not cross any turnouts, this table is left empty). Note there will be lots of these
|
|
tables, one for each path in each Block of the Occupancy Block Table.
|
|
<ul>
|
|
<li><strong>System/User Name</strong>: The System Name or User Name of the Turnout in the
|
|
Path.</li>
|
|
|
|
<li><strong>Turnout Setting</strong>: the position of the Turnout to make the path</li>
|
|
|
|
<li><strong>Delete</strong>: A button to delete the Turnout settings. To make the deletion
|
|
permanent, save your configuration file to disk</li>
|
|
</ul>
|
|
|
|
<h3>Columns in the Block-Portal Cross Reference Table</h3>
|
|
This is a read only table to assist in identifying all the Portals to a Block. It lists all
|
|
the Portals that have been defined for each Block, grouped under each Block heading. It is
|
|
opened from the <a href="#oblockcrossref"><strong>Show Block-Portal Cross
|
|
Reference</strong></a> menu item.
|
|
<h2>Menus of the Occupancy Block, Portal, Path frame</h2>
|
|
|
|
<h3>The File menu</h3>
|
|
This menu has the standard menu items for saving configuration files and panels.
|
|
<h3>The Edit menu</h3>
|
|
This menu has the standard menu items for Cut, Copy and Paste.
|
|
<h3>The Tables menu</h3>
|
|
This menu has items to open the tables in the Occupancy Block, Portal, Path frame:
|
|
<ul>
|
|
<li><strong>Show Occupancy Block Table</strong>: Opens the Occupancy Block window, if it is
|
|
minimized. This table cannot be closed.</li>
|
|
|
|
<li><strong>Show Portal Table</strong>: Opens the Portal window, if it is minimized. This
|
|
table cannot be closed.</li>
|
|
|
|
<li>
|
|
<a id="oblockcrossref"><strong>Show Block-Portal Cross Reference</strong></a>: Opens a
|
|
table window that cross references Portals to their Blocks. It organized per Block,
|
|
showing all the portals attached to the block. It is a counterpoint to the Portal Table
|
|
which is organized per portal.
|
|
</li>
|
|
|
|
<li><strong>Open Block-Path Tables</strong>: This is a cascading menu that opens a Path
|
|
pane for a Path from a Block. Most likely there will be so many of these panes that the
|
|
menu will be larger than the screen.<br>
|
|
It is probably easier to open these panes from the <strong>Paths</strong> button in a row
|
|
of the Occupancy Block table.</li>
|
|
|
|
<li><strong>Open Block-Path-Turnout Tables</strong>: This is a cascading menu that opens a
|
|
Turnout pane for a Path from a Block. Most likely there will be so many of these panes that
|
|
the menu will be larger than your screen.<br>
|
|
It is probably easier to open these panes by clicking on the <strong>Turnout</strong>
|
|
button in a row in a Block-Path Table window.</li>
|
|
</ul>
|
|
|
|
<h3>The Windows menu</h3>
|
|
This menu has the standard menu items for opening JMRI window frames.
|
|
<h3>The Help menu</h3>
|
|
This menu has the standard menu items for JMRI help.
|
|
<h2>Further Reference</h2>
|
|
|
|
<p>To read about how OBlocks, Portals and OPaths can be used to generate train Routes and
|
|
make automated train Scripts, see <a href="../logix/Warrant.shtml">Warrants</a>.</p>
|
|
|
|
<p>See <a href="../logix/OBlockEdit.shtml">Creating and Editing OBlocks, Portals and
|
|
OPaths</a> for more details on using these Tables.</p>
|
|
|
|
<p>See <a href="../display/CircuitBuilder.shtml">Circuit Builder</a> for creating and editing
|
|
OBlocks, Portals and OPaths from a graphical representation of your track plan.</p>
|
|
<!--#include virtual="/help/en/parts/Footer.shtml" -->
|
|
</div>
|
|
<!-- closes #mainContent-->
|
|
</div>
|
|
<!-- closes #mBody-->
|
|
<script src="/js/help.js"></script>
|
|
</body>
|
|
</html>
|