Author: Pete Cressman
Keywords: JMRI Warrant Help

# JMRI: Warrants Introduction

Getting Started: This page is a brief introduction to warrants with links to other help pages. Read the more complete Warrants Help, including the section "Get Started with Warrants." See also the clinic presentation by Dick Bronson: JMRI 2014: Automatic Train Control Using Warrants (in two parts and a little out-of-date, but still useful for getting started).

A Warrant in JMRI is a collection of information sufficient to run an automated train. It will set the turnouts for a specified route and drive the train over the route. When running using block occupancy detection and signal configuration, it will make a best effort to control speed according to signal aspects or by occupancy of other trains or other track conditions ahead. Trains can also be tracked on the panel as they run on the layout.

A JMRI Warrant is suggestive of what a warrant is used for on a prototype railroad, but there is no intention to replicate any particular railroad's mode of operation. It is simply the idea of giving an automated train the trackage rights to move from point A to point B (and then move it along).

Warrants are issued using the Control Panel Editor and the The Warrants List which is available in Control Panel Editor. The Warrants List is only available when the building blocks for warrants (OBlocks, OPaths, and Portals) have been previously defined. These elements are created by:

- entering data directly into the Occupancy Block Table (under Tools ⇒ Tables),
- creating them based on Layout Editor Blocks (select "Import Blocks as Occupancy Blocks" under Option in the Occupancy Block Table window),
- or using the graphical interface of the Circuit Builder (also part of Control Panel Editor).

Note that OBlocks, OPaths, and Portals are stored independently of Blocks used by the Layout Editor. Sensors used for determining occupancy can be used simultaneously by both Blocks and OBlocks.

Trains are tracked on the CPE panel as they run on the layout if the layout includes Indicator Track Icons.

## Warrant Types

There are three types of Warrants available:

- A Recorded Script Warrant, where throttle commands are recorded from a throttle you use to drive a train over preselected route. The Warrant then replicates all the commands when played back.
- An NX Warrant (eNtry/eXit), where throttle commands are generated automatically to move a train between Blocks chosen by you "on the fly".
- A Fast Reacting Warrant. This type does not follow the usual Warrant rules, but reacts to signals when entering their approach block with an immediate speed change. This type of warrant is better suited to smaller layouts.

## Creating a Warrant

A Warrant consists of two parts:

- The Route over which a Train will run
- the Commands it will receive when running over the route.

To define the commands for a Warrant, you drive the train over the route you selected and the commands you used are recorded for playback later. For an NX Warrant, commands are generated automatically for the route you have selected.

### Creating the Route

A Warrant Route is a series of Block Paths (OBlocks, OPaths) linked together so a train may travel over it. A Warrant Route is created by first choosing an Origin block (an OBlock), a starting path (OPath) and a portal (Portal) to exit the Originating block. Then, a Destination block (another OBlock) is chosen and a path (an OPath) on which to end the route. Optionally, you may also choose a Via Block, that is, an OBlock the route must include and an Avoid Block, that is, any OBlock the route must not include.

### Recording the Commands

The second part of a Warrant comprises the throttle commands to control the train as it traverses the route. These commands are recorded automatically by running a train over the route in "Learn Mode" or are generated automatically as an "NX Warrant". The command script contain the elapsed time between commands so that playback will attempt to duplicate this timing. If, however, a Warrant is run with a different engine or a different consist, or even the same engine depending on whether its motor is hot or cold, this timing may not be exact. The command script will synchronize upon entering each detection OBlock by either issuing additional commands immediately if the train is fast or waiting to issue commands if the train is slow.

## More Warranted Reading

- The Warrant List: table from which you can control warrant routes and dispatch trains
- Preferences related to Warrants
- Definitions of OBlocks, Portals and OPaths
- Creating OBlocks, Portals and OPaths using tables
- Using the Circuit Builder Tool for creating OBlocks, Portals and Paths
- Creating and Editing Warrants.
- Using Train Trackers to display the identity of trains as they are moved by operators from one occupancy block to another.
- About NX Warrants and creating temporary eNtry/eXit (NX) Warrant.
- How Warrants handle speed changes
- Clinic presentation by Dick Bronson: NMRA 2014 Automatic Train Control Using Warrants (in two parts)