Author: Dave Sand
Keywords: jmri LogixNG yard ladder example

# LogixNG Reference - Yard Ladder Example

A staging yard contains four tracks accessed using a three turnout ladder. When a track label is clicked, the turnouts will be changed to line the route. The track labels are internal sensors using a JMRI Sensor Group. The sensor group will have one active sensor.

The logic for the ladder is based on a CSV table that defines the path for each staging track.

The LogixNG listens for changes to the sensor group members. When a sensor becomes active, the LogixNG uses the table information to set the route. To support multiple staging yards, use the LogixNG Clipboard to clone the logic and change the CSV table name in rows A1 and B1.

## LogixNG Features

Listen on beans - Table :: A1
  The track sensor names from the Track column are used to build a list of sensors to trigger the logic. These are the sensors in the Sensor Group.
Find table row or column :: B1
  The active sensor is used to find the appropriate row in the table. The cells in the row are using to build a local variable Map, rowMap, which has the column name as the key with the cell content as the value.
For each :: B2
  For each is used to iterate through a list items, such as all the sensor. In this case the rowMap.keySet() formala is used. keySet() is a Java method which returns a list of keys from a Map. In this example, the turnout names.
If Then Else :: C2
  In addition to the Always execute option, the Evaluate needed expressions option is used. If the stateName local variable is empty, the rest of the formula is skipped since the expression is already false.
Local variable Map
  The Find in table action converts the row of turnout states into a local variable Map. Each row of the map contains a key/value pair. In this example, the key is the column turnout name and the value is the Closed/Thrown/empty state.
Formulas
  Formulas are used in B2, C1 and the If statement in C2. The If formula is similar to the Logix Antecedent but uses the Java syntax.

## Download

File name: yard-ladder-example.zip

Contents:

- yard-ladder-example.xml
- yard-ladder.csv

yard-ladder-example.xml configuration:

- The sensor table menu Defaults ⇒ Initial Sensor State is Inactive.
- The sensor group name is Ladder.
- An initialization LogixNG sets the turnouts Closed.

Return to the Reference TOC