JMRI: Configure Acela Nodes
Author: Bob Jacobsen
Keywords: JMRI help configure grapevine node

# Acela Node Configuration Tool

This is the help/jmri/jmrix/acela/nodeconfig/NodeConfigFrame help page

Thank you for reading this, hopefully the few minutes you spend reading this will save you hours down the road.

If you have not already, please be sure to read more about JMRI Acela hardware support and the CTI Acela System Names.

## Configuration Files

Just to be perfectly clear, DecoderPro and PanelPro are different skins or user interfaces to the same JMRI program.

You can do anything from any of these three programs, the user interface has just been tailored in an attempt to make it easier for you to do what you want to do:

- Program Decoders using DecoderPro
- Control your Layout using PanelPro

The one difference is that each skin stores its own version of your configuration.

The advantage is that you can set up each skin to have a unique configuration.

The disadvantage is that you may need to set up your configuration more than once (or copy and paste from one configuration to the next) if you want to use a different skin with at least some of the same configuration.

## Back up your Configuration Files

That all said, each skin has only one configuration file (i.e. for DecoderPro it is DecoderProConfig2.xml).

So, if you make a change and SAVE your configuration file (by pressing the SAVE button on the Preferences window) you will write a new configuration file and the old one will be lost forever.

This is all fine and dandy until you realize that you were not connected to your layout and just lost your CTI Acela custom configuration (see below).

So, again, make backup copies of your configuration files (i.e. DecoderProConfig2.xml, PanelProConfig2.xml) often and store them in a safe place.

## Connecting to Your CTI Acela System

It is highly recommended that you let the JMRI software discover your CTI Acela network for you.

To that end, the Add and Delete buttons have been disabled for the time being.

You can go ahead and edit your preferences file (i.e. DecoderProConfig2.xml or PanelProConfig2.xml) if you really want to change things manually.

It is recommended that you configure your CTI Acela network in three steps: Establish Your Connection, Discover Your CTI Acela Network, and then Customize Your Configuration.

### Establish the Connection

With the CTI Acela system powered on and connected to your computer, start JMRI (DecoderPro or PanelPro).

From the main menu select Edit and then select Preferences -> Connections tab.

On the Connections tab select CTI Electronics as the System Manufacturer and Acela as the System Connection. Usually, Acela will be one of your auxiliary connections since it cannot actually run the trains.

You then need to select the correct serial port. Make sure that you get this right. The serial port is probably something like Com4 or Com5 (and probably not Com3).

Press the [Save] button. The JMRI program will end.

If you look at your configuration file (i.e. DecoderProConfig2.xml or PanelProConfig2.xml depending upon which program you ran) you should see a connection entry with the specified serial port. It will look something like (note the second "connection port" line):

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="http://jmri.org/xml/XSLT/panelfile.xsl"?>
    <!DOCTYPE layout-config SYSTEM "layout-config-2-1-7.dtd">
    <layout-config>
      <connection port="COM5" speed="57,600 baud" option1="" option2="DCS100 (Chief)" class="jmri.jmrix.loconet.locobufferusb.configurexml.ConnectionConfigXml" />
      < gui LAFclass="Metal" class="jmri.configurexml.GuiLafConfigPaneXml" LocaleLanguage="en" LocaleCountry="CA" LocaleVariant="" />
      < programmer defaultFile="Basic" verifyBeforeWrite="no" class="jmri.jmrit.symbolicprog.configurexml.ProgrammerConfigPaneXml" />
      < connection port="COM4" speed="9,600 bps" option1="" option2="" class="jmri.jmrix.acela.serialdriver.configurexml.ConnectionConfigXml" />
      <!--Written by JMRI version 2.2 on Mon Jul 28 20:58:27 EDT 2008 $Id$-->
    </layout-config>

### Let JMRI discover your CTI Acela network configuration

Restart JMRI (DecoderPro or PanelPro). If you specified the correct serial port in the previous step then the JMRI software should automatically connect to the CTI Acela network, reset the Acela node and then poll the CTI Acela network and discover which modules (JMRI calls a module a node) you have and in what order.

JMRI will create a node for each module that it finds.

You can see what it found by once again going to the preferences menu (Main menu then Edit menu then preferences) and again clicking the show advanced preferences checkbox to see the auxiliary connections.

Now select the "Configure Nodes" button and you should see the Acela Configure Nodes panel.

The first section is entitled The Nodes in the Network and it will display a two letter symbol for each CTI Acela node that was found.

At this point you should close this window and once again use the "Save" button on the Preferences Screen.

If you now look at your configuration file (i.e. DecoderProConfig2.xml or PanelProConfig2.xml depending upon which program you ran) in addition to the connection entry with the specified serial port for the CTI Acela network you should see node descriptions for each CTI Acela node that was found.

