Fusion ProXR Advanced Quick Start Guide

Introduction

Introducing the Fusion ProXR Advanced relay control command set.  The ProXR Advanced command set is what allows users to develop software to control relays for Fusion series controllers.  Based on the ProXR Enhanced command set, the ProXR Advanced command set has new commands and new command options that greatly extend your ability to control more relays with fewer commands.

Out with the Old

We thinned down the command set so it would not contain as many redundant commands as the ProXR and ProXR Enhanced devices.  This saved space in the CPU that was better reserved for new features.  The resulting changes mean Fusion series controllers have more capabilities and consume fewer CPU resources than ever before.  It’s our thinnest, lightest, and strongest relay control command set we have ever created.

New Feature Highlights

ProXR Advanced now supports macro storage cells.  Each macro storage cell holds the status of 256 relays.  There are 256 macro storage cells available, making it possible to instantly change the state of all relays to a predefined pattern with a simply command.  Macro storage was a feature we developed many years ago for our 16 and 32-channel relay controllers.  We decided the time was right to bring back this powerful command set.  The TLEE expansion module is required, as this feature needs a lot of EEPROM memory.

A new Pulse relay feature was also added, so now you don’t have to turn a relay on and then back off, just pulse the relay with a simple new command.

Another notable difference between ProXR Advanced and ProXR Enhanced is the way the controller responds to commands.  Older Enhanced controllers simply respond to your relay control commands with an 85.  ProXR Advanced controllers respond with a relay bank number and status for all relays in the affected bank, saving you from querying the controller with a separate command.  This effectively doubles communication speed for many computer controlled relay applications.

Because ProXR Advanced is part of a Fusion series controller, relays may also be controlled from Reactor (sensor controlled relays), and Taralist (time activated relay schedule).  ProXR Advanced is on the top of the priority list, so users can always override a sensor or time scheduled relay using a ProXR Advanced relay control command.  We understand the relay priority can be a little confusing, so we color coded the status of each relay so users have a clear understanding of how each relay is controlled.

Combined with the capabilities of Reactor and Taralist, ProXR Advanced sets new standards for our already powerful and popular relay control architecture. 

Users should know that we began using our Fusion series controllers for in-house automation applications approximately 8 months prior to product release, which lead to many product improvements.  Building a product and using a product are two separate things.  We have been unable to locate any bugs in the current release of firmware.  We will never make the claim that a bug does not exist.  But we will tell you, we have used our product extensively, and we have fixed and improved everything we could find. 

Nonetheless, customers should never use any relay controller manufactured by any company for any application that could cause harm to people or damage to property.  Bugs are a part of life, and all relay controllers manufactured by all companies should never be used in these kinds of applications.

Fusion controllers require all commands to be API Encoded.  Please review the API Codec Quick Start Guide for proper implementation of API.  API adds checksum validation to every command, greatly reducing the possibility of command misinterpretation.

ProXR Advanced Features:

  • Watchdog/Server Reboot/Keep Alive Timing Functions
  • Native Support for 1 to 255 Banks of Relays Depending on CPU
  • Support for High Baud Rates of 230.4K Baud to 2 Million Baud Depending on CPU
  • Support for Dual Interface Technologies
  • API Communications Codec adds Checksum Validation to every command
  • Supports Duration Timing Commands (turn a light on for 8 hours)
  • Pulse Relay Feature
  • Relay Grouping option allows simultaneous control of adjacent relays without complicated programming
  • Simultaneously Set the Status All Relays
  • Ask the Status of Individual or All Relays
  • User-Programmable Startup Status
  • 256 Relay Macros Set the Status of all Relays using Macro Commands
  • User-Selectable Communication Rates
  • Diode Clamped Relay Driver Stage
  • Busy/Ready Status LEDs
  • 12 Volt DC Operation
  • Powerful Byte-Based Command Set for Efficient Communications
  • Compatible with ANY Computer or Microcontroller, Including Windows, Mac, Linux, Android, and iOS
  • ProXR Advanced can be controlled from almost any programming language including but not limited to C#, C++, C, Objective C, Visual Basic, Labview, MatLab, etc.

Base Station Software

Learning how to use a ProXR Advanced controller is greatly simplified by the use of Base Station software.  Base Station is available from the following link: ncd.io/start

If communications is properly configured, Base Station will display a window similar to the one shown below.  If you experience any problems, please review the Quick Start Guide that applies to your communication technology for troubleshooting information.

Base Station software will adapt this window for your particular model of controller.

Click on ProXR Advanced Relay Control Command Set

ProXR Advanced Interface

  1. Select Relay Bank commands are directed to.  Note:  Selecting 0 directs commands to all available relay banks.
  2. On/Off control of individual relay in selected bank.
  3. Set status of all relays in the selected relay bank.
  4. Read the status of individual relays in selected bank.
  5. Control Automatic Refreshing, used to tell the controller when to refresh relays.  By default, automatic Refreshing is on, so every relay control command causes relays to update.  Turn of Relay Refreshing, use the command set to manipulate relay memory as needed, then manually refresh the relay bank using the Manual Refresh button.  Read the Refreshing mode if it seems like you have lost control of the relays.
  6. Communication Details.  This portion of the interface is visible when selected in the MORE feature labeled section G in diagram.
  7. Either reads MORE or LESS.  MORE shows Section F in diagram.  The LESS option shrinks the windows to exclude Section F.
  8. Detail Map displays complete details about how each relay is controlled.
  9. Read Status of all relays in selected bank.
  10. Displays the relay status On/Off as well as color coding that indicates which portion of the Fusion processor has control of the relay.
    IMPORTANT:  Right Click on colored boxes to change priority status.
  11. Store and Recall the relay status of all relays using the Memory Cell features.  The status of 256 Relays are stored in each memory cell.  There are 256 memory cells available.  Use this portion of the control panel to view, store, and recall memory cell data.  Download and Upload memory cell data so that memory cell data can be used on other controllers.
  12. Turn All Relays in the Selected Bank On or Off.  Invert the Relay Status or Reverse the On/Off Pattern of relays in the selected bank.
  13. Relay Status and Power up is used to control the On/Off Status of Relays when power is first applied to the Fusion controller.
  14. Controlling Individual Relays is used to control relays by their relay number, as well as pulse relays, and read relay status using a relay number.
  15. Relay Timers are used to activate relays for a user-defined period of time.  This button opens the Relay Timer control panel.
  16. Relay Grouping is used to control groups of relays.  This allows users to create virtual DPDT relays using two SPDT relays grouped together.  Relay grouping supports up to 8PDT relays using 8 SPDT relays grouped together.  This button opens the relay grouping control panel.
  17. Relay Flashers allow users to set a relay to flash in the background.  Up to 16 relays may be flashed in the background.  This button opens the relay flashers control panel.

Relay Bank Introduction

A Relay Bank is simply a group of 8 relays.  Fusion controllers allow you to control anywhere from 32 to 255 relay banks depending on hardware memory limitations.  Most Fusion controllers support 32 banks of relays, unless otherwise specified.  Base Station Device Identification will indicate how many banks are supported by your controller.  You control which bank of relays you are speaking to at all times.  This guide will often refer to the word “bank”.  A bank should be equated to a number from 0 to 32 (or 255 for controllers with a lot of memory).  A value of 1 speaks to relay bank 1 (the first 8 relays connected to a Fusion controller).  A value of 2 speaks to relay bank 2 (the second group of 8 relays connected to a Fusion controller).  A value of 32 speaks to the last group of 8 relays (which is usually connected to the main controller using the relay expansion port).  A value of 0 speaks to all banks of relays at one time.

