LogixNG Reference - Chapter 5

Action Descriptions

The action descriptions are grouped by the socket type and category.

Action dialogs

When the category and type has been selected, the detail action dialog will be displayed. The content of the dialog will vary depending on the category and type. The typical digital action item dialog is described below.

The dialog for adding and editing digital action items consists of an upper part that contains the item and the actions for that item. The lower part is common to all actions.

For some actions, for example Signal head, you need to first select the item and then you can select the action to do on that item. For example, for Signal head, you first select the signal head to act on and then you can select the appearence to set for that signal head.

Chapter 5 typical action

The Edit screen is the same except for the title, the Create button and the current content will be in the fields.

The left section is normally used to select the item, such as a turnout or a sensor. The right section is the action to be performed. The default mode will be to use the Direct tabs.

See Reference, Local Variable and Formula for details about the other tabs.

The lower section contains a standard set of items

Error Handling
If Use default is selected, the value in Preferences will be used. For other options see error handling.
Catch "Abort execution"
If the error handling (see previous) for any child node is set to Abort execution, a parent node should have this option checked. This lets the parent node handle the error.
Edit comment
Each action can have a comment. The comment dialog has a multiline text area. Click OK to save the comment.
Formula functions
These are explained in the Formula chapter.
Cancel
Close the dialog without applying any changes.
Create/OK
Save the new action or the changes to an existing action.

Digital action :: Item

Chapter 5 digital action item list

Audio

Control the selected Audio item.

Block

Clock

Dispatcher

A Dispatcher train only exists from the time it is created until it is terminated. LogixNG uses the Dispatcher TrainInfo file to refer to a potential Dispatcher train. See the Saving and Retrieving Active Train Information section at Activate New Train. If the related train does not exist when the LogixNG action occurs, the action will be ignored. There will be no notification.

Enable/Disable Logix

Entry/Exit

Light

Light intensity

The Light intensity action is an alternate method to set the Variable Light Intensity value. The standard method sets the value directly from the action using any of the standard input methods.

This action creates a child analog expression called Intensity. Analog expressions are normally used to create a dynamic values, such as random numbers. Using the sin() function along with the Minutes since midnight analog expression, it is possible to change light intensity based on the time of the day using the fast clock or the system clock.

Here is an example using the sin() function.

Chapter 5 intensity example

Local variable

Local variables are described in Chapter 8 - Local Variables.

Instead of specific actions, local variables use tabs to select the action.

Memory

Instead of specific actions, memory uses tabs to select the action.

OBlock

Power

Reporter

The Reporter action is used to copy the report content to a memory variable or a LogixNG local variable. There are three kinds of information.

Note: The meaning of the reports and the state number are defined by originating hardware.

Route

Script

Sensor

The delayed options are handled by Execute Delayed.

Signal head

Signal mast

Sound

Plays the specified sound file. Specify the sound file to play by entering its name in the field provided. Click the file selection button to bring up a file selection dialog to aid in finding the file. Navigate to your sound file, then click your sound file's name in the dialog and the name will be copied to the field.

Throttle

The Throttle action controls a throttle. It has child expressions for loco address, loco speed and loco direction. For now, an analog memory expression or an analog constant expression can be used to control the loco address and the loco speed, but once JMRI has support for AnalogIO devices, an AnalogIO may be used to control loco address and/or loco speed.

Turnout

The delayed options are handled by Execute Delayed.

Turnout, lock

Locks or unlocks a turnout. Select the name for the turnout, and choose the operation from the popup menu. Note: To control the type of turnout lock go to the Turnout Table and select the Lock Mode.

Warrant

Digital action :: Common

Chapter 5 digital action common list

Digital Formulasince 4.25.8

The Digital Formula action provides the ability to create formulas that are not directly related to other items, such as sensors, which use the Formula tab.

