LogixNG Tutorial - Chapter 23

Using LogixNG in other parts of JMRI or by third party software

System names of LogixNG actions and expressions are usually not exposed to the user. This information is mainly intended to JMRI developers that want to use LogixNG as a backbone for other features, like SSM. And for developers that uses JMRI as a library and want to use LogixNG as a backbone for their features.

Like everything else in JMRI, items in LogixNG have a system name and optional a user name. All system names in LogixNG can be automatically generated and that's recommended for new or unexperienced users. It's recommended to give LogixNGs and ConditionalNGs a user name, but for expressions and actions, that is usually not needed.

The section below describes the syntax for system names in LogixNG. It's highly recommended for new and unexperienced users to skip this section and only use automatically generated system names and to give LogixNGs and ConditionalNGs a user name.

Each system name in JMRI starts with the system prefix, which for the internal connection usually is "I", but may be something different, following by the type letter "Q" for LogixNG. Together it's "IQ", which also has the meaning "Intelligence quotient", and setting up complex rules in LogixNG can be training for your brain...

Within LogixNG, there are several types of system names, for digital actions, digital expressions, string actions, and so on. If each of these had their own type letter, like turnouts and sensors have, JMRI would had run out of available type letters. Instead, LogixNG has sub type letters for each of these.


System names may have these forms. Here, "123" is an arbitrary number. Note that only numbers, not arbitrary characters, is allowed in the latter part of the system name.

IQ123LogixNG
IQC123ConditionalNG
IQAA123Analog Action
IQAE123Analog Expression
IQDA123Digital Action
IQDBA123Digital Boolean Action
IQDE123Digital Expression
IQSA123String Action
IQSE123String Expression
IQM123LogixNG Module

If the user wants to have an arbitrary string in the latter part of the system name, the dollar sign must be added. Here, "characters" is some arbitrary characters. The reason for why the dollar sign is needed is that LogixNG must be able to resolv which characters is the system name, for example IQ, and which part of the string is the sub system prefix, for example DA.

IQ$charactersLogixNG
IQC$charactersConditionalNG
IQAA$charactersAnalog Action
IQAE$charactersAnalog Expression
IQDA$charactersDigital Action
IQDBA$charactersDigital Boolean Action
IQDE$charactersDigital Expression
IQSA$charactersString Action
IQSE$charactersString Expression
IQM$charactersLogixNG Module

JMRI can auto create system names for the user. In that case, the text :AUTO: is added. Note that only numbers, not arbitrary characters, is allowed in the latter part of the system name. The user should never create a system name with :AUTO: .

IQ:AUTO:123LogixNG
IQC:AUTO:123ConditionalNG
IQAA:AUTO:123Analog Action
IQAE:AUTO:123Analog Expression
IQDA:AUTO:123Digital Action
IQDBA:AUTO:123Digital Boolean Action
IQDE:AUTO:123Digital Expression
IQSA:AUTO:123String Action
IQSE:AUTO:123String Expression
IQM:AUTO:123LogixNG Module

JMRI may create system names for internal use for JMRI itself. In that case, the text :JMRI: is added. Here, "characters" is some arbitrary characters. The user should never create a system name with :JMRI: .

IQ:JMRI:charactersLogixNG
IQC:JMRI:charactersConditionalNG
IQAA:JMRI:charactersAnalog Action
IQAE:JMRI:charactersAnalog Expression
IQDA:JMRI:charactersDigital Action
IQDBA:JMRI:charactersDigital Boolean Action
IQDE:JMRI:charactersDigital Expression
IQSA:JMRI:charactersString Action
IQSE:JMRI:charactersString Expression
IQM:JMRI:charactersLogixNG Module

JMRI may be used as a library for external applications. These applications may create system names for internal use for themselves. In that case, the text :JMRI-LIB: is added. Here, "characters" is some arbitrary characters. The user should never create a system name with :JMRI-LIB: .

IQ:JMRI-LIB:charactersLogixNG
IQC:JMRI-LIB:charactersConditionalNG
IQAA:JMRI-LIB:charactersAnalog Action
IQAE:JMRI-LIB:charactersAnalog Expression
IQDA:JMRI-LIB:charactersDigital Action
IQDBA:JMRI-LIB:charactersDigital Boolean Action
IQDE:JMRI-LIB:charactersDigital Expression
IQSA:JMRI-LIB:charactersString Action
IQSE:JMRI-LIB:charactersString Expression
IQM:JMRI-LIB:charactersLogixNG Module