Understanding Relay Refreshing

Under normal operation, you will send a command to relay control commands that will immediately affect the state of relays.  This system works well if you only need to control 1-8 relays, but controlling larger numbers of relays simultaneously needs to be handled using Relay Refreshing features.  In these cases, you may want to set the status of all relays at the exact same time.  The easiest way to do this is to turn off automatic relay refreshing.  Once turned off, you can use the relay control command set to activate relays without the relays actually changing state.  The effects will not be seen until you manually refresh the relay bank.  Rest assured, when auto refreshing is off, your relay control commands are working, the processor memory is copied to the physical relay bank memory when you manually refresh the relays.  Use Device Configuration in Base Station to set the power-up state of Relay Refreshing.  This allows the controller to boot up with automatic or manual refreshing.

Follow this methodology to set the status of lots of relays at one time across multiple banks:

  1. Turn Off Auto Refreshing.
  2. Use Relay Control Command to activate different relays on different banks.
    These commands will not appear to work, they will only modify internal memory.
  3. Send the Manual Refresh Command to update all relays at one time. Controlling Relays

Turn Off Relays in the Specified Relay Bank

This command turns Off a specified relay in a specified relay bank. If the Bank Value is 0, this command will be directed to all available relay banks. Enhanced firmware users may now specify an optional parameter of 1-7 to turn off up to 7 additional relays in the chosen relay bank.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Relay Bank Grouping (Optional)

Decimal Values: 254 100-107 0-255 1-7

Hex Values 0xFD 0x64 – 0x6B 0x00 – 0xFF 0x01 – 0x07

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

254 100 0 7 Turn Off Relay 0 in ALL available relay banks. Turn Off the next 7 relays in all available relay banks.

254 106 1 1 Turn Off Relay 6 in Relay Bank 1. Turn Off the next relay in Relay Bank 1.

254 102 1 Turn Off Relay 2 in Relay Bank 1.

Turn On Relays in the Specified Relay Bank

This command turns On a relay in a relay bank. If the Bank Value is 0, this command will be directed to all available relay banks. Enhanced firmware users may now specify an optional parameter of 1-7 to turn on up to 7 additional relays in the chosen relay bank.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Relay Bank Grouping (Optional)

Decimal Values: 254 108-115 0-255* 1-7

Hex Values 0xFD 0x6C – 0x73 0x00 – 0xFF 0x01 – 0x07

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

254 108 0 7 Turn On Relay 0 in ALL available relay banks. Turn On the next 7 relays in all available relay banks.

254 1141 1 Turn On Relay 6 in Relay Bank 1. Turn On the next relay in Relay Bank 1.

254 110 1 Turn On Relay 2 in Relay Bank 1.

*Maximum Bank number of relay banks available depends on controller and CPU.

COMM Operator Examples

254 108 1 Turn On Relay 1 in Bank 1
254 108 2 Turn On Relay 1 in Bank 2
254 109 2 Turn On Relay 2 in Bank 2
254 110 2 Turn On Relay 3 in Bank 2
254 108 3 Turn On Relay 1 in Bank 3
254 111 3 Turn On Relay 4 in Bank 3
254 112 3 Turn On Relay 5 in Bank 3
254 112 0 Turn On Relay 5 in All Relay Banks (Bank 0)

Note:  By Default, Automatic Refreshing is ON and relays will change state when relay control commands are received.  When Automatic Refreshing is OFF, these commands will not change the state of the relays.  These commands are changing the memory pattern for the relays inside the controller.  You will not see the effects of your changes until you send a Manual Refresh command.  You can return to automatic refreshing at any time.  Turning on automatic refreshing does NOT refresh the relays.  You must send the Manual Refresh Command or Send a new relay control command to change the state of all the relays.

Read the Status of Relays in the Specified Relay Bank

This command will read the status of individual relays in the specified relay bank. A bank value of 0 is Not Valid for this command. The command will return a 1 or a 0 indicating On/Off status of the relay.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Relay Bank

Decimal Values: 254 116-123 0-255

Hex Values 0xFD 0x74 – 0x7B 0x00 – 0xFF

Receive Byte:

Decimal: 0 or 1

Hex: 0x00 or 0x01

COMM Operator Examples:

254 116 1—0 or 1 Read the status of Relay 0 in Bank 1, controller will respond with a 0 or 1.

Report the Status of All Relays in a Bank

This command reports the status of 8 relays in the currently selected relay bank. If the Bank Value equals 0 then 32 Bytes will be returned by this command representing the status of the first 32 relays banks. Each byte returned from the controller will have a value from 0-255. Convert this value to Binary to see the on/Off status of each relay in the relay bank.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Command Bank

Decimal Values: 254 124 0-255

Hex Values 0xFE 0x7C 0x00 – 0xFF

Receive Byte:

Decimal: 0-255

Hex: 0x00 – 0xFF

COMM Operator Examples:

254 124 1 Report the Status of Relay Bank 1 (1 Byte Returned)

Report the Current Status of 32 Banks of Relays

This command reports the status of 32 Banks of Relays. Optional Parameter <0-255> indicates the group. If this optional parameter is not used or contains 0, the first 32 relay banks will be reported. A value of 1 reports the next group of 32 relay banks. A value of 2 reports the 3rd group of 32 relay banks.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Bank Bank (Optional)

Decimal Values: 254 124 0 0-255

Hex Values 0xFE 0x7C 0x00 0x00 – 0xFF

Receive Bytes:

Decimal: 0-255 (32 Bytes)

Hex: 0x00 – 0xFF (32 Bytes)

COMM Operator Examples:

254 124 0 Report the status of the first 32 Banks of Relays (32 Bytes Returned)

254 124 0 1 Report the status of the second group of 32 Banks of Relays (32 Bytes Returned)

Turn On Automatic Relay Refreshing

This command will turn ON Automatic Relay Refreshing.  When a relay control command is sent to the controller, the controller will refresh the state of all relays in every bank.  This command has been modified from the original version; it no longer stores the refresh status in EEPROM.  Use Device Configuration to change how the controller functions on startup.

Send Bytes: Byte 1: Byte 2:

Function: Header Command

Decimal Values: 254 125

Hex Values: 0xFE 0x7D

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples:

254 125 Turn ON Automatic Relay Refreshing

Turn Off Automatic Relay Refreshing

This command will turn OFF Automatic Relay Refreshing. When a relay control command is sent, the relay will not change state. This allows you to use the complete ProXR command set to manipulate relay status. When you need the relays to change state, you will send a manual refresh command. This command no longer stores the refresh status in EEPROM. Use Device Configuration to change how the controller functions on startup.

Send Bytes: Byte 1: Byte 2:

Function: Header Command

Decimal Values: 254 126

Hex Values 0xFE 0x7E

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples:

254 126 Turn Off Automatic Relay Refreshing.

Report the Current Status of Automatic Relay Refreshing

This command reports the current status of automatic relay refreshing.  This command will return a 0 or 1 indicating if refreshing is off or on.

Send Bytes: Byte 1: Byte 2:

Function: Header Command

Decimal Values: 254 136

Hex Values: 0xFE 0x88

Receive Byte:

Decimal: 0 or 1