The formula action is in particular useful when working with local variables. You can for example increase a local variable by the formula index++ or make some calculations, like turnout = name.substring(2) which removes the first two characters from the string.

The dialog for creating a Digital Formula consists of a single text field.

Chapter 5 digital formula dialog

See Chapter 9 - Formula for details.

Execute delayed

Delay the execution of the following action for a specified amount of time. This is the same as the Logix Delayed Set .... The main difference is that this can be used with any action, such as signals. The time delay units are milliseconds, seconds, minutes and hours.

See Timeout for a conditional delayed execution.

Chapter 5 execute_delay

For

For is a for-loop. It has four children.

When For is executed, the Init action is run once. After that, the While expression is evaluated. If the While returns true, the Do action is executed and at last the AfterEach action is executed. Then the process is repeated, except that the Init action is only executed once.

If Then Else

Reads a digital child expression and if the answer is true it executes the then child action, else it executes the else child action.

There are two options:

Chapter 5 if then else

Many

The Many action executes many child actions.

Read analog and set analog

Read an analog child expression and execute an analog child action.

Read string and set string

Read a string child expression and execute a string child action.

Sequence

The Sequence action executes a series of action/expression pairs. For each pair, the action will be performed and then the expression will wait until it becomes true. When it is true, the next action/expression pair will be started. The sequence will repeat forever or until stopped.

Chapter 5 display action

Table: For each

See Chapter 11 - Table Actions for details on table actions.

Timer

Timer has a number of actions, each executed after a period of time. The time to wait can be 0, which means the related action is executed immediately. The Timer can be configured to only execute the actions once or continuously. The Timer can also be configured to start when the xml data file is loaded or only start when the "Start" expression returns True. The Timer stops when the "Stop" expression returns True. The time unit is selected from the combo box.

Chapter 5 timer dialog

If all times to wait are zero, the timer will automatically stop after executing all the actions once, even if it is set to run continuously. This is a safety feature to avoid locking up JMRI.

To add a socket for the Timer action, edit the Timer and click the Add timer button and a new socket will be added to the end. To remove a socket for the Timer action, edit the Timer and click the Remove timer button and the last socket will be removed. The socket can only be removed if there is no action connected to it.

This example shows using the Timer to implement a traffic light. Note: This example shows renaming the A1, A2, etc. sockets to meaningful names.

Chapter 5 timer example

Another example is using a Timer to blink a light. Create a Timer with a single socket and a Light action that toggles the light on/off. If you want different times for on and off, create a Timer with two sockets where the first socket turns the light on and the second socket turns the light off.

Digital action :: Display

Chapter 5 digital action display list

Icon/Label on panel

Disable/Enable/Hide/Show an icon or label on a specific panel.

Digital action :: LocoNet

Chapter 5 digital action loconet list

Clear loconet slots

This action clears the slot status in the command station if you are using LocoNet.

Update loconet slots

This action forces an update of the LocoNet slot status in JMRI.

Digital action :: Other

Chapter 5 digital action other list

Call module

See Chapter 10 - Modules for details.

Listen on beans

See Chapter 7 - Listen on beans for details.

Listen on beans - Table

See Chapter 11 - Table Actions for details.

Log data

While developing a ConditionalNG, it can be helpful to see field content, make note of the location within the tree, etc. Adding the Log data type in the Other category will display a dialog to configure the Log data options.

Another approach for displaying data is to use the Show dialog action.

Select either or both Log options

Chapter 5 action log data

There are three format types.

Chapter 5 log data format

The table lists the data sources for the comma separated and and string format options.

Click on the Add button to add an entry to the table. Select the source type and add the name or a reference in the Data field.

Chapter 5 log data sources

This example uses the string.format option to combine text with the contents of two memory variables.

Chapter 5 log data sample

Log local variables

See Chapter 8 - Debugging local variables for details.

Logix