It will look something like (note the lines after the second "connection port" line):

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="http://jmri.org/xml/XSLT/panelfile.xsl"?>
    <!DOCTYPE layout-config SYSTEM "layout-config-2-1-7.dtd">
    < layout-config>
      < connection port="COM5" speed="57,600 baud" option1="" option2="DCS100 (Chief)" class="jmri.jmrix.loconet.locobufferusb.configurexml.ConnectionConfigXml" />
      < gui LAFclass="Metal" class="jmri.configurexml.GuiLafConfigPaneXml" LocaleLanguage="en" LocaleCountry="CA" LocaleVariant="" />
      < programmer defaultFile="Basic" verifyBeforeWrite="no" class="jmri.jmrit.symbolicprog.configurexml.ProgrammerConfigPaneXml" />
      < connection port="COM4" speed="9,600 bps" option1="" option2="" class="jmri.jmrix.acela.serialdriver.configurexml.ConnectionConfigXml" />
        < node name="0">
          < parameter name="nodetype">AC</parameter>
        </node>
        < node name="1">
          < parameter name="nodetype">TB</parameter>
          < parameter name="sensortype0">CG</parameter>
          < parameter name="sensorpolarity0">INV</parameter>
          < parameter name="sensorthreshold0">4</parameter>
          < parameter name="sensortype1">CG</parameter>
          < parameter name="sensorpolarity1">INV</parameter>
          < parameter name="sensorthreshold1">4</parameter>
          < parameter name="sensortype2">CG</parameter>
          < parameter name="sensorpolarity2">INV</parameter>
          < parameter name="sensorthreshold2">4</parameter>
          < parameter name="sensortype3">CG</parameter>
          < parameter name="sensorpolarity3">INV</parameter>
          < parameter name="sensorthreshold3">4</parameter>
          < parameter name="outputwired0">NO</parameter>
          < parameter name="outputinit0">OFF</parameter>
          < parameter name="outputwired1">NO</parameter>
          < parameter name="outputinit1">OFF</parameter>
          < parameter name="outputwired2">NO</parameter>
          < parameter name="outputinit2">OFF</parameter>
          < parameter name="outputwired3">NO</parameter>
          < parameter name="outputinit3">OFF</parameter>
        </node>
        < node name="2">
          < parameter name="nodetype">WM</parameter>
          < parameter name="sensortype0">CG</parameter>
          < parameter name="sensorpolarity0">INV</parameter>
          < parameter name="sensorthreshold0">4</parameter>
          < parameter name="sensortype1">CG</parameter>
          < parameter name="sensorpolarity1">INV</parameter>
          < parameter name="sensorthreshold1">4</parameter>
          < parameter name="sensortype2">CG</parameter>
          < parameter name="sensorpolarity2">INV</parameter>
          < parameter name="sensorthreshold2">4</parameter>
          < parameter name="sensortype3">CG</parameter>
          < parameter name="sensorpolarity3">INV</parameter>
          < parameter name="sensorthreshold3">4</parameter>
          < parameter name="sensortype4">CG</parameter>
          < parameter name="sensorpolarity4">INV</parameter>
          < parameter name="sensorthreshold4">4</parameter>
          < parameter name="sensortype5">CG</parameter>
          < parameter name="sensorpolarity5">INV</parameter>
          < parameter name="sensorthreshold5">4</parameter>
          < parameter name="sensortype6">CG</parameter>
          < parameter name="sensorpolarity6">INV</parameter>
          < parameter name="sensorthreshold6">4</parameter>
          < parameter name="sensortype7">CG</parameter>
          < parameter name="sensorpolarity7">INV</parameter>
          < parameter name="sensorthreshold7">4</parameter>
        </node>
        < node name="3">
          < parameter name="nodetype">YM</parameter>
          < parameter name="outputinit0">OFF</parameter>
          < parameter name="outputinit1">OFF</parameter>
          < parameter name="outputinit2">OFF</parameter>
          < parameter name="outputinit3">OFF</parameter>
          < parameter name="outputinit4">OFF</parameter>
          < parameter name="outputinit5">ACT</parameter>
          < parameter name="outputinit6">OFF</parameter>
          < parameter name="outputinit7">ACT</parameter>
          < parameter name="outputinit8">OFF</parameter>
          < parameter name="outputinit9">OFF</parameter>
          < parameter name="outputinit10">OFF</parameter>
          < parameter name="outputinit11">OFF</parameter>
          < parameter name="outputinit12">OFF</parameter>
          < parameter name="outputinit13">OFF</parameter>
          < parameter name="outputinit14">OFF</parameter>
          < parameter name="outputinit15">OFF</parameter>
        </node>
      </connection>
      <!--Written by JMRI version 2.2 on Mon Jul 28 20:58:27 EDT 2008 $Id$-->
    </layout-config>