Hex: 0x01 or 0x01

COMM Operator Examples

254 136 Report the current status of Automatic Relay Refreshing.

Manually Refresh All Relays in All Relay Banks

Manually refresh all relays in all relay banks.  Use this command to set the status of all relays at the exact same time.  Use in combination with Relay Refreshing commands.

Send Bytes: Byte 1: Byte 2:

Function: Header Command

Decimal Values: 254 137

Hex Values: 0xFE 0x89

Receive Byte: Decimal: 85

Hex: 0x55

COMM Operator Examples

253 37 Manually refresh relays in All Relay Banks.

Turn Off All Relays

This command will turn off all relays. If the currently selected relay bank is 0 then all relays will be turned off in all relay banks.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Command Parameter (Bank)

Decimal Values: 254 129 0-255

Hex Values 0xFE 0x81 0x00 – 0xFF

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

254 129 0 Turn off all relays in all available relay banks

Turn On All Relays

This command will turn On all relays. If the currently selected relay bank is 0, then all relays will be turned on in all relay banks.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Command Parameter (Bank)

Decimal Values: 254 130 0-255

Hex Values 0xFE 0x82 0x00 – 0xFF

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

254 130 0 Turn on all relays in all available relay banks.

Invert Relays

The Invert Relays command will inverts the status of all relays in the specified relay bank. All relays that are off will turn on. All relays that are on will turn off. If a Bank Value of 0 is selected, all relays in all relay banks will be inverted.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Command Parameter (Bank)

Decimal Values: 254 131 0-255

Hex Values 0xFE 0x83 0x00 – 0xFF

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

254 131 0 Invert the status of all relays in all available relay banks.

Reverse Relays

The Reverse Relays command will reverses the status of all relays in the currently selected relay bank. This command effectively swaps the status of all relays like a mirror:

The status of Relay 1 is copied to Relay 8.

The status of Relay 2 is copied to Relay 7.

The status of Relay 3 is coped to Relay 6.

The status of Relay 4 is copied to Relay 5.

The status of Relay 5 is copied to Relay 4.

The status of Relay 6 is copied to Relay 3.

The status of Relay 7 is copied to Relay 2.

The status of Relay 8 is copied to Relay 1.

If the bank value of 0 is selected, all relays in all relay banks will be reversed.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Command Parameter (Bank)

Decimal Values: 254 132 0-255

Hex Values 0xFE 0x84 0x00 – 0xFF

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

253 0 0 2 Turn Off All Channels According to Buffer 4 Off Speed Setting

Set Status of 8 Relays

The Set Status of 8 Relays command writes a byte of data to a bank of 8 relays. This command requires a parameter value of 0-255. This parameter sets the status of all relays to the binary equivalent value. 254, 140, 0 turns off all relays. 254, 140, 255 turns on all relays. 254, 140, 85 turns off every other relay. If a bank value of 0 is selected, this command will set the status of all relays in all relay banks.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Bank LSB Bank MSB (Optional)

Decimal Values: 254 140 0-255 0-255

Hex Values 0xFE 0x8C 0x00 – 0xFF 0x00 – 0xFF

Receive Bytes:

Byte 1: 0-32 Indicates Relay Bank that was affected

Byte 2: 0-255 Indicates Status of all Relays in the affected bank

Hex Byte 1: 0x00 – 0x20
Hex Byte 2: 0x00 – 0xFF

COMM Operator Examples

254 140 0 0 Turn Off All relays in All available relay banks.
254 140 255 Turn On all Relays.
254 140 85 Turn Off every other Relay.

Store Power-up Default State of Relays

This command stores the current state of all relays as the power-up default state. 254, 142, 0 stores all relays in all banks. 254, 142, 1 stores the current status of bank 1 only. The maximum possible value depends on how many relay banks are attached. If your controller supports 255 relay banks, then 255 may be used.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Parameter Parameter (Bank)

Decimal Values: 254 142 0-255 0-255

Hex Values 0xFE 0x8E 0x00 – 0xFF 0x00 – 0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples

254 142 0 Stores All relays in All available relay banks.

254 142 1 Stores the current status of Bank 1 only.

Read Power-up Default Status of Relay Bank

This command reports the power-up default status of relays in the specified relay bank. If bank 0 is selected (254,143,0) then the controller reports the status of the first 32 relay banks. The maximum value for this command will depend on the attached relay banks supported by your controller. This command reports a value of 0-255 indicating the power-up default status of the selected bank.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Command Command

Decimal Values: 254 143 0-255

Hex Values 0xFE 0x8F 0x00 – 0xFF

Receive Byte:

Decimal: 0-255

Hex: 0x00 – 0xFF

COMM Operator Examples

254 43 0 Reports the status of the first 32 Relay Banks.

Controlling Individual Relays

Most commands control relays by Bank, as there is a lot of flexibility available using this method.  Sometimes, it is more convenient to talk to a relay by its number, rather than relay bank.  For instance, turn on relay 13, or read the status of relay 22.  Controlling Individual Relays is a small set of commands that allow you to talk to relays by their number.  For some applications, this can save you a lot of time.

Before we get started, you need to know how to actually find a relay by its number.  The following examples should help you out:

Bank 1 Relay 1 has a Relay Number of 0
Bank 1 Relay 8 has a Relay Number of 7
Bank 2 Relay 1 has a Relay Number of 8
Bank 2 Relay 8 has a Relay Number of 15
Bank 32 Relay 8 has a Relay Number of 255

Relay Numbers are 16-Bit values even though only 8 bits are generally used to specify a relay number.

  1. Activate a Relay using its Relay Number
  2. Pulse a Relay (turn a relay on then off) using its Relay Number
  3. Deactivate a Relay using its Relay Number
  4. Safe Break Before Make ensures only one relay is ever on at one time
  5. Read the Status of a Relay
  6. Displays actual data sent and received from controller
  7. More/Less Button hides the communication details

Turn On Selected Relay

This command turns on the selected relay.  This command accepts 8-Bit or 16-Bit Relay Values using the Relay LSB Value (Required) and the Relay MSB Value (Optional, Defaults to 0 when not specified).  This command will return 85 (0x55) to the user when finished.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Relay LSB Relay MSB (Optional)

Decimal Values: 254 148 0-255 0-255

Hex Values: 0xFE 0x94 0x00 – 0xFF 0x00 – 0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

Pulse Selected Relay

Pulses the selected Relay for a very brief period of time.  This command requires a 16-Bit Relay Value using Relay LSB and MSB Values.  The fifth byte of this command must be 1 to trigger the pulse option.  After the relay is pulsed, this command will return 85 (0x55) to the user.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4: Byte 5:

Function: Header Command Relay LSB Relay MSB Pulse

Decimal Values: 254 148 0-255 0-255 1

Hex Values: 0xFE 0x93 0x00 – 0xFF 0x00 – 0xFF 0x01

Receive Byte:

Decimal: 85

Hex: 0x55

Turn Off Selected Relay

This command turns off the selected Relay.  This command accepts 8-Bit or 16-Bit Relay Values using the Relay LSB Value (Required) and the Relay MSB Value (Optional, Defaults to 0 when not specified).  After the relay is pulsed, this command will return 85 (0x55) to the user.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Relay LSB Relay MSB (Optional)

Decimal Values: 254 147 0-255 0-255

Hex Values: 0xFE 0x93 0x00 – 0xFF 0x00 – 0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