LogixNG has an action called Logix that emulates how JMRI Logix works. The action Logix has one expression and a number of boolean actions. A boolean action is an action that takes a boolean value (true/false) and then decides what to do. The action Logix was added mainly to support import of JMRI Logix to LogixNG.

Show dialogsince 4.25.8

The Show dialog action displays a window that can be used to provide notification of an event that has occurred or needs to be handled. It can also be used to request whether an action should be performed by the LogixNG.

Normally, warnings and such can be handled by displaying a message in the system console. The dialog is useful when an immediate notification is needed.

The Show dialog definition is similar to the Log data definition. See Log data for details on formating and including variables.

Chapter 5 show dialog dialog

Additional Features:

Buttons
One or more buttons can be included in the dialog. At least one button must be selected.
Modal
A dialog can be modal or non-modal. Modal means that the dialog window remains above any other window and the user cannot do anything in any other JMRI window until it is closed.
Multiline
The multiline option enables the ability to have multiple lines displayed by the dialog. To get a new line, use the HTML <br> tag.
Selected button
If a predefined local variable is supplied, the selected button number is copied to the local variable. The button numbers are shown next to the button text in the button selection section.
Input stringsince 4.99.1
If a predefined local variable is supplied, a text input field is included. The current value of the variable will be displayed in the text input field. When the dialog is closed using one of the buttons, the value in the input field will be copied to the local variable.

Note: When the dialog is displayed, the rest of the conditional continues to run. In the first example, the A3 action will execute while the dialog is displayed.

After the dialog action has been created, two new rows are added. These are both optional and can be left empty.

Chapter 5 show dialog validate execute
Validate
The Validate expression can be used to check for valid input when using an input local variable. If the expression is false, the dialog will remain open until the expression is true. The close button on the window can be used to bypass validation and execution. If the expression is true or no expression was defined, the Execute action will run.
Execute
The Execute action is run when the validation expression is true or if one was not defined. A common use is handling a multiple button dialog that has the selected button local variable.
Sample dialog with button checking
Chapter 5 show dialog yes no
Chapter 5 show dialog button process
Sample multiline dialog with string.format
Chapter 5 show dialog multiline
Chapter 5 show dialog multiline sample
Sample input dialog with validation using a digital formula
Chapter 5 show dialog input sample
Chapter 5 show dialog iniput code

Shutdown

The ShutdownComputer action can either shutdown or restart the computer, or shutdown or restart JMRI.

Timeoutsince 4.25.8

The Timeout action is used to execute a default action if an expression is not true within the specified time internval.

The Timeout action dialog is similar to the Execute Delayed dialog. The Timeout configuration also requires an expression. If the expression is true before the time expires, the action is not executed.

delayed vs timeout

Web browser

The web browser action opens a web page in the web browser.

Digital boolean action :: Common

To make import from Logix to LogixNG easier, LogixNG has a special action, Logix, that works similar to a Conditional in Logix. The LogixNG Logix action has a digital expression socket and a digital boolean action socket. The usual setup in LogixNG is a Logix action with a Many child with a number of OnChange children.

Chapter 5 digital boolean action common list

Many

The Many action is used together with the Logix action to let the Logix action have more than one action child.

On change

This action is used together with the LogixNG Logix action and gives you the option to decide if the child action should be executed. The options are:

Analog action :: Item

Chapter 5 analog action item list

Light intensity

Sets the intensity of the selected variable light to an analog value.

Memory

Sets a memory to an analog value.

Analog action :: Common

Chapter 5 analog action common list

Many

Sets the value of many analog actions.

String action :: Item

Chapter 5 string action item list

Memory

Sets a memory to a string value.

StringIO

The StringIO sets the string of a StringIO. There is currently one StringIO that can be used with this action: The LocoNet "LCThrottles" StringIO that sends a message to the LocoNet throttles.

String action :: Common

Chapter 5 string action common list

Many

Sets the value of many string actions.


Chapter 6 - Expression Descriptions

Return to the Reference TOC