Adding/Editing Logix Conditionals
The Edit Conditional pane is where logical expressions are set up and where actions are
specified. The Edit Conditional pane is displayed when a Conditional is created, or when the
Edit button of a Conditional is pressed in the Edit Logix pane. The Edit Conditional pane at the top displays the
system name and user name of the Conditional. The system name is automatically set by the
program and cannot be changed. The user name may be edited by entering/modifying the text in
the User Name field. The user name may not be the same as the user name of another
Conditional in this Logix, but may be the same as the user name of a Conditional in a
different Logix.
Next are two sections--one for the setup of a logical expression and one for set up of
actions. Conditionals are statements of the form:
if (logical expression) then (action)
A Conditional has two distinct parts: its "logical expression" and its "action". The pane
has separate sections for the set up of each.
Logical Expression
The logical expression section contains a table of state variables, with two buttons
below. The first column in the state variable table displays the row number of the state
variable. This is only of importance when the Logic Operator choice is set
to 'Mixed'. The second column contains an automatic AND when the Logic
Operator choice is set to 'AND' or an automatic OR when the choice is 'OR'. When the
choice is 'Mixed' the user may select AND or OR as needed. The third column contains a choice
box that allows the user to select the NOT operator as needed. The fourth column is a
description of the state variable type and the condition for which it is to be tested. Next
is a column displaying the current state for the test description. The state displayed
includes the effect of the NOT operator, if NOT is selected.
The Triggers Calculation column contains checkboxes that normally are checked, so that a
change in the state variable will trigger a calculation of the Logix. For those cases where a
change in a specific entity (sensor, turnout, etc.) should not trigger a calculation result,
you should uncheck the checkbox by clicking on it. Unchecking the checkbox tells the program
to monitor that entity for state changes and calculate the state of the Conditional, but take
no action on the result of the calculation.
The last two columns of the table (Edit and Delete
buttons) are used to edit or delete that row in the state variable table. Delete a state
variable if you decide it is no longer needed. The State column of the table shows the state
(true or false) of each state variable when it is evaluated.
At any time during the entry of state variable data, Check State
Variables may be clicked to check entered data and evaluate state variables. When
this button is pressed, checking and evaluation proceeds until the check completes
successfully, or an error is detected. If an error is detected, checking stops for you to
correct the error and click Check State Variables again. Please remember
after editing name and data items to click a different cell in the table before clicking
Check State Variables (or Update Conditional at the bottom
of the window) so that the program is notified that you have finished your entry. Otherwise
your entry may not take effect, and an error may be reported unnecessarily.
The default Logic Operator is "AND". In this case the Conditional will
test if all variable tests are true, after taking the "NOT" negations into account. Using the
Logic Operator box below the list of variables, you can change that to "OR"
or "Mixed". "OR" means the conditional will be true if any one of the variable tests are
true, after accounting for the negations. Selecting "Mixed" will let you enter a logical
expression in a new text box using AND's, 'OR's and NOT's and the row numbers. In this
expression, each variable is referred to by number, e.g. R1, R2, R3 for the 1st three
variables, you can use the operators "and", "or" and "not" in addition to parentheses. Some
examples:
R1 and R2
R1 or (R2 and R3)
(R2 and R3) or (R3 and R1)
Adding a New State Variable
Press the Add State Variable to add a state variable (a row in the state
variable table). This brings up a pane with a choice box for the user to select a state
variable type. Available state variables are documented below. When a
type is chosen, the Edit Variable pane displays a text field for the name of the entity to be
used for the state variable. When a name (either system name or user name) is entered, it
must correspond to an existing entity (sensor, turnout, light, etc.). It is useful to open
the Sensor Table when entering sensor names, or the Turnout Table to show available turnouts,
etc. The actual format for entering names will depend on the conditional name selection
method setting. See Conditional Name Selection
Method.
For Conditional Variables, the text input field is replaced by two drop down combo boxes.
The first box is used to select the Logix, the second box is used to select a Conditional
that belongs to the selected Logix. since 4.7.4
After the name is entered, select the required state from the Variable
State drop down box. Depending on the selected variable type and state, additional
fields may be displayed.
At any time during the entry of state variable data, the Check State
Variables button may be clicked to check the entered data and evaluate the state
variables. When this button is pressed, the checking and evaluation proceeds until the check
completes successfully, or an error is detected. If an error is detected, the checking stops
for the user to correct the error and click Check State Variables again.
Please remember after editing the system name and data items to click a different cell in
the table before clicking Check State Variables (or Update
Conditional at the bottom of the pane) so that the program is notified that you have
finished your entry. Otherwise your entry may not take effect, and an error may be reported
unnecessarily.
Action
The action section contains a table of actions, with two buttons below. The action list
shows a description of each action. The Edit button is used to change an
action. The Delete button is used to delete an action.
Actions are evaluated in the order listed. To change that order, click the "Reorder"
button on the "Edit Conditional" window. The right-most buttons by the actions will then let
you select the first one, next one, etc.
Adding a New Action
To add a new action, press the "Add Action" button. A new "Edit Action" pane will appear.
Select an action type in the type box. The data items needed to completely specify the action
will appear to the right of the type box. If you don't know what needs to be entered in a
data field, hover your cursor over it, and a hint message will appear. When a name must be
entered, the name must correspond to the system name or the user name of an existing entity
(sensor, turnout, signal head, etc.) of the proper type. Opening the Sensor Table when
entering sensor names, or the Turnout Table to see available turnouts, etc., may be useful.
Available action types are described in detail below. The actual method
for entering names will depend on the conditional name selection method setting. See Conditional Name Selection Method
For each action, three options are available for when to trigger the action:
- On Change to True
- On Change to False
- On Change
These refer to the calculated state of the Conditional, which is equal to the value of the
logical expression as specified in the state variable table. One of these options must be
selected. When done, click either "Update" to install your changes, "Cancel" to close the
window without any changes or "Delete" to remove the action entirely.
When the logical expression and actions have been specified, click Update
Conditional at the bottom of the window. This initiates a check of the logical
expression (the same as done by Check State Variables) and a check of
entered data for actions. If the user name has been edited, it is also checked. If an error
is found, a message box opens announcing the error, and the update is stopped to allow you to
correct the error and click Update Conditional again. If no error is found,
the action is updated with the entered data, the Edit Conditional window is closed, and the
user is returned to the Edit Logix window.
Two other buttons are available at the bottom of the Edit Conditional window. Clicking
Cancel will close the Edit Conditional window without updating the
Conditional. Clicking Cancel results in loss of any data that has been
entered. The other button, Delete Conditional, provides an easy way to
delete an unneeded Conditional. Click Delete Conditional to delete the
Conditional being edited and return to the Edit Logix window.
Available state variables and actions are listed below. For more information, consult the
main Logix documentation.
-
Available State Variables
State variables that are currently available for use in Conditionals are listed below,
along with information on each. State variables must always evaluate to either true or
false. The condition resulting in true is given for each. If the condition is not met,
the state variable evaluates to false. When a Logix is active, the states of entities
(sensor, turnout, light, etc.) specified in state variables in its Conditionals are
monitored, unless the Triggers Calculation checkbox of the state variable is unchecked. A
calculation of all Conditionals in the Logix is triggered when any monitored state
changes as noted below (if not obvious).
- Sensor
- Sensor Active: Evaluates to true if the state of the specified
sensor is active.
- Sensor Inactive: Evaluates to true if the state of the
specified sensor is inactive.
- Turnout
- Turnout Thrown: Evaluates to true if the known state of the
specified turnout is thrown.
- Turnout Closed: Evaluates to true if the known state of the
specified turnout is closed.
- Light
- Light On: Evaluates to true if the specified light is on.
- Light Off: Evaluates to true if the specified light is
off.
- Signal Head
- Signal Head Appearance equals: Evaluates to true if the
appearance of the specified signal head matches the selected Variable Aspect
(appearance).
- Signal Head Lit: Evaluates to true if the specified signal
head is lit.
- Signal Head Held: Evaluates to true if the specified signal
head is being held.
- Signal Mast
- Signal Mast Aspect Equals: Evaluates to true if the aspect of
the specified signal mast equals the aspect specified in the state variable.
Calculation is triggered when the aspect of the signal mast changes.
- Signal Mast Lit: Evaluates to true if the specified signal
mast is Lit.
- Signal Mast Held: Evaluates to true if the specified signal
mast is being held.
- Memory
-
Memory-Value Compare: Compares the value saved in the specified
memory to the value specified in the state variable using a specified comparison
operator. Evaluates to true if the comparison is true. There are 5 comparison
operators that may be used for the evaluation:
- "less than"
- "less than or equal"
- "equals"
- "greater than or equal"
- "greater than"
Calculation is triggered when the monitored memory value changes so that the
comparison to the specified value changes.
-
Memory-Memory Compare: Compares the value saved in one specified
memory to the value saved in a second memory location. There are 5 comparison
operators that may be used for the evaluation:
- "less than"
- "less than or equal"
- "equals"
- "greater than or equal"
- "greater than"
Calculation is triggered when one of the monitored memory values changes so that
the comparison value changes.
- Conditional
- Conditional True: Evaluates to true if the state of the
specified Conditional is true.
- Conditional False: Evaluates to true if the state of the
specified Conditional is false.
- Warrant
- Route Free: Evaluates to true when the route is
available.
- Route Set: Evaluates to true when the route has bee set.
- Route Allocated: Evaluates to true when the route has been
allocated.
- Route Occupied: Evaluates to true when the route has been
occupied.
- Train Running: Evaluates to true< when a train is
running./li>
- Fast Clock
- Fast Clock Range: Evaluates to true if the current fast clock
time is between the begin time and end time specified for the range. Times must be
specified in hh:mm format, where hh is hours and mm is minutes, relative to a
24-hour clock. Calculation is triggered when the fast clock time enters the range
and when the fast clock time exits the range.
- Occupancy Block
- Occupied: Evaluates to true when the block is occupied.
- Power Error: Evaluates to true when a power error has
occurred.
- Out Of Service: Evaluates to true when a block is out of
service.
- Dark: Evaluates to true when a block is to dark.
- Path Occupied: Evaluates to true when a path is occupied
- Unoccupied: Evaluates to true when a path is not
occupied.
- Allocated: Evaluates to true when the block is allocated.
- Entry Exit
- Active: Evaluates to true when the Entry/Exit is active.
- Inactive: Evaluates to true when the Entry/Exit is not
active.
-
Available Actions
Actions that are currently available for use in Conditionals are listed below, along
with information on each:
- Sensor
- Set Sensor: Sets the specified sensor to the chosen state.
Specify the sensor to set by entering/selecting its name. Specify the state to set
by choosing Active or Inactive in the popup menu.
- Delayed Set Sensor: Sets the specified sensor to the chosen
state after waiting for a specified number of seconds. Specify the sensor to set by
entering/selecting its name. Specify the state to set by choosing Active or
Inactive in the popup menu. Specify the number of seconds to delay before setting
the sensor by entering a number in the right-most field. If this Conditional is
already waiting to set this sensor, this action is ignored, and the previous action
continues as originally scheduled.(see also Reset Delayed Set
Sensor - the next item.)
- Reset Delayed Set Sensor: Sets the specified sensor to the
chosen state after waiting for a specified number of seconds. Specify the sensor to
set by entering/selecting its name. Specify the state to set by choosing Active or
Inactive in the popup menu. Specify the number of seconds to delay before setting
the sensor by entering a number in the right-most field. This action is the same as
Delayed Set Sensor, except if this Conditional is already actively
waiting to set the specified sensor, the previous wait is cancelled, and a new wait
period is started. In effect, the wait time is restarted. The sensor is not set
until the most recent wait period expires.
- Cancel Timers for Sensor: Cancels all timers waiting to set
the specified sensor in all Conditionals in all Logixs. Specify the sensor by
entering its name. The sensor is not set; all active delayed actions for setting
the specified sensor are cancelled without setting the sensor.
- Turnout
- Set Turnout: Sets the specified turnout to the chosen state.
Specify the turnout to set by entering/selecting its name. Specify the state to set
by choosing Closed or Thrown in the popup menu.
- Delayed Set Turnout: Sets the specified turnout to the chosen
state after waiting for a specified number of seconds. Specify the turnout to set
by entering its name. Specify the state to set by choosing Closed or Thrown in the
popup menu. Specify the number of seconds to delay before setting the turnout by
entering a number in the right-most field. If this Conditional is already waiting
to set this turnout, this action is ignored, and the previous action continues as
originally scheduled.(see also Reset Delayed Set Turnout - the
next item.)
- Reset Delayed Set Turnout: Sets the specified turnout to the
chosen state after waiting for a specified number of seconds. Specify the turnout
to set by entering its name. Specify the state to set by choosing Closed or Thrown
in the popup menu. Specify the number of seconds to delay before setting the
turnout by entering a number in the right-most field. This action is the same as
Delayed Set Turnout, except if this Conditional is already
actively waiting to set the specified turnout, the previous wait is cancelled, and
a new wait period is started. In effect, the wait time is restarted. The turnout is
not set until the most recent wait period expires.
-
Turnout Lock: Locks or unlocks a turnout. Enter/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.
- Cancel Timers for Turnout: Cancels all timers waiting to set
the specified turnouts in all Conditionals in all Logixs. Specify the turnout by
entering/selecting its name. The turnout is not set; all active delayed actions for
setting the specified turnout are cancelled without setting the turnout.
- Light
- Set Light: Sets the specified light to the chosen state.
Specify the light to set by entering/selecting its name. Specify the state to set
by choosing On or Off in the popup menu.
- Set Light Intensity: Sets the intensity of a specified
variable intensity light to the entered intensity value. Specify the light to set
by entering/selecting its name. Specify the intensity by entering the percent
intensity as an integer in the range 0 to 100. If the specified light is not a
variable light, or if the intensity value entered is not an integer in the required
range, an error message is displayed.
- Set Light Transition Time: Sets the transition time of a
specified variable intensity light to the entered time. Specify the light to set by
entering/selecting its name. Specify the transition time by entering the number of
fast clock minutes needed to move from 0% intensity to 100% intensity. If the
specified light is not a variable light, or if a positive integer is not entered
for the number of fast clock minutes, an error message results.
- Signal Head
- Set Signal Appearance: Sets the specified signal head to the
chosen appearance. Specify the signal head to set by entering/selecting its name.
Specify the Appearance to set by choosing from the popup menu.
- Set Signal Held: Sets the specified signal head to hold.
Specify the signal head to hold by entering/selecting its name.
- Clear Signal Held: Clears the hold on the specified signal
head. Specify the signal head by entering/selecting its name.
- Set Signal Dark: Sets the specified signal head to not lit.
Specify the signal head by entering/selecting its name.
- Set Signal Lit: Sets the specified signal head to lit. Specify
the signal head by entering/selecting its name.
- Signal Mast
- Set Signal Mast Aspect: Sets the specified signal mast to the
chosen aspect. Specify the signal mast to set by entering/selecting its name.
Select the Aspect from the Signal Mast Aspect list.
- Set Signal Mast Held: Sets the specified signal mast to hold.
Specify the signal mast to hold by entering/selecting its name.
- Clear Signal Mast Held: Clears the hold on the specified
signal mast. Specify the signal mast by entering/selecting its name.
- Set Signal Mast Dark: Sets the specified signal mast to not
lit. Specify the signal mast by entering/selecting its name.
- Clear Signal Mast Dark: Sets the specified signal mast to lit.
Specify the signal mast by entering/selecting its name.
- Memory
- Set Memory: Sets the specified memory to the entered value.
Specify the memory to set by entering/selecting its name. Specify the value to set
in the memory by entering it in the right-most field.
- Copy Memory To Memory: Copies the value of a memory variable
to another memory variable. Specify the memory to be copied from by
entering/selecting its name in the leftmost field. Specify the memory to receive
the copied value by entering its name in the rightmost field.
- Logix
- Enable Logix: Enables the specified logix. Specify the logix
to enable by entering/selecting its name.
- Disable Logix: Disables the specified logix. Specify the logix
to disable by entering/selecting its name.
- Warrant
- Allocate Warrant Route: Allocates (reserves) the OBlocks
comprising the route of the warrant for use by the warrant. Specify the warrant by
entering/selecting its System Name or User Name.
- Deallocate Warrant: Deallocates the OBlocks comprising the
route of the warrant so they may be allocated to other warrants. Specify the
Warrant by entering/selecting its System Name or User Name.
- Set Route Turnouts: Sets all the turnouts comprising the route
of the Warrant. Specify the warrant by entering/selecting its System Name or User
Name.
- Auto Run Train: Starts playback of the recorded script for the
train specified in the Warrant. Specify the warrant by entering/selecting its
System Name or User Name.
- Manually Run Train: Serves a "clearance" to an operator that a
humanly run train has running rights for the extent of the Warrant's route. Specify
the Warrant by entering/selecting its System Name or User Name.
-
Control Auto Train: Issues the specified command to an auto run
train. Specify the Warrant of the train by entering/selecting its System Name or
User Name. The Commands are:
- Set Train ID: Set the train ID from the Roster or the DCC
address. When a DCC address is used, also specify Long or Short. Example: 1234(L)
or 10(S).
- Set Train Name: Set the train Name for the selected
Warrant.
- Set Throttle Factor: Increases or decreases the throttle
settings of an auto run train by the specified factor. Specify the Warrant of the
train by entering/selecting its System Name or User Name.
- Fast Clock
- Set Fast Clock Time: Sets the time on the fast clock to the
entered time. The time is entered as hh:mm where hh is hours and
mm is minutes on a 24-hour clock. This action sets the fast clock to the
specified time regardless of whether the fast clock is running or stopped.
- Start Fast Clock: Starts the JMRI fast clock running. If the
fast clock is already running, this action has no effect.
- Stop Fast Clock: Pauses the JMRI fast clock. If the fast clock
is not running, this action has no effect.
- Occupancy Block
- Deallocate Block: Deallocates an Occupancy block. Specify the
OBlock by entering its System Name or User Name.
- Set Block Value: Set a value for the selected block.
- Set Block Error: Set the selected block status to "block
error".
- Clear Block Error: Remove the "block error" status for the
selected block
- Set Block OutOfService: Sets the status of an Occupancy block
to Out-Of-Service. Specify the OBlock by entering its System Name or User
Name.
- Clear Block OutOfService: Sets the status of an Occupancy
Block to the current normal status. Specify the OBlock by entering its System Name
or User Name.
- Audio
- Play Sound File: Plays the specified sound file. Specify the
sound file to play by entering its name in the field provided. Click
... 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
to copy it (including its path) to the field.
- Control Audio object:
- Script
- Script: Run Script: Starts the specified script. Specify the
script to start by entering its name in the field provided. Click
... to bring up a file selection dialog for finding the file.
Navigate to your script file, then click your script file's name in the dialog to
copy it (including its path) to the field.
- Script: Execute Jython Command: Enter the command in the
Script Command field.
- Other
- Trigger Route: Triggers the specified route. Specify the route
by entering its name.