Read the Status of a Relay

This command will read the status of a selected relay.  This command provides a quick way to read the status of a single relay using a relay number. This command accepts 8-Bit or 16-Bit Relay Values using the Relay LSB Value (Required) and the Relay MSB Value (Optional, Defaults to 0 when not specified).  After the relay is pulsed, this command will return 85 (0x55) to the user.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Relay LSB Relay MSB (Optional)

Decimal Values: 254 144 0-255 0-255

Hex Values 0xFE 0x90 0x00 – 0xFF 0x00 – 0xFF

Receive Byte:

Decimal: 0 or 1 (Off or On)

Hex: 0x00 or 0x01

Safe Break Before Make

This command turns off all relays, pauses for a short duration, and then activates the selected relay.  This command accepts 8-Bit or 16-Bit Relay Values using the Relay LSB Value (Required) and the Relay MSB Value (Optional, Defaults to 0 when not specified).  After the relay is pulsed, this command will return 85 (0x55) to the user.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Relay LSB Relay MSB (Optional)

Decimal Values: 25 146 0-255 0-255

Hex Values: 0xFE 0x92 0x00 – 0xFF 0x00 – 0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

ProXR Relay Flashers Command Set

  1. Relay Flash Control.  Here you can control Flasher speed and specify the relay.
  2. All On/Off.  Controls all relays with one command.
  3. Communication details.  This portion of the interface is visible when selecting the MORE feature labeled as section E in diagram.
  4. Either reads MORE or LESS.  MORE shows section C in diagram.  The LESS option shrinks the window to exclude section C.
  5. Relay Flashers and Timers are tied together, allowing you to activate a flasher for a duration of time.  Three buttons demonstrate this feature, watch the command set in section 3 carefully.  You will notice that two commands are sent: One to activate the flasher, then another command activate the timer.  When the timer expires, the flasher will also turn off.

Set the Flash Rate of All Relay Flashers

This command sets the flash rate of all relay flashers.  A relay flasher turns relays on and off in the background automatically.  A speed value parameter is required from 0-255.  This parameter controls the flash rate where 0 is the fastest and 255 is the slowest allowed speed.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Command Speed Parameter

Decimal Values: 254 145 0 0-255

Hex Values: 0xFE 0x91 0x00 0x0 – 0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

Controls the On/Off Status of Relay Flashers

This command controls the On/Off Status of each of the 16 possible relay flashers.  There are two optional parameters for this command.  1-16 chooses a relay flasher to control, a value of 0 or 1 turns the flasher off or on.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Command Parameter (Optional) Parameter (Optional)

Decimal Values: 254 145 1-16 0 or 1

Hex Values: 0xFE 0x91 0x01 – 0x10 0x00 or 0x01

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples:

254 45 1 1 Turn On Relay Flasher 1

254 45 16 0 Turn Off Relay Flasher 116

254 45 8 0 Turn Off Relay Flasher 8

Relay Grouping

Relay Grouping is the process of controlling a group of relays at one time.  Relay Grouping is intended for applications where you may need two or more relays to activate and deactivate at the exact same time.  This is useful for creating a DPDT relay using two SPDT relays.  Relay grouping works with up to 8 relays at a time as long as all 8 relays are next to each other in the same bank of 8 relays.  Relay Grouping is very straight-forward, allowing simulation of DPDT, 3PDT, 4PDT, 5PDT, 6PDT, 7PDT, and 8PDT relays using low-cost SPDT relays.  As an application example, an 8PDT relay is essentially eight SPDT relays grouped together.  If your application required an 8PDT 20-Amp relay, you would be in for a real challenge finding such a relay.  And if you were to find such a relay, it would be very expensive.  The relay grouping features allow you to use 8 low-cost 20-Amp SPDT relays, accomplishing the same goal for a fraction of the price.

  1. Select a Relay Bank to control.
  2. Relay 1.  Allows you to group Relay 1 with 7 more relays after Relay 1.
  3. Relay 2.  Allows you to group Relay 2 with 6 more relays after Relay 2.
  4. Relay 3.  Allows you to group Relay 3 with 5 more relays after Relay 3.
  5. Relay 4.  Allows you to group Relay 4 with 4 more relays after Relay 4.
  6. Relay 5.  Allows you to group Relay 5 with 3 more relays after Relay 5.
  7. Relay 6.  Allows you to group Relay 6 with 2 more relays after Relay 6.
  8. Relay 7.  Allows you to group Relay 7 with 1 more relay after Relay 7.
  9. Relay 8 cannot be the start of a group, but can act as a slave to another Relay group.  Grouping commands only work within a bank of 8 relays.
  10. Communication Details.  This portion of the interface is visible when selecting the MORE feature labeled as section L in diagram.
  11. Simulate.  Each option creates grouping samples from the relay portion of this screen.
  12. Either reads MORE or LESS.  MORE shows section J in diagram.  The LESS option shrinks the window the exclude section J.

Relay Timers

Relay Timer Introduction

The ProXR Series controllers have 16 user-programmable timers.  Each independent timer can be assigned to any of the first 256 relays of the ProXR controller.  Timers may be programmed to hold the relay in the On state, or to pulse the relay at the end of the timer.  The ProXR timing features are ideally suited for Watchdog, Keep Alive, and Server Reboot applications, as well as sprinkler systems, gate openers, and day/night lighting applications.

Relay timing features support two modes of operation, duration and pulse.  Duration timing is ideally suited for keeping a light on overnight, watering the lawn for a given period of time, or other applications where a device should be activated for a period of time.  Pulse timing mode is designed specifically for server reboot applications, whereby, if the timer is not reset periodically by your software, the timer will run out and reboot your computer.

Interactive Timing Commands

The ProXR timing commands can be used by themselves, or in conjunction with other commands as building blocks to create some very sophisticated timing applications.  The timing command set covers many aspects of relay activation/deactivation, making the ProXR series ideally suited for a broad range of timing tasks.

ProXR Timing Limitations

ProXR Timing features are NOT derived from a real-time clock source, so timing accuracy over long periods of time is not possible.  The timing features are suitable for applications where you may want a light to go on for 5 minutes, or you may want to keep a relay alive to prevent a server from automatically rebooting.  The ProXR series controllers are capable of processing timing commands as long as 255 hours, 255 minutes, and 255 seconds (4 Days, 19 Hours, 19 Minutes, and 15 Seconds) + Deviation.

Relay Time Source

The Accuracy of the relay timers is dependent on many factors, but ProXR Fusion controllers use timer interrupts to help improve timing accuracy.  However, the possibility does exist that timers may drift slightly as it is not possible to generate an exact second without additional electronics.

When a timer is already active, and you engage another timer, the duration of the previously set times may be increased by as much as one full second.  You can enable all timers simultaneously if you need more accurate timing.

Best timing accuracy is achieved by setting up your timing commands and leaving the timing command set alone during the timing operations.  Each time you communicate with the controller, you will slow down the timer (lengthening the time period the timer is set for).  Timing accuracy tends to drift over time.  The timing functions built into this controller should NOT be used if timing accuracy is critical.  The timing feature are, however, very useful in applications where a little timing drift is not a big concern.

Timing Calibration

ProXR Advanced Timers may be calibrated using Base Station Software.  Calibrating the timers will change the actual duration of one second, which will affect all timers.  Timer calibration can greatly reduce or lengthen the actual time of each second, allowing you to stretch the timers or shorten the timers overall.  This may be useful when higher resolution or longer timing is required.