You can always get back to this state by erasing your configuration file and repeating these two steps.

### Customize your configuration

Restart JMRI (DecoderPro or PanelPro).

Once again go to the preferences menu (Main menu > Edit menu > Preferences) and again click the show advanced preferences checkbox to see the auxiliary connections.

Again select the "Configure Nodes" button and go to the Acela Configure Nodes panel.

The first section which is entitled "The Nodes in the Network" should display the network the same as it did in the previous step.

You can now customize your configuration.

## Customize your configuration

There are four types of CTI Acela nodes:

- the Acela node itself (nothing to configure)
- sensor modules where you can configure for each sensor circuit:
  - sensor type
  - sensor polarity
  - sensor threshold
- output modules based upon relays where you can configure for each output circuit:
  - wired as normally open or normally closed
  - initial state (Active or off)
- output modules based upon transistors where you can configure for each output circuit:
  - initial state (Active or off)

### Configuring Sensors

A sensor circuit is usually used in one of four ways:

- Noise Filter (CTI default)
  - Just apply a high frequency noise rejection filter
  - Intended for custom solutions
- Switch Debounce
  - In addition to applying a high frequency noise rejection filter, also apply an aggressive switch debounce filter.
  - Intended for use with Magnetic Reed Switches or Manual Push Button switches.
- Car Gap
  - In addition to applying a high frequency noise rejection filter, also apply a debounce filter.
  - Intended for use with Infrared or Photocell sensors.
- Dirty Track
  - In addition to applying a high frequency noise rejection filter, also apply a dirty track filter.
  - Intended for use with Current Detection sensors.

A sensor circuit can be configured in one of two polarities:

- Normal Polarity
  - True is true and False is false.
- Reverse Polarity
  - True is false and False is true.
  - Intended for use with Infrared or Photocell sensors where normally the circuit is closed but a passing engine or car will cause the circuit to open.

In addition, the high frequency noise rejection filter has a threshold that can be programmed with a value from 0 to 31. Larger values correspond to heavier filtering.

By default, JMRI initializes all sensor circuits to Car Gap, Reverse Polarity, and a threshold of 4. This seems to work rather well for the CTI supplied Infrared Sensor Kits.

Remember to save your new configuration by using the Save button in the Preferences window. Also remember to save a copy of your configuration file (i.e. DecoderProConfig2.xml or PanelProConfig2.xml) in a safe place.

### Configuring Outputs

If an output circuit is being controlled by a relay then the relay can be wired in one of three ways:

- Normally Open
  - If no control power is applied to the relay then the circuit between the common terminal and the normally open terminal will be open, that is, it will behave as if a switch is turned off.
  - When wired in this manner the relay will operate like the transistors in one of the other Acela (CTI) modules (i.e. a Switchman).
  - The circuit could simply turn a light on or off, or it could switch something of higher current such as track power to a block (say, in the case of a staging track that stores lighted passenger cars, or engines).
- Normally Closed
  - If no control power is applied to the relay then the circuit between the common terminal and the normally closed terminal will be closed, that is, it will behave as if a switch is turned on.
  - When wired in this manner the output circuit will operate opposite of normal -- that is, Off will mean on and On will mean off.
  - This is useful if you want the circuit to behave as if the relay were not there when the module has no power or has not been initialized.
  - This could switch track power off if wanted, but would default to on if no control power was applied to the CTI module (i.e. the CTI units are not powered up or not initialized).
- As a router
  - When wired in this manner the signal is connected to the common terminal and then one possible route is connected to the NO terminal and the second possible route is connected to the NC terminal.
  - This is useful if you want the relay to route say DCC current to the rail (say, via the NC terminal) or route say Programming Mode current to the rail (say, via the NO terminal).
  - Another use for this would be to control a Tortoise Switch Machine by routing either +voltage or -voltage to the stall motor.
  - When used in this mode, set the default to Normally Open or Normally Closed depending upon how you want the circuit to operate if no control power was applied to the CTI module (i.e. the CTI units are not powered up or not initialized).

The output circuit can also have an initial state or default configuration:

- Normally Off
  - On initialization, the output circuit will be set to off.
- Normally On (or Active)
  - On initialization, the output circuit will be set to on.
  - This is useful if you want to switch the power on for Infrared Transmitter LEDs.
  - By wiring them through a CTI Acela output circuit that defaults to Normally Open and Normally On, one can ensure that the LED (which cannot normally be seen) is only on when the CTI Acela network is on and initialized.

Remember to save your new configuration by using the Save button in the Preferences window.
Also remember to save a copy of your configuration file (i.e. DecoderProConfig2.xml or PanelProConfig2.xml) in a safe place.