Relay Timers: Base Station

Relay timers may be calibrated, making it possible to have a somewhat accurate duration, depending on your application.  This control panel lets you experiment with different calibration settings.  Note that all timers are affected by communications and other background tasks.  If you need highly accurate timers, please use the Taralist features of your Fusion series controller.

This control panel allows you to test different relay timing functions, so you can see how they actually work on your controller.

  1. Set a timer. Set how many hours, minutes, and seconds a timer will last. Set which relay the timer will control.
  2. Allows you to manually trigger and cancel Timers. The buttons along the right side of this panel will allow you to trigger checked and cancel unchecked timers, Uncheck all timers, or check all timers.
  3. Communication Details. Shown when MORE option is chosen from section 4 in the diagram.
  4. Either reads MORE or LESS. MORE shows section 3 in diagram. The LESS option shrinks the window to exclude section 3.
  5. Sends a command to determine the status a timer. See page
  6. Click to Start Duration Timer.
  7. Click to activate Pulse Timer.
  8. Click to Setup Duration Timer.
  9. Click to Setup Pulse Timer.
  10. Opens a window labeled Timer Calibration.
  11. Opens a window label Timer Test. Contains Timer Test Samples.

Relay Timer Command Set

Simple Timers

While timing commands are pretty easy to use, simple timers are the easiest.  Once you have sent a simple timer command, the timer automatically starts counting down.

There are two types of simple timers:  Duration and Pulse.

Duration Timers

These timers activate a relay for a user specified period of time.  When the timer expires, the relay turns off.  Duration Timer 50-65 controls timers 0-15.  The relay is active during the duration of the timer and turns off when timer counts down to 0 Hours, 0 Minutes, 0 Seconds.  Relay is a value from 0-255, as timers may be applied only to the first 256 relays of the controller.  Here is an example sending a simple duration timer command:

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4: Byte5: Byte 6: Byte 7:

Function: Header Timer Setup Timer Hours Minutes Seconds Relay

Decimal Values: 254 50 50-65 0-255 0-255 0-255 0-255

Hex Values 0xFE 00×32 0x32-0x41 0x00-0xFF 0x00-0xFF 0x00-0xFF 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples:

254 50 50 8 10 15 0 Hold Relay 0 On for 8 Hours, 10 Minutes, 15 Seconds using Simple Duration Timer 0

254 50 51 0 0 10 1 Hold Relay 1 On for 10 Seconds using Simple Duration Timer 1

When the above two commands have been sent, both relays 0 and 1 will turn on.  Relay 0 will turn off after 8 hours, 10 minutes, and 15 seconds.  Relay 1 will turn off after only 10 seconds.  While the timers are running, you may send other relay control commands.  It is also possible to manually turn off the relays while the timers are still running.  In these cases, the timers will not appear to have any effect.  You can also pause the timers using other commands.

Keep in mind, you have 16 timers to work with.  If you ever need this many timers, it would be prudent to assign a different relay to each timer.  Assigning the same relay to 2 timers will cause the relay to turn off when the first timer expires.  The second timer will appear to have no effect.

Also note that relays are assigned in numeric order of 0-255 when using the timing commands.  Relay 0 is located on Bank 1, Relay 0. Relay 8 is located on Bank 2, Relay 0.  Relay 255 is located on bank 32, Relay 7 (you will have to make use of the XR Expansion port to access this relay).

Pulse Timers

Pulse Timers are slightly different than duration timers.  When a pulse timer is activated, the relay will not do anything until the timer has expired.  Once expired, the relay will pulse for a short duration.  This pulse is designed specifically to reboot a computer by connecting a relay directly to the RESET lines of a motherboard.  While this may be used for other applications, the intent of the pulse timer is to reboot a computer should there be a lack of communication between the computer and the relay controller (indicative of a system crash).

Pulse Timer 70-85 controls timers 0-15.  The timer counts and when it expires, the relay is pulsed.  Set Hours, Minutes, and Seconds to determine how long the timer will hold the relay on.  Relay is a value from 0-255, as timers may be applied only to the first 256 relays of the controller.  Below is a simple example of setting up a pulse timer.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4: Byte5: Byte 6: Byte 7:

Function: Header Timer Setup Timer Hours Minutes Seconds Relay

Decimal Values: 254 50 70-85 0-255 0-255 0-255 0-255

Hex Values 0xFE 0x32 0x46-0x55 0x00-0xFF 0x00-0xFF 0x00-0xFF 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples

254 50 70 0 0 15 0 Pulse Relay 0 after 15 Seconds using Simple Pulse Timer 0

254 50 71 0 0 45 1 Pulse Relay 1 after 45 Seconds using Simple Pulse Timer 1

In the examples above, Relay 0 will pulse after 15 seconds and Relay 1 will pulse after 45 seconds.

Mixing Duration and Pulse Timers

Duration and pulse timers may be mixed as your application requires, in any combination.  There are 16 firmware timers available; care should be taken not use any timer more than once while setting up timer commands.  For example, in our first sample, we utilized timers 0 and 1 using the commands 50 and 51.  In our second sample, we utilized timers 0 and 1 using the commands 70 and 71.  The commands 50 and 70 both use timer 0.  Likewise, the commands 51 and 71 use timer 1.  Here is a simple overlap map that will help you keep track of what commands address specific timers. The table below shows the beginning command bytes: 

Timer Number Setup and Trigger Duration Timer Setup and Trigger Pulse Timer Setup Duration Timer* Setup Pulse Timer*
0 254, 50, 50 254, 50, 70 254, 50, 90 254, 50, 110
1 254, 50, 51 254, 50, 71 254, 50, 91 254, 50, 111
2 254, 50, 52 254, 50, 72 254, 50, 92 254, 50, 112
3 254, 50, 53 254, 50, 73 254, 50, 93 254, 50, 113
4 254, 50, 54 254, 50, 74 254, 50, 94 254, 50, 114
5 254, 50, 55 254, 50, 75 254, 50, 95 254, 50, 115
6 254, 50, 56 254, 50, 76 254, 50, 96 254, 50, 116
7 254, 50, 57 254, 50, 77 254, 50, 97 254, 50, 117
8 254, 50, 58 254, 50, 78 254, 50, 98 254, 50, 118
9 254, 50, 59 254, 50, 79 254, 50, 99 254, 50, 119
10 254, 50, 60 254, 50, 80 254, 50, 100 254, 50, 120
11 254, 50, 61 254, 50, 81 254, 50, 101 254, 50, 121
12 254, 50, 62 254, 50, 82 254, 50, 102 254, 50, 122
13 254, 50, 63 254, 50, 83 254, 50, 103 254, 50, 123
14 254, 50, 64 254, 50, 84 254, 50, 104 254, 50, 124
15 254, 50, 65 254, 50, 85 254, 50, 105 254, 50, 125

*Indicates Setup only, timer will not be triggered with this command.

Server Reboot Pulse Timers (Watchdog Timers)

A server reboot pulse timer is essentially a watchdog timer, a keep-alive timer, or a server reboot timer.  They can all mean about the same thing, as their goals are basically the same.  The idea is simple:  If the computer crashes, the computer cannot reset the timer built into the ProXR controller, so the controller reboots the computer.  Setting up a watchdog timer is very easy using a single command.

Automatic Server Reboot Methodology

A Server reboot system can work many ways.  One possible strategy is a system whereby a server would boot up with a ProXR relay controller attached to a USB port.  The relay controller would also be connected to the reset lines of server motherboard.  As part of the startup items, a program would be launched to activate the pulse timer function for a period of 10 minutes (for example).  The relay would do nothing since a pulse timer is used.  Using this strategy, the relay controller would reboot the computer if communications is lost between the server and the relay controller.  Once the timer in the relay controller has expired, it can only be restarted when the computer boots up normally.  The monitoring program could be exited at any time.  In which case, all timers would be cleared to prevent rebooting the computer.

This strategy above could be implemented on a single computer with an enhanced version of the software.  The relay controller could be tied into the reset lines on the other computers as well.  The program could be enhanced to “ping” other computers on the network.  If one of them should fail to respond to your “ping”, a command could be sent to reboot the computer that failed to respond.  In this case, one computer (a main server) is protected, as well as all other computers on the network.  The main server is acting as the watchdog for all the other computers on the network.  The relay controller itself is acting as the watchdog for the main server computer.

While there are many other strategies that could be easily implemented, these strategies could perhaps serve as building blocks to greater, more powerful and sophisticated watchdog monitoring applications.

Duration Timers

Duration Timer 90-105 controls timers 0-15.  The Relay is active during the duration of the timer.  This command sets up the timer only, it does NOT begin to start.  Use a separate command to control when this timer starts.  The relay turns off when timer counts down to 0 Hours, 0 Minutes, 0 Seconds.  Hours, Minutes, and Seconds sets the number of hours, minutes, and seconds the timer will hold the relay on.  Relay is a value from 0-255, as timers may be applied only to the first 256 relays of the controller.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4: Byte5: Byte 6: Byte 7:

Function: Header Timer Setup Timer Hours Minutes Seconds Relay

Decimal Values: 254 50 90-105 0-255 0-255 0-255 0-255

Hex Values 0xFE 0x32 0x5A-0x69 0x00-0xFF 0x00-0xFF 0x00-0xFF 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples

254 50 91 0 0 35 1 Setup a Duration Timer on Relay 1 for 35 Seconds using Timer 1

Pulse Timers

Pulse Timer 110-125 controls timers 0-15.  The timer counts and when it expires, the relay is pulsed.  This command sets up the timer only; it does NOT begin to start.  Use a separate command to control when this timer starts.  Set Hours, Minutes, and Seconds to determine how long the timer will hold the relay on.  Relay is a value from 0-255, as timers may be applied only to the first 256 relays of the controller.  Below is a simple example of setting up a pulse timer.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4: Byte5: Byte 6: Byte 7:

Function: Header Timer Setup Timer Hours Minutes Seconds Relay

Decimal Values: 254 50 110-125 0-255 0-255 0-255 0-255

Hex Values: 0xFE 0x32 0x6E-0x7D 0x00-0xFF 0x00-0xFF 0x00-0xFF 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples:

254 50 110 0 0 15 0 Setup a Pulse Timer on Relay 0 for 15 Seconds using Timer 0

Query Remaining Time

This command will query the time remaining for the selected timer 1 through 16.  This command reports 4 bytes back to the user, indicating Hours remaining (0-255), Minutes remaining (0-255), Seconds remaining (0-255), and the Relay Number the timer is assigned to (0-255).

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4:

Function: Header Timer Setup Timer

Decimal Values: 254 50 130 1-16

Hex Values 0xFE 0x32 0x82 0x01-0x-10

Receive Bytes: 

Decimal: 0-255 (hours) 0-255 (minutes) 0-255 (seconds) 0-255 (relay)

Hex: 0x00-0xFF 0x00-0xFF 0x00-0xFF 0x00-0xFF

Halt or Resume Timers

This command is used to manually halt or resume all 16 timers. This command works with all forms of timers.  The LSB and MSB are the least significant and most significant bytes in a 16-bit word.  The status of each bit within the 16-bit word is used to control which timers are running.  Every bit that is high in the word indicates the timer is active.  Every bit that is low in the word indicates the timer is not running.

Send Bytes: Byte 1: Byte 2: Byte 3: Byte 4: Byte5:

Function: Header Timer Setup LSB MSB

Decimal Values: 254 50 131 0-255 0-255

Hex Values 0xFE 0x32 0x83 0x00-0xFF 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

COMM Operator Examples:

254 50 131 3 0 Begin Countdown of Timers 0 and 1

LSB = 3 (1 + 2 = 3       1 is for Timer 0, 2 is for Timer 1, See Table on next page)

MSB = 0 (Keep all other timers off)

254 50 131 1 0 Indicates timer 1 is running, all others are off

254 50 131 3 128 Indicates timers 1, 2, and 16 are running (1+2=3 and 128 in the MSB indicates Timer 16 is running)

Controlling Timer Status with a 16-Bit Word

If you understand how binary works, this is a pretty simple command.  A 16 bit value is used to control which timers are active and which timers are halted.  Each of the 16 bits identifies with each of the 16 timers.  A binary 0 in any bit location indicates the timer is off while a binary 1 in any bit location indicates the timer is on.  If you are not familiar with binary, here is a crash course:

16 Timers have 16 Bits, but we have to divide these into two 8-Bit values to communicate these data via a serial port.  We call these two different bytes LSB for Least Significant Byte and MSB for Most Significant Byte. 

Follow the Table below to figure LSB and MSB Values:

LSB Values MSB Values

Timer 0 has a value of 1 on the LSB Timer 8 has a value of 1 on the MSB

Timer 1 has a value of 2 on the LSB Timer 9 has a value of 2 on the MSB

Timer 2 has a value of 4 on the LSB Timer 10 has a value of 4 on the MSB

Timer 3 has a value of 8 on the LSB Timer 11 has a value of 8 on the MSB

Timer 4 has a value of 16 on the LSB Timer 12 has a value of 16 on the MSB

Timer 5 has a value of 32 on the LSB Timer 13 has a value of 32 on the MSB

Timer 6 has a value of 64 on the LSB Timer 14 has a value of 64 on the MSB

Timer 7 has a value of 128 on the LSB Timer 15 has a value of 128 on the MSB

To Turn On timers, add up the LSB and MSB Values.

Example

To turn on timers 0, 1, 2, and 3 we add up 1, 2, 4, and 8.

So the LSB = 15.

To turn on timers 10, 12, 14, and 15, we add up 4, 16, 64, and 128.

So the MSB = 212.

After you send the LSB and MSB timer data to the controller, the selected timers will be activated.  All other timers will be halted

Relay Memory Cells

Fusion ProXR Advanced controllers support Relay Memory Cells.  Relay Memory Cells allow you store the status of all relays in all relay banks into a single cell.  You can later recall the data stored in the Relay Memory Cell, and all relays in all banks will be updated to the state stored in the selected cell.  Put simply, Relay Memory Cells allow you to store and recall relay on/off patterns.  Up to 256 cells are available, allowing you to store/recall complex relay states instantly using a single command.  Relay Memory Cells require the TLEE expansion module, as Relay Memory Cells require a significant amount of EEPROM memory.

Note that Relay Memory Cells are explicitly a ProXR Advanced feature.  Only ProXR data is stored and recalled using Relay Memory Cell routines.  Reactor and Taralist relay on/off states are managed by Reactor and Taralist routines.

Storing Relay Patterns

The Relay Memory Cell storage command stores the on/off state of all relays into the selected memory cell.  Only one parameter is required for this command, indicating the memory cell that will store the state of all relays.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Store Cell Cell

Decimal Values: 254 73 0-255

Hex Values 0xFE 0x49 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

Recalling Relay Patterns

The Relay Memory Cell Recall command is used to recall the relay pattern from stored memory.  This command requires only on parameter from 0 to 255, indicating which cell should be recalled.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Recall Cell Cell

Decimal Values: 254 72 0-255

Hex Values 0xFE 0x48 0x00-0xFF

Receive Byte:

Decimal: 85

Hex: 0x55

Display Stored Data

The Relay Memory Cell Display command is used to recall the actual relay state stored in memory.  The status of 32 relay banks requires 32 bytes of EEPROM data.  This command allows the user to display these data.  Simply convert the numbers returned into binary to actually see the on/off state of each relay in all 32 banks.

This command requires a Cell parameter from 0-255 indicating which memory cell to display.

Send Bytes: Byte 1: Byte 2: Byte 3:

Function: Header Display Cell Cell

Decimal Values: 254 71 0-255

Hex Values 0xFE 0x47 0x00-0xFF

Receive Bytes:

Decimal: 32 Bytes Received, Decimal Values 0-255

Hex: 32 Bytes Received, Hex Values 0x00-0xFF

ProXR Advanced Command Summary

The following command summary demonstrates the commands and responses from a ProXR Advanced controller.  Note that all commands must be API Encoded before they will work.  COMM Operator provides you with a terminal that will allow you to enter the commands shown and will automatically encode the commands into the correct API format.  COMM Operator is part of our free Base Station Software, available for download at ncd.io/start.

Reading the Table
Command These are the bytes that you send to the controller. These bytes are shown in decimal format, and can be converted to HEX if you prefer. We use the comma character to separate our bytes, but you should NOT send the comma character to the device. Also, you do NOT need to send enter or return to complete the command. The controller knows when the command is complete.
Parameters Some commands need parameters, such as hours, minutes, and seconds. Other parameters include a Bank value, which indicates which group of relays you will be speaking to. Some parameters are optional, these will appear between < > symbols.
Command Description While there is no substitute for reading the ProXR manual, these descriptions give you a basic guideline of what to expect from the command.
Response ProXR controllers will respond to most commands that you send. Under normal operation (when the controller is in runtime mode) the controller will respond with an 85 for most commands. If the controller happens to be in configuration mode (a jumper setting on the controller), the controller will respond with 86. Some commands, such as Analog to Digital Conversion, report 8-bit values from 0-255. In some cases, 2 or more bytes are sent back to the user. These will be noted in the Response column.

The purpose of the following section is to give you a convenient location to review a summary of ProXR commands.  This list will only grow as our products evolve.  Please consider the following information as a quick reference guide, which is not designed to replace detailed descriptions found elsewhere in this guide.

Turn Off Relays in the Specified Relay Bank
Transmit Command Description Receive
254
100
0-255 (Bank)
<1-7>
Turn off Relay 1 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping Parameter may be included to turn off the next 1 to 7 relays.
Byte 1: Bank Byte 2: Status
254
101
0-255 (Bank)
<1-6>
Turn Off Relay 2 in Specified Bank.
If the Bank Value is 0, this command will be directed to available relay banks.
An optional grouping parameter may be included to turn off the next 1 to 6 relays.
Byte 1: Bank Byte 2: Status
254
102
0-255 (Bank)
<1-5>
Turn Off Relay 3 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn off the next 1 to 5 relays.
Byte 1: Bank Byte 2: Status
254
103
0-255 (Bank)
<1-4>
Turn Off Relay 4 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn off the next 1 to 4 relays.
Byte 1: Bank Byte 2: Status
254
104
0-255 (Bank)
<1-3>
Turn Off Relay 5 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn of the next 1 to 3 relays.
Byte 1: Bank Byte 2: Status
254
105
0-255 (Bank)
<1-2>
Turn Off Relay 6 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn off the next 1 to 2 relays.
Byte 1: Bank Byte 2: Status
254
106
0-255 (Bank)
<1>
Turn Off Relay 7 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn off the next relay.
Byte 1: Bank Byte 2: Status
254
107
0-255 (Bank)
Turn Off Relay 8 in Specified Bank. If the Bank Value is 0, this command will be directed to all available relay banks. Byte 1: Bank Byte 2: Status

 

Turn On Relays in the Specified Relay Bank
Transmit Command Description Receive
254
108
0-255 (Bank)
<1-7>
Turn On Relay 1 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn on the next 1 to 7 relays.
Byte 1: Bank Byte 2: Status
254
109
0-255 (Bank)
<1-6>
Turn On Relay 2 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn on the next 1 to 6 relays.
Byte 1: Bank Byte 2: Status
254
110
0-255 (Bank)
<1-5>
Turn On Relay 3 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn on the next 1 to 5 relays.
Byte 1: Bank Byte 2: Status
254
111
0-255 (Bank)
<1-4>
Turn On Relay 4 in Specified Bank.
If the Bank Value is 0, this command will be directed all available relay banks.
An optional grouping parameter may be included to turn on the next 1 to 4 relays.
Byte 1: Bank Byte 2: Status
254
112
0-255 (Bank)
<1-3>
Turn On Relay 5 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn on the next 1 to 3 relays.
Byte 1: Bank Byte 2: Status
254
113
0-255 (Bank)
<1-2>
Turn On Relay 6 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn on the next 1 to 2 relays.
Byte 1: Bank Byte 2: Status
254
114
0-255 (Bank)
<1>
Turn On Relay 7 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
An optional grouping parameter may be included to turn on the next relay.
Byte 1: Bank Byte 2: Status
254
115
0-255 (Bank)
Turn On Relay 8 in Specified Bank.
If the Bank Value is 0, this command will be directed to all available relay banks.
Byte 1: Bank Byte 2: Status

 

Read the Status of Relays in the Specified Relay Bank
Transmit Command Description Receive
254
116
1-255 (Bank)
Read the Status of Relay 1 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a 1 or 0 indicating On/Off status of Relay.
0 or 1
254
117
1-255 (Bank)
Read the status of Relay 2 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a1 or 0 indicating On/Off status of Relay
0 or 1
254
118
1-255 (Bank)
Read the status of Relay 3 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a 1 or a 0 indicating On/Off status of the Relay.
0 or 1
254
119
1-255 (Bank)
Read the status of Relay 4 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a 1 or 0 indicating the On/Off Status of the Relay.
0 or 1
254
120
1-255 (Bank)
Read the status of Relay 5 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a 1 or 0 indicating the On/Off status of the Relay.
0 or 1
254
121
1-255 (Bank)
Read the Status of Relay 6 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a 1 or 0 indicating the On/Off status of the Relay.
0 or 1
254
122
1-255 (Bank)
Read the Status of Relay 7 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command Will return a 1 or a 0 indicating the On/Off status of the relay.
0 or 1
254
123
1-255 (Bank)
Read the status of Relay 8 in Specified Bank.
A Bank Value of 0 is Not Valid for this command.
This command will return a 1 or a 0 indicating the On/Off status of the relay.
0 or 1

 

General Control Commands
Transmit Command Description Receive
254
124
Reports the Current Status of 8 Relays in the Currently Selected Relay Bank. If the Bank Value equals 0, then 32 bytes will be returned by this command representing the status of the first 32 relay banks. Each byte returned from the controller will have a value from 0-255. Convert this value to binary to see the On/Off status of each relay in the relay bank. 0-255
254
125
Turn ON Automatic Relay Refreshing. When a relay control command is sent to the controller, the controller will refresh the state of all relays in every bank. Use Device Configuration to change how the controller functions on startup. 85
254
126
Turn OFF Automatic Relay Refreshing. When a relay control command is sent, the relay will not change state. This allows you to use the complete ProXR command set to manipulate relay status. When you need the relays to change state, you will send a manual refresh command. Use Device Configuration to change how the controller functions on startup. 85
254
129 0-255 (Bank)
Turn OFF all relays in the specified relay bank. If the relay bank is 0 then all relays will be turned off in all relay banks Byte 1: Bank Byte 2: Status
254
130
0-255 (Bank)
Turn ON all relays in the specified relay bank. If the currently selected relay bank is 0 than all reals will be turned on in all relay banks. Byte 1: Bank Byte 2: Status
254
131
0-255 (Bank)
Inverts the status of all relays in the specified relay bank. All relays that are off will turn on. All relays that are on will turn off. If a bank value of 0 is selected, all relays in all relay banks will be inverted. Byte 1: Bank Byte 2: Status
254
132
0-255 (Bank)
Reverses the status of all relays in the currently selected relay bank. This command effectively swaps the status of all relays like a mirror:
The status of Relay 1 is copied to Relay 8
That status of Relay 2 is copied to Relay 7
The status of Relay 3 is copied to Relay 6
The status of Relay 4 is copied to Relay 5
The status of Relay 5 is copied to Relay 4
The status of Relay 6 is copied to Relay 3
The status of Relay 7 is copied to Relay 2
The status of Relay 8 is copied to Relay 1
If a bank value of 0 is selected, all relays in all relay banks will be reversed.
Byte 1: Bank Byte 2: Status
254
133
0-255 (Bank)
Test 2-Way Communications is used to verify the controller is properly communicating. This command will respond with one of the following responses based on the current mode of the device:
85 is returned if the controller is in run mode
86 is returned if the controller is in configuration mode
87 is returned if the controller is in security lockdown mode
85 (Run)
86 (Config.)
87(Lockdown)
254
136
This command reports the current status of automatic relay refreshing. This command will return a 0 or 1 indicating if refreshing is off or on. 0 or 1
254
137
Manually refresh all relays in all relay banks. Use this command to set the status of all relays at the exact same time. Use in combination with Relay Refreshing commands 85
254
140
0-255 (Value) 0-255 (Bank)
Sets the status of all relays in the specified relay bank. This command requires a Value parameter 0-255 indicating the Binary equivalent value. A Bank value is also required. 254, 140, 0, 0 turns off all relays in all banks. 254, 140, 255, 0 turns on all relays in all banks. 254, 140, 85, 1 turns off every other relay in Bank 1 only. If a bank value of 0 is selected, this will set the command status of all relays in all relay banks. 85
254
142
0-255
This command stores the current state of all relays as the power-up default state. 254, 42, 0 stores all relays in all banks. 254, 42, 1 stores the current status of bank 1 only. The maximum possible value depends on how many relay banks are attached. If your controller supports 255 relay banks, then 255 may be used. 85
254
143
0-255
This command reports the power-up default status of relays in the selected relay bank. If bank 0 is selected (254,43,0) then the controller reports the status of the first 32 relay banks. The maximum value for this command will depend on the AT Banks (attached relay banks supported by your controller). This command reports a value of 0-255 indicating the power-up default status of the selected bank 0-255
254
144
0-255
<0-255>
Reads the status of a selected relay. This command provides a quick way to read the status of a single relay using a relay number. Since the communication bus is limited to 8 bits, this command can accept a byte to read the status of the first 256 relays, or it can accept a word, to read the status of more than 256 relays. The optional parameter <0-255> is usually a value of 0 or 1 for many controllers, 0 indicating the first 256 relays, 1 indicating the next 256 relays. The actual maximum value for this command will depend on the number of relays supported by your controller. 0 or 1
254
145
0
0-255
Sets the Flash Rate of all Relay Flashers. A relay flasher turns relays on and off in the background automatically. A speed value parameter is required from 0-255. This parameter controls the flash rate where 0 is the fastest and 255 is the slowest allowed speed. 85
254
145
1-16
0-1
Controls the On/Off Status of each of the 16 possible relay flashers. There are two optional parameters for this command. 1-16 chooses a relay flasher to control, a value of 0 or 1 turns the flasher off or on. 85
254
146
0-255
<0-255>
Turns off all relays, pauses for a short duration, then activates the selected relay. Since the communication bus is limited to 8 bits, this command can accept a byte to control the status of the first 256 relays, or it can accept a word, to control the status of more the 256 relays. The optional parameter <0-255> is usually a value of 0 or 1 for many controllers, 0 indicating the first 256 relays, 1 indicating the next 256 relays. The actual maximum value for this command will depend on the number of relays supported by you controller. 85
254
147
0-255
<0-255>
Turns off the selected relay. Since the communication bus is limited to 8 bits, this command can accept a byte to control the status of the first 256 relays, or it can accept a word, to control the status of more than 256 relays. The optional parameters <0-255> is usually a value of 0 or 1 for many controllers, 0 indicating the first 256 relays, 1 indicating the next 256 relays. The actual maximum value for this command will depend on the number of relays supported by your controller. 85
254
148
0-255
<0-255>
Turns on the selected relay. Since the communication bus is limited to 8 bits, this command can accept a byte to control the first 256 relays, or it can accept a word to control the status of more than 256 relays. The optional parameter of <0-255> is usually a value of 0or 1 for many controllers, 0 indicating the first 256 relay, 1 indicating the next 256 relays. The actual maximum value for this command will depend on the number of relays supported by your controller. 85

 

Cell Storage and Recall (TLEE Expansion Required)
Transmit Command Description Receive
254
71
0-255 (Cell)
Display Relay Pattern for all 32 Banks of Relays in the selected cell. 32 Bytes of Cell Data
254
72
0-255 (Cell)
Recalls a Relay Pattern for 32 Banks of Relays and Refreshes all relays. Call value indicates which cell to recall from 0 to 255. 85
254
73
0-255 (Cell)
Stores a Relay Pattern for 32 Banks of Relays in the Selected Cell 0-255. 85

Troubleshooting

Use the Base Station Software to diagnose any problems with your device.  Choose the option ‘ProXR Quality Control and Diagnostics’ as shown below.

To diagnose any problems with the device:

  1. Set number of relays to test.
  2. Start Relay test sequence.
  3. Select individual bank to test.
  4. Set relay test sequence speed.
  5. Test functionality of PGM/RUN jumper.  To Pass move jumper to PGM position, then to RUN position.
  6. Used as a reminder to testing staff to check functionality of all on board LEDs, click to “Pass”.
  7. Used by testing staff to check continuity of relays.  Click to “Pass”.
  8. Used by testing staff to check XR Expansion Port.  Click to “Pass”.
  9. Used by testing staff to check 3.3 vdc circuit voltage.  Click to “Pass”.
  10. Used by testing staff to check 5 vdc circuit voltage.  Click to “Pass”.
  11. Pause testing sequence.
  12. Reset all status boxes.
  13. Used by testing staff for continuity outputs.