Controlanything Proxr PROXR_V2 User Manual Pro XR

2012-01-17

User Manual: Controlanything Proxr ProXR manuals

Open the PDF directly: View PDF PDF.
Page Count: 44

DownloadControlanything Proxr PROXR_V2 User Manual Pro XR
Open PDF In BrowserView PDF
ProXR Series

ir
epa
R
r
ce
ea
5-Y Repla !!!
y
r
t
o
rran
Wa

RS-232 E3C Networkable Relay Controllers

NCD ProXR Series Controllers are our latest generation of relay
controllers. Developed in 2005 and released into mass production for
2006, these controllers place a heavy emphasis on communication
speed, relay bank expansion, and relay timing control.
The ProXR Series Controllers include an XR Expansion port, allowing
you to add additional banks of relays (any kind of relays you need),
directly to the main controller. With a few minor programming modifications, you will be controlling the new relay banks in seconds. Up to
256 relays (32 Banks of 8 Relays) are Supported with version 17
firmware. You can now control individual relays, relay banks, or all
relays at one time.
The ProXR Series Controllers also offer full-speed RS-232 communications, up to 115.2K Baud, and are E3C Network Compliant up to
38.4K Baud.
Also new for the 2006 release year is the addition of 16 background
timers, ideal for watchdog, keep alive, server reboot, and duration
timing applications.
Control 256 Devices from a Single Serial Port
Watchdog / Server Reboot / Keep Alive Timing Functions
Supports Duration Timing Commands (turn a light on for 8 hours)
Control 256 Relays (32 Relay Banks) From One Controller
User-Selectable Communication Rates up to 115.2K Baud
Change Parameters in Configuration Mode ONLY to Prevent Accidental Changes
E3C Compliant Command Set
Diode Clamped Relay Driver Stage
Relay Status LEDs
Device Enabled/Power LED
Data Receive LED
12 Volt DC Operation
User-Programmable Startup Status
Simultaneously Set the Status All Relays
Ask the Status of Individual or All Relays
Protected E3C Device Numbering
O.C. RS-232 Communication for Networking Multiple Devices
Powerful ASCII Character Code Based Command Set
Compatible with ANY Computer or Microcontroller

With 16 Background timers and XR Expansion Ports, the
ProXR Series Relay Controllers offer more features than any
other relay controller we have ever produced.

Original R4x/R8x
Relay Controllers

R4x/R8x Pro Relay
Controllers

ProXR Series
Controllers

Yes

Yes

No, Full Speed RS232 Only

R4x Pro Form Factor Compatible with Original R4x Design

-

R45 Pro is Smaller

New Form Factor, Many
New Varieties

R8x Pro Form Factor Compatible with Original R8x Design

-

Yes

New Form Factor, Many
New Varieties

XR Expansion Ports (Allow you to add additional relay banks at a later time)

No

No

Yes

Protected Memory Storage (Must set controller to Configuration Mode to Define Device Number)

No

No

Yes

Set Status of Individual Relays

Yes

Yes

Yes

Set Status of Multiple Relays Simultaneously

No

Yes

Yes

Set Status of Multiple Banks of Relays Simultaneously

No

No

Yes

Read Status of Individual Relays

No

Yes

Yes

Read Status of Multiple Relays Simultaneously

Yes

Yes

Yes

16 Device Network Compliance

Yes

Yes, Emulation Mode

No, E3C Compliance Only

E3C 256 Device Network Compliance

No

Yes

Yes

Programmable Relay Timer

No

Yes

Yes, 16 Background

Jumper Configured

Software Configured

Software Configured
(protected memory)

Programmable Power-up Relay Status

No

Yes

Yes

Programmable Relay Status Memory Banks

No

Yes

No

Multi-Parameter Command Structure

No

Yes

Yes

Relay Select/Deselect Command Set

No

Yes

No

Extended Relay Control Command Set

No

Yes

No

Integrated User-Programmable Memory

No

Yes

Yes

NCD Relay Controllers: Feature Comparison
Optoisolation on RS-232 Data Inputs

Programmable Device Number

20 MHz CPU Operation
Maximum Communication Baud Rate

No

Yes

Yes

19,200

38,400

115,200

5-Year Repair or
Replace Warranty
Warranty
NCD Warrants its products against defects in materials and
workmanship for a period of 5 years. If you discover a defect,
NCD will, at its option, repair, replace, or refund the purchase
price. Simply return the product with a description of the problem and a copy of your invoice (if you do not have your invoice,
please include your name and telephone number). We will
return your product, or its replacement, using UPS ground shipping service.
This warranty does not apply if the product has been modified
or damaged by accident, abuse, or misuse.
30-Day Money-Back Guarantee
If, within 30 days of having received your product, you find that
it does not suit your needs, you may return it for a refund. NCD
will refund the purchase price of the product, excluding shipping/handling costs. This guarantee does not apply if the product has been altered or damaged.
Copyrights and Trademarks
Copyright 2007, NCD, inc. All rights reserved. Other brand
and product names are trademarks of registered trademarks of
their respective holders.
Disclaimer of Liability
NCD is not responsible for special, incidental, or consequential
damages resulting from any breach of warranty, or under any
legal theory, including lost profits, downtime, goodwill, damage
to or replacement of equipment or property, and any costs or
recovering, reprogramming, or reproducing any data stored in
or used with NCD products.
Technical Assistance
Technical questions can be e-mailed to Ryan Sheldon. For our
latest email address, please visit the Contact section of our
web site. Technical questions submitted via e-mail are answered up to 20 times daily. Technical support is also available by calling (417) 646-5644.
NCD Contact Information
Mailing Address:
National Control Devices
P.O. Box 455
Osceola, MO 64776

The ProXR Family:
R165PROXR
R1610PROXR
R81DPDTOC8LP
R83DPDTOC8LP
R85DPDTOC8LP
R81DPDTR85PROXR
R81DPDTR810PROXR
R83DPDTR85PROXR
R83DPDTR810PROXR
R85DPDTR85PROXR
R85DPDTR810PROXR
R161DPDTPROXR
R163DPDTPROXR
R165DPDTPROXR
R241DPDTPROXR
R243DPDTPROXR
R245DPDTPROXR
R245PROXR
R2410PROXR
R325PROXR
R3210PROXR
R165R16OCLP
R1610R16OCLP
R161DPDTR16OCLP
R163DPDTR16OCLP
R165DPDTR16OCLP
R161DPDTR165PROXR
R161DPDTR1610PROXR
R163DPDTR165PROXR
R163DPDTR1610PROXR
R165DPDTR165PROXR
R165DPDTR1610PROXR
R321DPDTPROXR
R323DPDTPROXR
R325DPDTPROXR
R121DPDTR125PROXR
R121DPDTR1210PROXR
R123DPDTR125PROXR
R123DPDTR1210PROXR
R125DPDTR125PROXR
R125DPDTR1210PROXR

16-Channel 5A SPDT RS-232 Relay Controller with XR Expansion Port
16-Channel 10A SPDT RS-232 Relay Controller with XR Expansion Port
8-Channel 1A DPDT Relay + 8-Channel 150ma O.C. Output RS-232 Relay Controller
8-Channel 3A DPDT Relay + 8-Channel 150ma O.C. Output RS-232 Relay Controller
8-Channel 5A DPDT Relay + 8-Channel 150ma O.C. Output RS-232 Relay Controller
8-Channel 1A DPDT Relay + 8-Channel 5A SPDT RS-232 Relay Controller
8-Channel 1A DPDT Relay + 8-Channel 10A SPDT RS-232 Relay Controller
8-Channel 3A DPDT Relay + 8-Channel 5A SPDT RS-232 Relay Controller
8-Channel 3A DPDT Relay + 8-Channel 10A SPDT RS-232 Relay Controller
8-Channel 5A DPDT Relay + 8-Channel 5A SPDT RS-232 Relay Controller
8-Channel 5A DPDT Relay + 8-Channel 10A SPDT RS-232 Relay Controller
16-Channel 1A DPDT RS-232 Relay Controller with XR Expansion Port
16-Channel 3A DPDT RS-232 Relay Controller with XR Expansion Port
16-Channel 5A DPDT RS-232 Relay Controller with XR Expansion Port
24-Channel 1A DPDT RS-232 Relay Controller with XR Expansion Port
24-Channel 3A DPDT RS-232 Relay Controller with XR Expansion Port
24-Channel 5A DPDT RS-232 Relay Controller with XR Expansion Port
24-Channel 5A SPDT RS-232 Relay Controller with XR Expansion Port
24-Channel 10A SPDT RS-232 Relay Controller with XR Expansion Port
32-Channel 5A SPDT RS-232 Relay Controller with XR Expansion Port
32-Channel 10A SPDT RS-232 Relay Controller with XR Expansion Port
16-Channel 5A SPDT Relay + 16-Channel 150ma O.C. Output RS-232 Relay Controller
16-Channel 10A SPDT Relay + 16-Channel 150ma O.C. Output RS-232 Relay Controller
16-Channel 1A DPDT Relay + 16-Channel 150ma O.C. Output RS-232 Relay Controller
16-Channel 3A DPDT Relay + 16-Channel 150ma O.C. Output RS-232 Relay Controller
16-Channel 5A DPDT Relay + 16-Channel 150ma O.C. Output RS-232 Relay Controller
16-Channel 1A DPDT Relay + 16-Channel 5A SPDT RS-232 Relay Controller
16-Channel 1A DPDT Relay + 16-Channel 10A SPDT RS-232 Relay Controller
16-Channel 3A DPDT Relay + 16-Channel 5A SPDT RS-232 Relay Controller
16-Channel 3A DPDT Relay + 16-Channel 10A SPDT RS-232 Relay Controller
16-Channel 5A DPDT Relay + 16-Channel 5A SPDT RS-232 Relay Controller
16-Channel 5A DPDT Relay + 16-Channel 10A SPDT RS-232 Relay Controller
32-Channel 1A DPDT RS-232 Relay Controller with XR Expansion Port
32-Channel 3A DPDT RS-232 Relay Controller with XR Expansion Port
32-Channel 5A DPDT RS-232 Relay Controller with XR Expansion Port
12-Channel 1A DPDT Relay + 12-Channel 5A SPDT RS-232 Relay Controller
12-Channel 1A DPDT Relay + 12-Channel 10A SPDT RS-232 Relay Controller
12-Channel 3A DPDT Relay + 12-Channel 5A SPDT RS-232 Relay Controller
12-Channel 3A DPDT Relay + 12-Channel 10A SPDT RS-232 Relay Controller
12-Channel 5A DPDT Relay + 12-Channel 5A SPDT RS-232 Relay Controller
12-Channel 5A DPDT Relay + 12-Channel 10A SPDT RS-232 Relay Controller

XR Expansion Boards:
These Controllers can be Connected to the XR
Expansion Port on any of the ProXR Controllers.
XR16OCLP
XR121DPDTR125
XR123DPDTR125
XR125DPDTR125
XR121DPDTR1210
XR123DPDTR1210
XR125DPDTR1210
XR241DPDT
XR243DPDT
XR245DPDT
XR245
XR2410
XR161DPDTR16OCLP
XR163DPDTR16OCLP
XR165DPDTR16OCLP
XR161DPDTR165
XR163DPDTR165
XR165DPDTR165
XR161DPDTR1610
XR163DPDTR1610
XR165DPDTR1610
XR321DPDT
XR323DPDT
XR325DPDT
XR165OC16LP
XR1610OC16LP
XR325
XR3210
XR81DPDTOC8LP
XR83DPDTOC8LP
XR85DPDTOC8LP
XR81DPDTR85
XR83DPDTR85
XR85DPDTR85
XR81DPDTR810
XR83DPDTR810
XR85DPDTR810
XR161DPDT
XR163DPDT
XR165DPDT

XR Expansion Module 16-Channel Low Power Open Collector
12-Channel 1A DPDT Relay + 12-Channel 5A SPDT Expansion Relay Controller
12-Channel 3A DPDT Relay + 12-Channel 5A SPDT Expansion Relay Controller
12-Channel 5A DPDT Relay + 12-Channel 5A SPDT Expansion Relay Controller
12-Channel 1A DPDT Relay + 12-Channel 10A SPDTExpansion Relay Controller
12-Channel 3A DPDT Relay + 12-Channel 10A SPDT Expansion Relay Controller
12-Channel 5A DPDT Relay + 12-Channel 10A SPDT Expansion Relay Controller
24-Channel 1A DPDT Expansion Relay Controller
24-Channel 3A DPDT Expansion Relay Controller
24-Channel 5A DPDT Expansion Relay Controller
24-Channel 5A SPDT Expansion Relay Controller
24-Channel 10A SPDT Expansion Relay Controller
16-Channel 1A DPDT Relay + 16-Channel 150ma O.C. Output Expansion Relay Controller
16-Channel 3A DPDT Relay + 16-Channel 150ma O.C. Output Expansion Relay Controller
16-Channel 5A DPDT Relay + 16-Channel 150ma O.C. Output Expansion Relay Controller
16-Channel 1A DPDT Relay + 16-Channel 5A SPDT Expansion Relay Controller
16-Channel 3A DPDT Relay + 16-Channel 5A SPDT Expansion Relay Controller
16-Channel 5A DPDT Relay + 16-Channel 5A SPDT Expansion Relay Controller
16-Channel 1A DPDT Relay + 16-Channel 10A SPDT Expansion Relay Controller
16-Channel 3A DPDT Relay + 16-Channel 10A SPDT Expansion Relay Controller
16-Channel 5A DPDT Relay + 16-Channel 10A SPDT Expansion Relay Controller
32-Channel 1A DPDT Expansion Relay Controller
32-Channel 3A DPDT Expansion Relay Controller
32-Channel 5A DPDT Expansion Relay Controller
16-Channel 5A SPDT Relay + 16-Channel 150ma O.C. Output Expansion Relay Controller
16-Channel 10A SPDT Relay + 16-Channel 150ma O.C. Output Expansion Relay Controller
32-Channel 5A SPDT Expansion Relay Controller
32-Channel 10A SPDT Expansion Relay Controller
8-Channel 1A DPDT Relay + 8-Channel 150ma O.C. Output Expansion Relay Controller
8-Channel 3A DPDT Relay + 8-Channel 150ma O.C. Output Expansion Relay Controller
8-Channel 5A DPDT Relay + 8-Channel 150ma O.C. Output Expansion Relay Controller
8-Channel 1A DPDT Relay + 8-Channel 5A SPDT Expansion Relay Controller
8-Channel 3A DPDT Relay + 8-Channel 5A SPDT Expansion Relay Controller
8-Channel 5A DPDT Relay + 8-Channel 5A SPDT Expansion Relay Controller
8-Channel 1A DPDT Relay + 8-Channel 10A SPDT Expansion Relay Controller
8-Channel 3A DPDT Relay + 8-Channel 10A SPDT Expansion Relay Controller
8-Channel 5A DPDT Relay + 8-Channel 10A SPDT Expansion Relay Controller
16-Channel 1A DPDT Expansion Relay Controller
16-Channel 3A DPDT Expansion Relay Controller
16-Channel 5A DPDT Expansion Relay Controller

Telephone:
(417) 646-5644
FAX:
(866) 562-0406
Internet:
www.controlanything.com
www.controleverything.com

Device Variations
This manual covers all NCD products with ProXR in the Part Number as well as other part numbers that may reference this document.

IMPORTANT POWER SUPPLY REQUIREMENTS

Status LEDs:

1)
2)

LEDs

3)
4)
5)
6)

DO NOT USE A WALL WART TYPE UNREGULATED POWER SUPPLY.
USE ONLY A COMPUTER GRADE REGULATED SWITCHER SUPPLY RATED AT 12
VOLTS DC, 1.25 AMPS OR GREATER.
USE A SUPPLY RATED FOR MORE AMPERAGE WHEN POWERING MULTIPLE
BOARDS.
DC POWER SHOULD NEVER TRAVEL GREATER THAN 20 FEET. A SEPARATE
POWER SUPPLY SHOULD BE USED FOR EACH CONTROLLER IF CONTROLLERS
ARE NOT LOCATED WITHIN 20 FEET OF EACH OTHER.
RELAY COILS ARE RATED AT 12 VOLTS DC. HIGHER VOLTAGES WILL
SHORTEN THE COIL LIFE. LOWER VOLTAGES MAY CAUSE UNRELIABLE OPERATION, BUT WILL NOT DAMAGE THE CONTROLLER.
PROXR SERIES CONTROLLERS CAN BE USED IN 12 VOLT AUTOMOTIVE ELECTICAL SYSTEMS.

Description

1

Heartbeat LED Flashes Quickly most of the time, flashes slowly when a
timing operation is in progress.

2

Data Receive LED Flashes when Valid Data is Received

3

E3C Device Enabled LED is Lit when Device is Enabled (on by default)

4

Data Transmit LED Flashed when Data is Sent Back to User

DIP SWITCH SETTINGS HAVE NO EFFECT UNTIL THE CONTROLLER HAS BEEN POWER CYCLED.
Did You Know?

38.4K Baud Configuration Mode Allows
you to Store Device Parameters.
On Powerup, All Relays are Tested in
Configuration Mode.

The mechanical relays we have chosen for our controllers are rated to easily withstand several million
continuous high-current switching cycles and have
an operational life of more than 10 years. In many
ways, today’s mechanical relays can outlast solid state
relays because of their mechanical ability to handle high
current surges. In addition, the mechanical relays we
have chosen are hermetically sealed, greatly reducing
wear on the contacts by eliminating internal sparking.

Standard Hole Size is .156”.
Standard Inset of Mounting Holes from any edge of the board is .175” from edge to Center of Mounting Hole.
We recommend the use of a #8 Screw with a Minimum .250” Standoff.
The component side of the R45, R410, R85, R810 Pro requires 3/4” minimum clearance.
The component side of any Controller with DPDT in the part number requires 1 1/4” minimum clearance.
The component side of any Relay Controller with 20 or 30 Amp Relay requires 1 1/2” minimum clearance.
NOTE: Some 20 or 30 Amp Relay Controller Varieties require direct connection to the top side of each relay.
Additional clearance for the connectors is highly recommended.
Complete mechanical drawings for each device in the ProXR Series Line can be found on the product
description page of each controller at www.controlanything.com.

DIP Switch Settings
Switch:

1

2

3

*38.4K

Off

Off

Off

2400

On

Off

Off

4800

Off

On

Off

9600

On

On

Off

19.2K

Off

Off

On

38.4K

On

Off

On

57.6K

Off

On

On

115.2K

On

On

On

RS-232 Data Output
RS-232 Data Input
RS-232 Ground
Power Ground
+12 Volt Input

Bank 1

Bank 0 Speaks to
all Relay Banks

2
1

XR Expansion Port
Allows you to Add
More Relays to your
Controller

3
4

Bank 2

Relay
Status
LEDs

Relay
Status
LEDs

DATA OUT: TTL/OC Jumper
OC232: Open Collector RS-232 Output Used
for Networking Multiple Devices. Requires
RSB Booster in this mode.
RS232: Standard RS-232 Data
Mode. This is the default setting.

Output

Please visit our web site for mechanical drawings of the ProXR Series Controller
Never Install NCD Relay Controllers Near High
Power RF Transmitters, Such as CB Radio and
Emergency Vehicle Voice/Data Transmitters.
These Devices May Cause All Relays to Turn Off.

The XR Expansion Port
Adding Relay Banks with the XR Expansion Port
The ProXR Series controllers are equipped with an XR Expansion port.
This port is used to chain relay controllers together, making it easy to
add relay banks as your needs grow. We offer a large line of relay
expansion boards, ready to attach to the XR port of your controller.
The photo below shows how to connect multiple relay banks to a single
ProXR relay controller. You can add all types of relay expansion banks
in any combination to the ProXR series controllers.

R1620HP 16-Relay 20A High
Power Expansion Controller

R165DPDTPROXR RS-232
Relay Controller

XR165 16-Relay 5A
Expansion Controller

Above
The R165DPDTPROXR relay controller is attached to an R1620HP relay controller, which is chained to an XR165 relay controller. The ProXR series controllers can be expanded with any NCD device with part numbers beginning XR. The expansion
cables shown above are included with the XR series relay controllers. In the configuration shown above, there are 6 relay
banks. The ProXR firmware supports a chain of up to 32 relay banks. Each relay controller can be powered by itself (we carry
the appropriate power supply as a product option), or one large supply can be used to power all relay banks (not supplied).

Two-Way Communication:
The ProXR Series Controllers support two-way communication for confirming the receipt of commands and
for reporting the status of the relays back to the host
computer.

Test Software Provided on our Web Site expxects this
wiring configuration.

The ProXR Series Controllers should be connected as
shown below when using this device for the first time.
Even if you plan to connect several controllers to a single serial port, this wiring diagram must first be used to
program the device number into the controller.

WARNING:
+12

Do NOT Exceed +12.50 Volts on the power inputs
Do NOT use an unregulated wall adapter (wall wart)
Use ONLY a computer grade supply rated at +12 Volts 2.5 Amps or greater

R16 Data Ground
R16 Data In
R16 Data Out
RS-232
Data In

RS-232
Data Out

RS-232
Ground

This illustration shows the R32 relay board, this wiring configuration is generically compatible with all NCD relay controllers, including “Pro” and “ProXR” series with a 5position terminal block.
Solder Side of DB9 Female Shown

ProXR One-Way Communication:
The ProXR Series Controllers can be connected to a
computer or microcontroller using as little as two wires.
When used in 1-way mode, reporting should be turned off
for highest communication speed. Turning off reporting
will allow you to send commands to the ProXR Series
Controllers much faster, but it is impossible to ask the
controller for the status of relays when wired as shown
below.

Reporting Mode is activated by sending ASCII character codes 254, 27.
Reporting Mode is deactivated by sending ASCII character codes 254, 28.

WARNING:
+12

Do NOT Exceed +12.50 Volts on the power inputs
Do NOT use an unregulated wall adapter (wall wart)
Use ONLY a computer grade supply rated at +12 Volts 2.5 Amps or greater

R16 Data Ground
R16 Data In

RS-232
Data Out

This illustration shows the R32 relay board, this wiring
configuration is generically compatible with all NCD relay
controllers, including “Pro” and “ProXR” series with a 5position terminal block.

RS-232
Ground

Solder Side of DB9 Female Shown

Multiple Relay Controllers: Two-Way & One-Way Hybrid Communication
Multiple NCD Devices can be connected to a single serial port and controlled individually. This example shows
an R16 and an R32 connected to a single serial port.
Before using this wiring configuration, each device must
be programmed with a unique device number (See E3C
Commands in Both Manuals for Details). Once a device
number has been stored into each controller this wiring
configuration may be used to control up to 256 different
relay boards or other NCD devices in any combination.
This wiring configuration only allows 2-way communication with the R32. Relay status information cannot be
read from the R16.
When all boards are first powered up, all devices will
respond to incoming commands. Use E3C Command
252 to speak to one device at a time. Send 252, 0, any
subsequent commands should be for the R32, Device 0.
Send 252, 1, any subsequent commands should be for
the R16, Device 1.
This E3C Command 252 is useful when mixing different
types of controllers on a single serial port.

Multiple Device Control: Quick Example
Step 1: Store a Device Number from 0 to 255 into
Each Controller. Example Shows Device 0 and 1.
Step 2: Route Commands to Device 0 Only by Sending the Following Commands:
ASCII 254
ASCII 252
ASCII 0

‘Enter Command Mode
‘Select a Device to Control Command
‘Set Device to Control to 0

Step 3: Activate Relay 1 on Device 0 (R32)
ASCII 254
ASCII 1
ASCII 0

‘Enter Command Mode
‘Relay On Command
‘Turn On Relay 1

Step 4: Route Commands to Device 1 Only by Sending the Following Commands:
ASCII 254
ASCII 252
ASCII 1

‘Enter Command Mode
‘Select a Device to Control Command
‘Set Device to Control to 1

Step 3: Activate Relay 1 on Device 1 (R16)
ASCII 254
ASCII 16

R16 Relay Controller:
+12

‘Enter Command Mode
‘Turn Relay 0 On

WARNING:

Do NOT Exceed +12.50 Volts on the power inputs
Do NOT use an unregulated wall adapter (wall wart)
Use ONLY a computer grade supply rated at +12 Volts 2.5 Amps or greater

R16 Data Ground
R16 Data In

Device 1
Programmed Into controller .
See R16 Manual

NOTICE:
Commands Shown On This Page Do NOT Represent
Valid Commands for ProXR Series Controllers
Wiring Diagram Shown is Generically Compatible
with the ProXR Series Controllers.

R32 Relay Controller:
+12

Device 0
Programmed Into controller
using the Program Device
Number Command. Page 9.

R16 Data Ground
R16 Data In
R16 Data Out
RS-232
Data In

Illustration shows R32 relay board, this wiring configuration is the same for all NCD relay controllers, including
“Pro” series with a 5-position terminal block.

RS-232
Data Out

RS-232
Ground

Solder Side of DB9 Female Shown

Multiple Relay Controllers: Two-Way Communication
Our relay controllers support two-way communication to multiple devices using the RSB serial booster. Jumpers must be
set for Open Collector data transmission. See the appropriate manual for your relay controller. This is ONLY required
when using the RSB serial booster. The RSB serial booster
should be used when controlling several devices over long
distances (has been tested in excess of 500 feet). Actual
reliability over long distances depends greatly on baud rate
and type of wire used. Experimentation will be required.
Always start at the lowest baud rate and work your way up.
A unique device number should be programmed into each
device prior to using this example.

ProXR Version NOTICE:

Selecting a Power Supply
1)
2)
3)
4)

5)

6)

ProXR Series Controllers are wired in the same way shown below, and are
generically compatible with the diagrams shown on this page. ProXR
Series Controllers also use the RS232/OC232 Jumper Referenced on this
page. Dip Switch Settings Shown Below do Not Apply to the ProXR Series
Controllers. Do Not Exceed 38.4K Baud when using the RSB Booster.

DO NOT USE A WALL WART TYPE UNREGULATED POWER
SUPPLY.
USE ONLY A COMPUTER GRADE REGULATED SWITCHER
SUPPLY RATED AT 12 VOLTS DC, 1.25 AMPS OR GREATER.
USE A SUPPLY RATED FOR MORE AMPERAGE WHEN POWERING MULTIPLE BOARDS.
DC POWER SHOULD NEVER TRAVEL GREATER THAN 20
FEET. A SEPARATE POWER SUPPLY SHOULD BE USED FOR
EACH CONTROLLER IF CONTROLLERS ARE NOT LOCATED
WITHIN 20 FEET OF EACH OTHER.
RELAY COILS ARE RATED AT 12 VOLTS DC. HIGHER VOLTAGES MAY SHORTEN THE COIL LIFE. LOWER VOLTAGES
MAY CAUSE UNRELIABLE OPERATION, BUT WILL NOT DAMAGE THE CONTROLLER.
IT IS SAFE TO CONTROL ANY +12 VOLT RELAY CONTROLLER
FROM AN AUTOMOTIVE POWER SYSTEM. YOU MAY DISREGARD THE +12.5 VOLT WARNING ON THIS PAGE AND THE
PREVIOUS PAGE IN THIS APPLICATION.

WARNING:
+12

Do NOT Exceed +12.50 Volts on the power inputs
Do NOT use an unregulated wall adapter (wall wart)
Use ONLY a computer grade supply rated at +12 Volts 2.5 Amps or greater

R16 Data Ground
R16 Data In
R16 Data Out

Jumpers MUST be
Set between the
Lower Two Terminals. Set jumpers
opposite of what is
shown in these
photos.

Device 1
The Device Number is Programmed Into
Controller using the E3C Command Set.

Connect up to 256 devices on a Single Serial
Port. Each R16 MUST
be Programmed with a
Unique Device Number.

+12

R16 Data Ground
R16 Data In
R16 Data Out

Device 0
The Device Number is Programmed Into
Controller using the E3C Command Set.

Illustration shows R32 relay board, this wiring configuration is
the same for all NCD relay controllers, including “Pro” series
with a 5-position terminal block.
Limitations:
1) The RSB Serial Booster is NOT Compatible with Baud
Rates above 38.4K Baud.
2) It is estimated that a single serial booster can control
256 Relay controllers. This has not been tested, and
may be subject to other baud rate or distance limitations. Please contact us if you have application problems with this configuration.

PLEASE SEE THE
MANUAL FOR THE
RSB SERIAL
BOOSTER FOR
COMPLETE WIRING
INFORMATION.

Sending Commands to the ProXR Series Relay Controllers
The ProXR Series Controllers are capable of sending and receiving data via RS-232 serial communications. ProXR Controllers are compatible with just about any computer or microcontroller ever produced, including the Macintosh, Amiga, Basic
Stamp, and of course, Windows & DOS based machines.
Regardless of the system you are using, you will need access
to a programming language that supports program control of
the serial port on your computer.
A terminal program is not suitable for controlling NCD Devices
unless it supports transmission of Binary ASCII Character
Codes. Commands should be sent using ASCII character
codes 0-255 rather than ASCII characters (A, B, C etc.). See
“ASCII Codes vs. Characters” on this page.
Most systems require you to open the appropriate serial port
(COM port) prior to sending or receiving data.
Because there are so many different ways to send and receive
data from various languages on various platforms, we will provide generic instructions that can be easily converted to your
favorite language.
For example, if this manual says “Send ASCII 254”, the user
will need to translate this instruction into a command that is
capable of sending ASCII character code 254.
To Send ASCII 254 from Visual Basic, you will use the following
line:
MSComm1.Output = Chr$(254)
In Qbasic, you can send ASCII 254 using the following line of
code:
Print #1, Chr$(254);
Note that sending ASCII character code 254 is NOT the same
as sending ASCII characters 2, 5, and 4 from a terminal program. Typing 2, 5, and 4 on the keyboard will transmit three
ASCII character codes.
In your program, you may want to ask ProXR Controllers for the
current status of relays, just to confirm their activation. If so,
your programming language will support commands for reading
data from the serial port.
For your convenience, we have provided several programming
examples in Visual Basic 6 for controlling the ProXR Series
Controller. These examples should greatly speed development
time. You may want to visit www.controleverything.com for
the latest software and programming examples.
Programming examples for the ProXR Series are much more
extensive for Visual Basic 6 users than for any other programming language. If you are not a VB programmer, you may consider looking at the VB6 source code, as it is easily translated
into other popular languages.
Regardless of your programming background, the provided Visual Basic 6 source code is very easy to understand and will likely resolve any communication questions
you may have. VB6 programming examples may be
viewed in any text editor.

ASCII Codes vs. Characters
The differences between ASCII codes and ASCII characters
tend to generate a lot of confusion among first-time RS-232
programmers. It is important to understand that a computer
only works with numbers. With regard to RS-232 data, the
computer is only capable of sending and receiving numbers
from 0 to 255.
What confuses people is the simple idea that the numbers 0 to
255 are assigned letters. For instance, the number 65 represents the letter A. The number 66 represents the letter B.
Every character (including numbers and punctuation) is assigned a numeric value. This standard of assignments is called
ASCII, and is a universal standard adopted by all computers
with an RS-232 serial port.
ASCII characters codes can be clearly defined as numbers
from 0 to 255.
ASCII characters however are best defined as letters, A, B, C,
D, as well as punctuation, !@#$%, and even the numbers 0-9.
Virtually all programming languages permit you to send ASCII
in the form of letters or numbers. If you wanted to send the
word “Hello” out the serial port, it is much easier to send the
letters H, e, l, l, and o than it is to send the ASCII character
codes that represent each letter.
For the purposes of controlling NCD devices however, it is
much easier to build a numeric command set. Especially when
communicating to devices where you want to speak to lots of
outputs (which are numbered), inputs (which are also numbered), or control specific devices using their device number
(from 0 to 255).
Put simply, it is easier to control NCD devices using ASCII
character codes 0 to 255 than it is to use ASCII characters A,
B, C, D, etc.
Because terminal programs are ASCII character based, it may
be difficult to generate the proper series of keystrokes that
would be necessary to activate a particular function. Therefore,
they are not suitable for controlling NCD devices. In a real
world control application, a terminal program would not likely be
used to control NCD devices anyway. Therefore, a programming language that supports the transmission and reception of
ASCII character codes 0 to 255 is highly recommended.

Visual Basic 4, 5, 6
We have posted a Visual Basic 6 tutorial in the “Developers Toolbox”
section of our web site. This tutorial is available by clicking here. This
same tutorial can be also be downloaded along with a .NET tutorial in
the Universal Device Manual available from our web site by clicking
here.
.NET Express
You can also use Visual Basic Express to speak to NCD devices. VB
Express is free from Microsoft. At the time of writing, Microsoft offers a
Click the large camouflaged
free download by clicking here.
“Download Now” button on the right side of the screen.
We have also posted a tutorial for using .NET Express in the Universal
Device Manual, available from our web site by clicking here.

The E3C Command Set: Software Control of Multiple NCD Devices
The E3C command set allows you to control up to 256 NCD
devices from a single serial port. It is OK to mix different types
of devices, as long as the devices are E3C compliant. The
R4x/R8x Pro relay controllers support the full set of E3C commands, plus a set of extended commands for storing and recalling the device number.
How does E3C Work?
First of all, each device must be assigned a device number
from 0 to 255. The ProXR Contrroller must be programmed
with a device number, which is accomplished using the “Store
Device Number” command shown below.
E3C stands for Enabled 3-Wire Communication. Put simply, all
devices will respond to your commands when powered up.
Using the E3C command set, you can specify which devices
will listen and which devices will ignore your commands. Note
that E3C commands are never ignored by any device, regardless of the commands you send to the controller.
The number to the left of each command indicates the ASCII
character code that must be sent to issue the command. All
commands must be preceded with ASCII character code 254 to
place the device in command mode. See examples at right.

The E3C Command Set
254, 248 Enable All Devices:
Tells all devices to respond to your commands.
254, 249 Disable All Devices:
Tells all devices to ignore your commands.
254, 250 Enable a Selected Device:
Tells a specific device to listen to your commands.
254, 251 Disable Selected Device:
Tells a specific device to ignore your commands.
254, 252 Enable Selected Device Only:
Tells a specific device to listen to your commands, all other
devices will ignore your commands.
254, 253 Disable a Selected Device Only:
Tells a specific device to ignore your commands, all others will
listen.

Extended E3C Commands
The ProXR Series Controllers support three additional E3C
commands which should only be used when a single device is
attached to your serial port. Extended commands will report
back to the computer.
254, 255 Store Device Number:
Stores the device number into the controller. The device number takes effect immediately. The enabled/disabled status of
the device is unchanged.
254, 246 Recall Device Identification:
This command reports back 4 bytes of data:
ProXR Device ID Part 1: 1
ProXR Device ID Part 2: 0
ProXR Firmware Version: 17 (or newer)
ProXR Year of Firmware Production: 205 (or newer)
ProXR E3C Device Number
254, 247 Recall Device Number:
Reads the stored device number from the controller.

E3C Visual Basic Programming Examples
The E3C command set is easily used from any programming language that supports serial communication. The
following Visual Basic 6 Example source code demonstrates subroutines that can be used to control which devices will listen and which devices will ignore your commands.
Most commands issued to the ProXR Series Controllers
are acknowledged by sending ASCII character code 85
back to the host computer (when reporting is turned on).
E3C commands are not acknowledged regardless of the
reporting mode.

Sample Code: The E3C Command Set
'Enable All E3C Devices
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(248) 'E3C Enable All Device Command
'Disable All E3C Devices
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(249) 'E3C Disable All Device Command
'Enable A Specific E3C Devices, Other Devices will be unchanged
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(250) 'E3C Disable Specific Device Command
MSComm1.Output = Chr$(Device) 'Device Number that will be Disabled
'Disable A Specific E3C Devices, Other Devices will be unchanged
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(251) 'E3C Disable Specific Device Command
MSComm1.Output = Chr$(Device) 'Device Number that will be Disabled
'Disable All E3C Devices Except (Device)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(252) 'E3C Disable All Device Except Command
MSComm1.Output = Chr$(Device) 'Device Number that will be Active
'Enable All E3C Devices Except (Device)
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(253)
'E3C Enable All Device Except Command
MSComm1.Output = Chr$(Device) 'Device Number that will be Inactive
'Store an E3C Device Number into the Controller
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(255) 'E3C Store Device Number Command
MSComm1.Output = Chr$(Device) 'Device Number that will be Stored
WaitForReply
'Wait for Acknowledgement
'Store an E3C Device Number into the Controller
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(246) 'Get Device Information
Debug.Print GetData
'Device ID Number Part 1
Debug.Print GetData
'Device ID Number Part 2
Debug.Print GetData
'Device Firmware Version
Debug.Print GetData
'Device Year of Manufacture 205 = 2005, 206 = 2006
'Read the E3C Device Number from the Controller
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(247) 'E3C Get Device Number Command
Debug.Print GetData
‘Display E3C Device Number
'Read a Byte of Data from the Serial Port
Public Function GetData()
Do
DoEvents
Until MSComm1.InBufferCount > 0
GetData = Asc(MSComm1.Input)
End Fucntion

'Wait for Device to Reply
'Allow Windows to MultiTask
'If the Device Replies
'Get Data from Device

ProXR Version NOTICE:
ProXR Series Controllers Only Allow you to use the “Store E3C Device
Number” Function while in “Configuration Mode”. This prevents accidental modification of the E3C device number under normal operation if an
incorrect series of commands are sent to the controller. So make sure the
ProXR Controller is in configuration mode when storing the E3C device
number. Simply turn off all DIP Switches and Power Cycle the controller to
enter configuration mode.

STOP HERE:
VERY IMPORTANT READING ON THIS PAGE
Understanding Relay Banks and Basic Control Concepts:
A Relay Bank is Simply a Group of 8 Relays. The ProXR Series Controllers allow you to control up to 256 relays (32 relay banks).
You control which bank of relays you are speaking to at all times. It is VERY IMPORTANT that you understand that there are two
ways to specify which relay bank you are talking to. These topics will be discussed in greater length later in this manual, providing
you with specific instructions and program examples. This page will help prepare you for seeing two different command that do
the same thing. In this manual, you will see the work “Bank”. This word should be equated to a number from 0 to 32. A value of 1
speaks to relay bank 1 (the first 8 relays on the board). A value of 2 speaks to relay bank 2 (the second group of 8 relays on the
board). A value of 32 speaks to the last group of 8 relays (which is connected to the main controller using the XR expansion
ports). A value of 0 speaks to all banks of relays at one time. When bank 0 is selected, you can then specify a command to turn
on relay 1, and relay 1 on all relay banks will be activated. There will be more examples of this and detailed information on each
command. But understanding the concept of controlling multiple relays across multiple banks is very important to your understanding how our controller command set is organized.
Bank Directed Commands:
a) You Specify a Relay Bank (there is a command you will send just for this purpose).
b) All Subsequent Commands will be directed to the previously specified relay bank.
c) You Specify a different Relay.
d) All Subsequent Commands will be directed to the new relay bank you have specified.
Bank Specified Commands:
a) You Specify a Relay Bank with every command.
While this method is slightly slower, it ensures commands are always directed to the correct relay bank.

Understanding Relay Bank Refreshing:
Controlling Multiple Banks
Under normal operation, you will send a command to the relay controller, and the relay controller will respond to your command by
activating or deactivating a relay. This system works well if you only need to control 1-8 relays, but it does not necessarily work
very well if you are taking advantage of the XR Expansion ports, allowing you to control up to 256 relays (32 relay banks). 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, but the commands will not appear to
have any effect. 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. Follow this methodology to set the status of lots of relays at one time across multiple banks:
a) Turn Off Relay Bank Auto Refreshing.
b) Use Relay Control Command to Activate Different Relays on Different Banks.
These commands will not appear to work, they will only modify internal memory.
c) Send the Manual Refresh Command to Update All Relays at One Time.
Command codes will be shown in blue. Send these values to the controller to activate the command.
Any returned data will be shown in green.
Warnings and special notes will be shown in red.

STOP HERE:
VERY IMPORTANT READING ON THIS PAGE

Relay Banking Commands
The ProXR Series Controllers allow you to control up to 256 relays. Relays are
divided into groups of 8 called Banks, and are addressed by their bank number.
For instance, a ProXR series controller with 32 on-board relays has four on-board
banks, the on-board relays respond to Bank values of 1-4. If you use the XR
Expansion port to add another bank of 24 relays, then you will need to specify
bank values of 5-7 to control the extra relays. The firmware doesn’t actually know
how many relays are attached to the relay controller, but it assumes there are 256
relays (banks values 1-32, which is the maximum supported number of relays for
Version 1.0 firmware).
In this manual, you will see two commands that appear to do the same thing, for
example:

254,0-7
Turn Off Individual Relays
254,100-107, Bank Turn Off Individual Relays in Bank
254,8-15
254,108-115

Turn On Individual Relays
Turn On Individual Relays in Bank

254,16-23
Get the Status of an Individual Relay
254,116-123, Bank Get the Status of an Individual Relay in Bank
While the outcome is the same, these commands function in slightly different
ways.

For instance:
254,8

Turn On Relay 1

To make this command work, you will send a 254, then a 8 to activate a relay. By
default, relay bank 1 will be affected by this command. However, you can redirect
this command to a different relay bank using the following command:

254,49,2

Direct Commands to Relay Bank 2

Then you can send:
254,8

Turn On Relay 1 in Bank 2

Here are more examples:

254,49,1
254,8
254,49,2
254,8
254,9
254,10
254,49,3
254,8
254,11
254,12
254,13
254,14
254,49,0
254,8

Direct Commands to Relay Bank 1
Turn On Relay 1 in Bank 1
Direct Commands to Relay Bank 2
Turn On Relay 1 in Bank 2
Turn On Relay 2 in Bank 2
Turn On Relay 3 in Bank 2
Direct Commands to Relay Bank 3
Turn On Relay 1 in Bank 3
Turn On Relay 4 in Bank 3
Turn On Relay 5 in Bank 3
Turn On Relay 6 in Bank 3
Turn On Relay 7 in Bank 3
Direct Commands to All Relay Banks
Turn On Relay 1 in All Relay Banks

This command structure has the advantage of being very fast and efficient. However, if power to the controller is ever lost, commands will automatically be directed to bank 1 when power to the controller has been restored.
We have also included a set of commands that require you to specify the bank as
part of the command structure. This ensures commands are always directed to
the correct relay bank. Here are a few examples:

254,108, 1
254,108, 2
254,109, 2
254,110, 2
254,108, 3
254,111, 3
254,112, 3

Turn On Relay 1 in Bank 1
Turn On Relay 1 in Bank 2
Turn On Relay 2 in Bank 2
Turn On Relay 3 in Bank 2
Turn On Relay 1 in Bank 3
Turn On Relay 4 in Bank 3
Turn On Relay 5 in Bank 3

254,112, 0

Turn On Relay 5 in All Relay Banks (Bank 0)

Relay Refreshing:

Controlling Large Groups of Relays
The ProXR Series Controllers allow you to manually or automatically refresh relay
banks. When you first receive your ProXR Series Controller, Relay Refreshing is
turned on. Meaning every time you send a relay control command, the relays will
respond to your commands.
Turning off relay refreshing allows you to control when the relays actually switch.
When refreshing is turned off, you can send relay control commands to the ProXR
controller, and the controller will work just like normal, but the relays will never
change state.
You can then use the Manual Refresh command to set the status of all relays at
one time. Weather you are controlling 1 or 235 relays, you will be able to refresh
all relays at one time to any given state by taking manual control of the relay
refreshing capabilities. Here are some simple programming examples in VB:

254,25

Turn On Automatic Relay Refreshing
Setting Automatically Stored when in Configuration Mode

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(25) 'Turn ON Refresh Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

254,26

Turn Off Automatic Relay Refreshing
Setting Automatically Stored when in Configuration Mode

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(26) 'Turn Off Refresh Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

254,36

Report Back Stored Refresh Settings

This command reports back a 0 or 1, indicating weather automatic refreshing is
Off or On when power is first applied to the controller.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(36) 'Read Default Powerup Refreshing Status
(Controller will report back ASCII Character Code 0 or 1)

254,37

Manually Refresh Relay Bank

This command stores the current status of relay refreshing in non-volatile memory. The next time the relay controller is powered up, refreshing will be set to the
stored state.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(37) 'Manually Refresh Relays Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Application: Manual Refreshing Relay Banks
This simple application example demonstrates the process required to activate
more than 8 relays simultaneously. In the example below, we will demonstrate
how to apply the Manual Refreshing command to large groups of relays.

Step 1: Turn Off Automatic Refreshing
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(26) 'Turn Off Refresh Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Step 2: Activate Several Relays on Several Relay Banks
(note: relays will not be updated, they will not appear to change).
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(108) 'Turn On Relay 1
MSComm1.Output = Chr$(1) 'On Bank 1
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(111) 'Turn On Relay 4
MSComm1.Output = Chr$(2) 'On Bank 2
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(113) 'Turn On Relay 6
MSComm1.Output = Chr$(3) 'On Bank 3
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)
...You can keep adding relay control commands to activate different relays on different banks, but
keep in mind, these commands will not appear to function. 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 until the NEXT relay control command is
issued.

Step 3: Update All Relays at the Same Time (Manually Refresh)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(37) 'Manually Refresh Relays Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

The ProXR Command Set
The ProXR Series Controllers support an extensive command set, used
to control relays, set operation modes, and store and recall relay status.
Most users will only use a few of the functions built into this controller.
The best way to learn the capabilities of the ProXR series is to carefully
read through the command set. The “plain English” examples provide a
quick, easy to understand definition of each command.
The number in blue to the left of each command indicates the ASCII
character code that must be sent to issue the command. All commands
must be preceded with ASCII character code 254 to place the device in
command mode. See examples at right.
Some commands require that you specify a Bank value from 0-32,
selecting the relay bank you would like to control. A value of 0 selects
all banks. Bank values of 1-4 control up to 32 On-Board relays. When
powered up, the default Bank value in the controller is always 1.

Controlling Individual Relays
254,0-7
Turn Off Individual Relays
254,100-107, Bank Turn Off Individual Relays in Bank
254,8-15
254,108-115

Turn On Individual Relays
Turn On Individual Relays in Bank

Reading the Status of Individual Relays
254,16-23
Get the Status of an Individual Relay
254,116-123, Bank Get the Status of an Individual Relay in Bank
This command allows you to read the on/off status of an individual relay. 16 (or 116) corresponds to relay 1, 23 (or 123) corresponds to
relay 8. This command will return a 1 indicating the relay is ON or a 0
indicating the relay is OFF.
NOTICE: A BANK VALUE OF 0 IS INVALID FOR THIS COMMAND.
RETURNED RESULTS MAY BE UNPREDICTABLE.
254, 24

Get the Status of All Relays

Reading the Status of Relay Banks
254, 124, Bank
Get the Status of All Relays in Bank
This command allows you to read the status of a single bank of relays.
A value of 0-255 is returned indicating the status of all 8 relays. The
binary pattern of the value returned directly corresponds to the on/off
status of each of the 8 relays in the selected relay bank. If the currently selected relay bank is 0, or if you specify relay bank 0, then the
status of all 32 relay banks will be sent. In this condition, your program
should be written to read 32 bytes of data from the serial port.

254, 27

Turn Reporting Mode ON

Reporting Mode
254, 28
Turn Reporting Mode OFF
This command sets and stores (in non-volatile EEPROM while in configuration mode only) the reporting mode status. Reporting mode, by
default, is ON, meaning every time a command is sent to the controller,
the controller will send an 85 back to the computer, indicating that the
command has finished executing your instructions. We recommend
leaving it on, but doing so requires 2-Way communication with the controller. You should turn it off if you intend to use 1-Way communication
only. A delay between some commands may be required when using
1-Way communications. For optimum reliability, leave reporting mode
on and use 2-Way communications with the ProXR Series controllers.
NOTE: Reporting Mode may be turned on or off at any time. The
default power-up status of reporting mode is ONLY stored when
the device is in configuration mode (all dip switches off when the
controller is powered up).

Visual Basic Programming Examples
A Many Visual Basic 6 programming examples are provided in the
following pages to assist in the development of software for controlling
the ProXR Series relay controllers. Additional source code can be
found on our web site at www.controleverything.com.

Sample Code: Controlling Individual Relays
254,0
254,100,1
254,8
254,108,2

Turn Off Relay 0 in Selected Bank
Turn Off Relay 0 in Bank 1
Turn On Relay 0 in Selected Bank
Turn On Relay 0 in Bank 2

These commands are used to turn a relay on or off under computer control. Here
is an actual code sample for VB6 that shows how to use these commands:
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(8) 'Activate Relay 0 on the Currently Selected Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(108) 'Activate Relay 0
MSComm1.Output = Chr$(2) 'In Relay Bank 2
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Sample Code: Reading Status of Relays
254,16
254,116,2
254,117,5

Read the Status of Relay 0 in Selected Bank
Read the Status of Relay 0 in Bank 2
Read the Status of Relay 1 in Bank 5

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(16) 'Read On/Off Status of Relay 0 on Currently Selected Relay Bank
(Controller will report back ASCII Character Code 0 or 1 indicating relay status)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(116) 'Read On/Off Status of Relay 0
MSComm1.Output = Chr$(2) 'In Relay Bank 2
(Controller will report back ASCII Character Code 0 or 1 indicating relay status)

Sample Code: Reading Relay Bank Status
254,24
254,124,2
254,124,0

Read the Status of All 8 Relays in a Selected Bank
Read the Status All 8 Relay in Bank 2
Read the Status of All 8 Relays in All 26 Banks

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(24) 'Read Status of All Relays in Currently Selected Relay Bank
(Controller will report back ASCII Character Codes 0-255, Convert to Binary to See Relay Pattern)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(124) 'Read Status of All Relays
MSComm1.Output = Chr$(2) 'In Relay Bank 2
(Controller will report back ASCII Character Codes 0-255, Convert to Binary to See Relay Pattern)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(124) 'Read Status of All Relays
MSComm1.Output = Chr$(0) 'In ALL Relay Banks
(Controller will report back 26 ASCII Values from 0 to 255, Indicating the Status of all 26 Relay
Banks, Beginning with Bank 1. Convert Returned Values to Binary to See Actual Relay Pattern)

Sample Code: Reporting Mode
NOTE: USE OTHER RELAY CONTROL COMMANDS TO SET RELAYS TO THE DESIRED
POWERUP STATE BEFORE ISSUEING THIS COMMAND. FOR INSTANCE, IF YOU WANT ALL
RELAYS TO COME ON AT POWERUP, USE OTHER RELAY CONTROL COMMANDS TO ACTIVATE ALL RELAYS, THEN ISSUE THIS COMMAND. THE NEXT TIME POWER IS APPLIED TO
THE CONTROLLER, ALL RELAYS WILL AUTOMATICALLY ACTIVATE.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(27) 'Turn On and Store Reporting Mode in EEPROM
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(28) 'Turn Off and Store Reporting Mode in EEPROM
(Controller will no-longer report back 85, commands that request data from the controller, such as
relay status, will still function correctly.)

Please Review Pages 10 and 11 to Better Understand how to Direct Commands to Different Relay Banks

The ProXR Command Set
All Relays On/Off

Sample Code: All Relays On/Off

254, 29
254, 129, Bank

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(29) 'Activate All Relays in the Selected Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Turn All Relays On
Turn All Relays On in Bank

This command is used to activate all relays in a selected relay bank.
54, 30
254, 130, Bank

Turn All Relays Off
Turn All Relays Off in Bank

This command is used to turn all relays off in a selected relay bank.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(129) 'Activate All Relays
MSComm1.Output = Chr$(2)
'In Relay Bank 2
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

NOTE: A Bank Value of 0 applies this command to all relay banks.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(30) 'Deactivate All Relays in the Selected Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

254, 31

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(130) 'Deactivate All Relays
MSComm1.Output = Chr$(2)
'In Relay Bank 2
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Invert All Relays

Inverting Relays

Sample Code: Inverting Relays

254, 131, Bank

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(31) 'Invert All Relays in the Selected Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Invert All Relays in Bank

This command is used to Invert the status of all relays. Relays that
were on turn off, relays that were off turn on. For example:
254, 32
Reverse All Relays
Original Relay
Pattern

0
ON

1
OFF

2
ON

3
ON

4
OFF

5
OFF

6
OFF

7
OFF

Inverted Relay
Pattern

0
OFF

1
ON

2
OFF

3
OFF

4
ON

5
ON

6
ON

7
ON

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(131) 'Invert All Relays
MSComm1.Output = Chr$(3)
'In Relay Bank 3
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Reversing Relays

Sample Code: Reversing Relays

254, 132, Bank

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(32) 'Reverse All Relays in the Selected Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Reverse All Relays in Bank

This command is used to reverse the current pattern of relays in a
given relay bank. For example:
254, 33
Test 2-Way Communications with Controller
Original Relay
Pattern

0
ON

1
OFF

2
ON

3
ON

4
OFF

5
OFF

6
OFF

7
OFF

Reversed
Relay Pattern

0
OFF

1
OFF

2
OFF

3
OFF

4
ON

5
ON

6
OFF

7
ON

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(132) 'Reverse All Relays
MSComm1.Output = Chr$(3)
'In Relay Bank 3
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Test 2-Way Communication

Sample Code: Reversing Relays

This command is used to test 2-Way communications between the PC
and the relay controller. This command does nothing except report
back an ASCII character code 85 when executed.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(33) 'Test 2-Way Communications with Relay Controller Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

254, 34

MSComm1.Output = Chr$(254) 'Enter Command Mode

Report to User the Selected Relay Bank

Reading the Currently Selected Relay Bank
This command queries the relay controller and reports back the relay
bank all commands are being sent to. The importance of relay bank
selection is discussed heavily on pages 10 and 11 of this manual. You
can redirect relay control commands to a different relay bank by sending 254, 49, Bank discussed later in this manual.
254,25
Turn On Automatic Relay Refreshing

Sample Code: Reading Selected Relay Bank
MSComm1.Output = Chr$(34) 'Report Selected Relay Bank to User
(Controller will report back ASCII Character Codes 0-26, indicating which relay bank commands will
be directed to)

Relay Refreshing Commands
254,26
254,35
254,36
254,37

Turn Off Automatic Relay Refreshing
Store Relay Refreshing Mode
Report Back Stored Refresh Settings
Manually Refresh Relay Bank

Relay Refreshing is discussed heavily on pages 10 and 11, and are
considered some of the most important “foundation” concepts for taking
advantage of all the features the ProXR series controllers have to offer.
Please reference these pages for detailed explanation and examples.

Please Review Pages 10 and 11 to Better Understand how to Direct Commands to Different Relay Banks

The ProXR Command Set
Set the Status of a Relay Bank

Sample Code: Setting Relay Bank Status

254, 40, RelayData
254, 140, RelayData, Bank

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(40) 'Set the Status of All Relays in the Selected Relay Bank
MSComm1.Output = Chr$(170) '0-255 Valid Range, Data is Written Directly to Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Set the Status of Relays
Set the Status of Relays in Bank

This command writes a byte of data directly to a relay bank. This allows you to easily set the status of 8 relays at one time. RelayData is a
parameter value from 0-255. A value of 0 turns off all the relays. A
value of 255 turns on all the relays. Other values set the status of the
relays in the equivalent binary pattern of the RelayData parameter
value.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(140) 'Set the Status of All Relays in the Selected Relay Bank
MSComm1.Output = Chr$(170) '0-255 Valid Range, Data is Written Directly to Relay Bank
MSComm1.Output = Chr$(1) 'In Relay Bank 1
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

NOTE: A Bank Value of 0 applies this command to all relay banks.

Power Up Relay Status Configuration
254, 42
254, 142, Bank

Store Power Up Default Status
Store Power Up Default Status in Bank

This command stores the current status of the relays in a given bank
into memory. The next time power is applied to the controller, relays
will return to the stored on/off state. A bank value of 0 stores the pattern of all relays in all 26 banks.
254, 43
Read Power Up Default Status

Sample Code: Relay Status on Power Up
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(42) 'Store Relay Settings in the Selected Relay Bank
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(142) 'Store Relay Settings
MSComm1.Output = Chr$(2) 'In Relay Bank 2
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Read Power Up Relay Status Configuration

Sample Code: Read Relay Status on Power Up

254, 143, Bank

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(43) 'Read Relay Settings in the Selected Relay Bank
(Controller will report back ASCII Character Codes 0-255, Convert to Binary to See Relay Pattern)

Read Power Up Default Status in Bank

This command reads the stored power-up default status of the relays in
a given bank. A bank value of 0 reports back 26 bytes of data, indicating the stored pattern of all 26 relay banks.
254, 49, Bank
Direct Commands to Selected Relay Bank
This command is used to direct commands to a selected relay bank.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(143) 'Read Relay Settings
MSComm1.Output = Chr$(1) 'In Relay Bank 1
(Controller will report back ASCII Character Codes 0-255, Convert to Binary to See Relay Pattern)

Changing Relay Banks

Sample Code: Changing Relay Banks

All subsequent commands will be sent to the selected relay bank. This
command only applies to commands values less than 100. Commands
in the 100+ value range allow you to specify a relay bank as part of the
command.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(49) 'Direct Relay Control Commands
MSComm1.Output = Chr$(2) 'To Relay Bank 2
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

NOTE: Complete details on relay banking is described on Pages
10 and 11 of this manual.

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(8) 'Activate Relay 0 on Bank 2 (Bank is Selected in Above Command)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Helpful Routines and Safe Programming Practices
There are Two helpful Routines you may want to structure into
your program that helps handle serial communications. First,
the ClearBuffer routine can be called prior to sending each
command to the relay controller, helping ensure the serial
buffer is empty and the new command is not returning old data
to your program. This has been a problem for some customers, and it is easily avoided. While this is not always necessary, it should be troubleshooting starting point if the controller
seems to be sending you invalid data.
Second, the GetData routine should be used to read data from
the controller. This simple routine waits for data to arrive in the
serial buffer. Once it arrives, it grabs the data, and stores the
value in the GetData variable.

Clearing the Serial Buffer
Public Function ClearBuffer()
While MSComm1.InBufferCount > 0
DUMP = Asc(MSComm1.Input)
DoEvents
Wend
End Function

‘Read a Byte of Data from the Controller in VB
‘If there is data in the serial port
'Read Data Byte from the Serial Port
‘Service Other Windows Tasks (Very Important!!!)
‘Repeat the Check Again, Loop will Repeat until Empty

Reading a Byte of Data from the PC
Public Function GetData()
Do
DoEvents
Until MSComm1.InBufferCount > 0
GetData = ASC(MSComm1.Input)
End Function

‘Read a Byte of Data from the Controller in VB
‘Start a Continuous Loop
‘Service Other Windows Tasks (Very Important!!!)
‘Continue Loop Until a Byte of Data is Received
‘Read Data Byte from the Serial Port

Please Review Pages 10 and 11 to Better Understand how to Direct Commands to Different Relay Banks

The ProXR Command Set: Watchdog, Keep Alive, and Server Reboot Applications
16 User-Programmable Timers
The ProXR Series controllers have 16 user-programmable timers.
Each independent timer can be assigned to any relay, and can 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.
Limitations
The ProXR series controllers do NOT have an integrated real-time
clock. NCD Devices are not typically stand-alone. They require computer interaction with the controller. Time scheduling is possible, but it
would require a program to be written on the PC to handle the schedule. 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.
Timing Accuracy
The Accuracy of the relay timers is largely dependant on how many
timers are in use, and how much communication you do with the controller while the timing commands are processing.
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 controller 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). The more you communicate with the controller, the more you will slow down all timers.
Timing accuracy tends to drift over time. This 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
Timing is generically recalibrated for 60 seconds using 8 timers. Our
test controller calibration value was 26,576. In other words, a calibration value of 26,576 equals 1 second when the controller is only processing timing tasks.
The calibration value was established on our prototype and may be off
by as much as 3% based on individual resonator, processor, and temperature characteristics. Baud rate was set at 115.2K when this number was established. The calibration value may need to be changed for
other baud rates, but 115.2K baud is the best choice for calibration.
You can adjust the calibration value at any time, but the calibration
value can ONLY be stored while in setup mode. If you need to communicate frequently with the controller while the timing functions are active, you will need to decrease the calibration value. Reasonably accurate timing can be achieved with some experimentation.

It should also be stated that you can spend a week achieving perfect
calibration for your controller, and if you were to plug the calibration
number into a different controller, it will likely not be accurate.
In addition, the timing routines built into the firmware are huge. There
are so many factors that affect timing, that even a well calibrated controller will not post consistent timing scores at all timing intervals. So
you should NEVER expect to find a calibration value that works under
every circumstance. It is not possible to achieve this level of accuracy
without a real time clock. So before you waste hours finding a timing
score for your controller that works perfectly at 10 seconds or 24 hours,
then you should be warned that this is not possible.
Getting Started with Simple Timers
While all the timers in the 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
Simple Duration Timers
These timers activated a relay for a user specified period of time.
When the timer expires, the relay turns off. Here is an example sending a simple duration timer command:
Hold Relay 0 On for 8 Hours, 10 Minutes, 15 Seconds using Simple Duration Timer 0:
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(50)
'Simple Duration Timer 0 Command
MSComm1.Output = Chr$(8)
'Hours (0-255)
MSComm1.Output = Chr$(10)
'Minutes (0-255)
MSComm1.Output = Chr$(15)
'Seconds (0-255)
MSComm1.Output = Chr$(0)
'Relay (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Hold Relay 1 On for 10 Seconds using Simple Duration Timer 1:
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(51)
'Simple Duration Timer 0 Command
MSComm1.Output = Chr$(0)
'Hours (0-255)
MSComm1.Output = Chr$(0)
'Minutes (0-255)
MSComm1.Output = Chr$(10)
'Seconds (0-255)
MSComm1.Output = Chr$(1)
'Relay (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

When the above two commands have been sent. The heartbeat LED
on the controller will slow down. 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.
After the timers have expired, the heartbeat LED on the relay controller
will return to a steadily fast pace.
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).

The ProXR Command Set: Watchdog, Keep Alive, and Server Reboot Applications
Server Reboot Pulse Timers
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 turn on for 1/4th of a second. This
quarter second 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).
Below is a simple example of setting up a pulse timer.
Pulse Relay 0 after 15 Seconds using Simple Pulse Timer 0:
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(70)
'Simple Pulse Timer 0 Command
MSComm1.Output = Chr$(0)
'Hours (0-255)
MSComm1.Output = Chr$(0)
'Minutes (0-255)
MSComm1.Output = Chr$(15)
'Seconds (0-255)
MSComm1.Output = Chr$(0)
'Relay (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Pulse Relay 1 after 45 Seconds using Simple Pulse Timer 1:

MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(71)
'Simple Pulse Timer 0 Command
MSComm1.Output = Chr$(0)
'Hours (0-255)
MSComm1.Output = Chr$(0)
'Minutes (0-255)
MSComm1.Output = Chr$(45)
'Seconds (0-255)
MSComm1.Output = Chr$(1)
'Relay (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

In the examples above, Relay 0 will pulse after 15 seconds and Relay 1
will pulse after 45 seconds.
Mixing Duration and Pulse Timers
You can mix duration and pulse timers as your application requires, in
any combination. Care should be taken not to mix timers. For example, on the previous page, we utilized timers 0 and 1 using the commands 50 and 51. On this page, 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 Duration
Number Timer

Pulse
Timer

Duration
Timer*

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

*These timers do not automatically activate, they must be started using
a different command. More on this a little later in the manual.

Server Reboot Methodology
You can call it 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. Implementation is not too difficult.
Implementing a Server Reboot Strategy for a Single Computer
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 the serial 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.
Implementing a Server Reboot Strategy in a Network
The 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.

The ProXR Command Set: Watchdog, Keep Alive, and Server Reboot Applications
Advanced Timer Commands
More timer Commands?
To this point, we have discussed simple timers. These timers begin
operation as soon as the command is received. This makes them easy
to use, but also imposes a few restrictions in that timers cannot be synchronized perfectly with each other. So we decided to provide our users with a command set that allows you to define the times without
initiating the timer. Instead, the timing data for all 16 timers are stored
in temporary memory until they are initiated. The following commands
store timing data, but do not trigger the countdown. You will use a
different command to control which timers are counting down and which
timers are “stalled”.
Setup a Pulse Timer on Relay 0 for 15 Seconds using Timer 0:
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(110)
'Pulse Timer 0 Setup Command
MSComm1.Output = Chr$(0)
'Hours (0-255)
MSComm1.Output = Chr$(0)
'Minutes (0-255)
MSComm1.Output = Chr$(15)
'Seconds (0-255)
MSComm1.Output = Chr$(0)
'Relay (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Setup a Duration Timer on Relay 1 for 35 Seconds using Timer 1:
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(91)
'Duration Timer 1 Setup Command
MSComm1.Output = Chr$(0)
'Hours (0-255)
MSComm1.Output = Chr$(0)
'Minutes (0-255)
MSComm1.Output = Chr$(35)
'Seconds (0-255)
MSComm1.Output = Chr$(1)
'Relay (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

In the examples above, two timers will be setup, but they will not start
counting down until they are activated. Timers are activated using a
separate command:
Begin Countdown of Timers 0 and 1:

LSB = 3
‘1 + 2 = 3
1 is for Timer 0, 2 is for Timer 2, See Table Below
MSB = 0
‘Keep all other timers off
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(131)
'Control Active and Halted Timers Command
MSComm1.Output = Chr$(LSB)
'16-Bit Value, Least Significant Byte
MSComm1.Output = Chr$(MSB)
'16-Bit Value, Most Significant Byte
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

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 section below to figure LSB and MSB Values:
Timer 0 has a value of 1 on the LSB
Timer 1 has a value of 2 on the LSB
Timer 2 has a value of 4 on the LSB
Timer 3 has a value of 8 on the LSB
Timer 4 has a value of 16 on the LSB
Timer 5 has a value of 32 on the LSB
Timer 6 has a value of 64 on the LSB
Timer 7 has a value of 128 on the LSB

Timer 8 has a value of 1 on the MSB
Timer 9 has a value of 2 on the MSB
Timer 10 has a value of 4 on the MSB
Timer 11 has a value of 8 on the MSB
Timer 12 has a value of 16 on the MSB
Timer 13 has a value of 32 on the MSB
Timer 14 has a value of 64 on the MSB
Timer 15 has a value of 128 on the MSB

To Turn On timers, add up the LSB and MSB Values. For 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.

Timer Query
The Timer Query command is used to view the current status of any
timer. All timers are countdown in nature. Timer Query allows you to
see how much time remains before the timer expires. The example
below illustrates the use the Timer Query command:
MSComm1.Output = Chr$(254)
MSComm1.Output = Chr$(50)
MSComm1.Output = Chr$(130)
MSComm1.Output = Chr$(0)

'Enter Command Mode
'Timer Setup Command
'Issue Timer Query Command
'Select a Timer to Query (0-15)

The first byte sent back to the PC will contain the number of hours left on the selected timer.
The second byte sent back to the PC will contain the number of minutes left on the selected timer.
The third byte sent back to the PC will contain the number of seconds left on the selected timer.
The fourth byte sent back to the PC will contain the relay number the timer applies to (0-255).

Setting the Timer Calibration Value
As discussed earlier in the manual, you can calibrate the timer at any
time. If the controller is in Configuration mode (all dip switches off),
calibration data will be stored when this command is issued. Otherwise, the calibration value will be changed, but settings will be lost
when power is cycled.
Calibrator = 26576
‘26575 Counts Equals 1 Second
LSB = (Calibrator And 255)
‘Compute the LSB Value of the Calibrator
MSB = (Calibrator And 65280) / 256
‘Compute the MSB Value of the Calibrator
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(132)
'Issue the Set Calibrator Command
MSComm1.Output = Chr$(LSB)
'Send Calibrator LSB Value (0-255)
MSComm1.Output = Chr$(MSB)
'Send Calibrator MSB Value (0-255)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Reading the Timer Calibration Value
You may also read the calibration value stored in the controller by issuing the Calibrator Read command. This command returns two bytes of
data to the user.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(133)
'Issue the Set Calibrator Command
The first byte sent back to the PC will contain the Timer Calibrator LSB Value
The second byte sent back to the PC will contain the Timer Calibrator MSB Value
Calibrator = (LSB + (MSB * 256))
‘This math function “rebuilds” the calibration value

Activating Calibrator Markers
Time calibrator markers are used to help calibrate the timer. When the
calibrator markers have been activated, the controller will send our
ASCII character code 90 at the beginning of any timing event. ASCII
character code 91 will be sent at the end of any timing event. The time
measured between the receiving 90 and 91 is used to help the user set
the calibration value. These markers may prove useful if you need your
PC to know when a timing even has occurred.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(134)
'Issue the Set Calibrator Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Deactivating Calibrator Markers
This command turns off the calibration markers described above.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(135)
'Issue the Set Calibrator Command
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

The ProXR Command Set: Advanced Configuration Command Set
Advanced Configuration Commands
Fighting Electromagnetic Interference (EMI)
Any relay controller has to consider EMI as a possible mechanism that
can cause serious interference with normal operation. In extreme
cases, EMI can cause the relays in a given relay bank to turn off, or
even reboot the ProXR processor. We have taken several steps to
help reduce EMI absorption on the logic side of the controller. However, there are some conditions that MAY still exist whereby EMI will
cause all relays on a given bank to turn off.
When relay status information is sent from the controller to the relay
bank, data is normally sent only one time. But the possibility does exist
that the relay is turning on a device that generates a tremendous
amount of EMI. Most of these kinds of devices, such as large DC motors, generate most of their EMI when power is first applied. During this
time (the initial startup of the motor), huge amounts of EMI must be
absorbed by the relays and inducted back onto the logic of the controller. It is during this time the controller becomes the most vulnerable to
EMI absorption.
It is for this reason we have introduced the Repetitions (Reps) command. The Reps command is used to tell the controller to send relay
control data Repeatedly to the relay banks. The theory is that motor
will be fighting to turn on, generating EMI that can clear the relay logic
circuits...but the controller can now fight back by telling the relay bank
to go back on again.
Reps has been introduced as an experimental command, in hopes that
we would have a solution for this problem should it ever arise for our
customers. We would greatly appreciate any feedback our customers
would be willing to provide on the usefulness of the Reps command.
The value specified by the Reps command controls how many times
relay status data is sent to the Relay control chips. Normally, Reps is
set to a value of 1. But if you experience relays that turn themselves off
when activated, try changing the Reps value to any number from 2 to
255 and see what happens. It takes more than a second to process
each relay control command when Reps is set to 255.
Note: If the controller is in configuration mode, the Reps value will be
stored in Non-Volatile EEPROM. Otherwise, the Reps value will be lost
any time the controller is power cycled.
Set the Reps Value

MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(137)
'Set the Reps Value
MSComm1.Output = Chr$(128)
'Reps(1-255) How Many Times Relays are Refreshed
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

This command reports back to the user the current Reps value.
Read the Reps Value
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(136)
'Read the Reps Value Command
The Controller will Report Back the Current Reps Value

Safe Parameters
Another “just-in-case” feature we have included in the ProXR firmware
is a command that sets all the key variables inside the controller to Safe
Parameters. If for some reason, the controller does not seem be functioning properly, or it appears you have lost communication, try sending
this command and see if it recovers. We have never needed this command, but just in case it proves to be useful under highly unusual circumstances...we thought we would throw it in anyway.
Recovery Attempt to Safe Parameters
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(147)
'Setup Safe Parameters
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Setting the Character Delay Value
The Character Delay value determines the spacing between data bytes
sent from the controller back to your PC. By default, CDEL is set to 35,
which is known to be a conservatively safe value. The minimum allows
CDEL value is 3 (we have not seen a PC that can handle this setting).
If you want to boost performance, set the CDEL lower. A value of 7-10
should provide greatly improved communication speed.
Note:
This command stores the CDEL value into Non-Volatile
EEPROM while in configuration mode only. The CDEL value will have
no effect in configuration mode (CDEL is ALWAYS 35 in configuration
mode to ensure safe communications). This command is only processed in configuration mode, it is ignored in runtime mode. In runtime
mode, you will receive ASCII character code 85 if this command is
issued.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(139)
'Set the CDEL Value of the Controller in Runtime Mode
MSComm1.Output = Chr$(10)
'Improve Communication Speed in Runtime Mode
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Reading the Character Delay Value
This command reads the stored character delay value from the controller. This command returns a value from 3 to 255.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer Setup Command
MSComm1.Output = Chr$(138)
'Read the CDEL Value from the Controller Command
The controller will report back a byte of data from 3 to 255 indicating the Character Delay value.

Setting the Attached Banks Value
The ProXR series controllers are shipped as though the customer has
256 relays attached. This allows the controller to be instantly compatible with several XR expansion boards, right out of the box. However,
you can gain a performance increase by setting the Attached Banks
value to the actual number of relays you are using. If you are using a
16 Relay ProXR controller, and you reduce the Attached Banks value to
2, relay control operations will be processed 16 times faster. If you
have a 32 relay controller and you reduce the Attached Banks value to
4, relay control operations will be processed 8 times faster. To determine the appropriate Attached Banks value, divide the number of total
relays you will be using by 8. Valid attached bank values are 1 to 32.
Warning: It is not possible to control relays beyond the Attached Value.
Extra relays will appear to mirror previous banks and will not be directly
controllable. If you experience any problems communicating to extra
relay banks, the Attached Banks value should be checked. This Command ONLY Works in Configuration Mode.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(141)
'Set Attached Banks Command
MSComm1.Output = Chr$(4)
'Controller Processes 4 Banks of 8 Relays (32 Relays)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Reading the Attached Banks Value
This command reports back a value from 1 to 32, indicating how many
relays are attached to the relay controller. Note that this number is
always set by the user. By default, this command return a value of 32.
You can gain a performance increase by reducing the Attached Banks
value. See Above: Setting the Attached Banks Value
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(140)
'Read the Attached Banks Value
This Command Reports Back a Value of 1 to 32, Indicating the Number of Relay Banks Attached to
the ProXR Series controller. By default, this command will report back 32.

The ProXR Command Set: Advanced Configuration Command Set
Advanced Configuration Commands
Setting the Test Cycle Value
When the ProXR series controllers are powered up in Configuration
mode (all dip switches in the off position), the first instruction the controller processes is a function that tests all the on board relays. By
default, the ProXR controller will test 4 banks of relays, which is the
maximum number of relays that we currently product on a single circuit
board. If you have a controller with fewer relays, you will speed up the
test cycle by setting the controller to the actual number of relay banks
on your ProXR controller. Valid Test Cycle values range from 0 to 32,
allowing the controller to test all 256 relays (32 banks of 8). A Test
Cycle value of 0 turns off automatic relay testing in configuration mode.
Since this is a relatively harmless setting, this command works in
both configuration and runtime modes.
Warning: We strongly encourage customers NOT to use configuration
mode for daily use. As a reminder that the controller is in configuration
mode, we recommend leaving the Test Cycle value to 1 or more.
When the controller is in configuration mode, internal memory is not
protected, and is fully changeable at any time. Runtime mode (and dip
switch setting other than all switches in the off position) protects internal
memory from accidental modification.
Warning: The ProXR controller will appear to lock up if the Test Cycle
value is set greater than the total number of available relay banks.
Rest assured, the controller has NOT locked up, it is testing extended
banks. Leave the controller on for several seconds and the heartbeat
LED will begin flashing.
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(146)
'Set the Test Cycle Value
MSComm1.Output = Chr$(4)
'Controller Tests 4 Banks of 8 Relays (32 Relays)
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Reading the Test Cycle Value
This command reports back a value from 0 to 32, indicating how many
relays are tested when the controller is powered up in configuration
mode (all dip switches in the off position). Note that this number is
always set by the user. By default, this command return a value of 4.
You can gain a performance increase by reducing the Test Cycle
Banks value. See Above: Setting the Test Cycle Banks Value
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(145)
'Read the Attached Banks Value
This Command Reports Back a Value of 0 to 32, Indicating the Number of Relay Banks Tested
when the ProXR Series controller is in configuration mode. By default, this command will report
back 4.

Restoring Factory Default Settings
This command operates in configuration mode only (all dip switches in
the off position). This command restores many internal parameters to
the factory default settings. See below for a detailed list:
E3C Device Number is Set to 0
Auto Refresh is Activated
Default Timing is Set to 26,576
Relay Command Repetitions is Set to 1
Character Delay is Set to 35
Reporting Mode is Turned On
Attached Relay Banks is Set to 32
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(50)
'Timer and Setup Commands
MSComm1.Output = Chr$(144)
'Restore Factory Default Settings
When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Command Set Conclusion
This concludes the user command set for the ProXR series controllers.
The processor core is 97% full of code. This is our largest relay control
core we have ever developed. Should you discover any bugs, please
do not hesitate to contact Ryan Sheldon ryan@controlanything.com.

The ProXR Graphical User Interface (GUI)
Installing and Running the ProXR Software
For your convenience, we have developed software that will test all the
functions the ProXR series controllers have to offer. This application is
available for free download from our web site at
www.controlanything.com. This program was developed using Visual
Basic 6 Professional on a Windows XP Professional computer. The
compatibility with XP Home and other versions of Windows have NOT
been tested. If you experience installation problems, please be aware
that we may not be able to help. The installation is created by Visual
Basic, we did not develop the install program. It should also be stated
that the GUI is NOT required to use ProXR series controllers. While it
is convenient and can help you change controller settings and configurations quickly, it is in no way critical to the operation of a ProXR controller. Keep in mind, ProXR controllers are simple devices that simply
wait for your commands. ProXR controllers do not care what is generating the commands, only that the data is valid. We have fully documented the command set to this point. Weather you choose to use our
GUI or develop your own, we have provided all the necessary information for you to get started. The next few pages will document our GUI
to help get you better acquainted.
Select a Relay Bank to Control using this Slider, All Relay Control
Commands will be Directed to the Selected Relay Bank. Setting this
Slider to 0 will send your relay control commands to ALL Relay Banks.

Read the Status of All Relays. Status
will be Displayed in the Current Relay
Bank Memory section.

Set the Status of Individual relays
using these buttons. Keep in mind,
Banks are used to speak to groups of
8 relays, but it is possible to send
commands to all relays as well.

The E3C Command Set allows you control up to 256
different NCD Devices on a Single Serial Port.
These commands are used to control which devices
will Respond to and ignore your commands.

Read the Status of Individual Relays
in a Selected Bank by Clicking Here.

Reporting Mode sends an ASCII Character
Code 85 Back to the PC after the Command
has Processed. We STRONGLY recommend
using Reporting Mode and 2-Way communication with ProXR Series controllers.

This window shows the status of all relays at
one time. You may need to manually
refresh this window, not all commands will
automatically update.

Some Alternate Commands for
Quickly Changing Relay Status:

Activates All Relays in the Selected Bank.
Turns All Relays in the Selected Bank Off.
Sets Relay Status in Binary Patterns
Program the E3C device number, ProXR
must be in configuration mode for this
command to work.

This program automatically determines the
communication baud rate when the controller
is properly connected to a serial port. You
can manually change baud rates at any time.

Manual and Automatic Refreshing are very
powerful commands. Turn off automatic
refreshing, use all the regular relay control
commands to alter the memory of the
ProXR controller. The relays will NOT
responds when automatic refreshing is off.
Once you have set the status of all memory
banks, you can manually refresh the relays.
This allows you to easily control the status
of all relays at one time.

These commands allow you to activate/
deactivate relays using their numeric value
instead of using the Bank and Relay numbering system. Relays are address by values
from 0 to 255 instead.

This Button Reads Device Identification Data
from the Controller, this is a new feature that
will be supported in all products we manufacture from 2006 onward.

Just in case things go wrong...see
if this command will make them
right again...

See page 21.

See page 22.

See page 24.

See page 23.

The ProXR Graphical User Interface (GUI)
Sending Commands Directly to a Relay Bank
The commands on this window are used to address a specific relay
bank. They may not look different than some of the other commands
you have seen, but there is a distinctive difference in how they communicated relay control data to the controller.
Up until this point, you would use a separate command to specify a
relay bank. All subsequent relay control commands will be directed to
the bank. This method separates “Bank Specification” and relay control
commands from each other. Meaning you use a command to specify a
relay bank, you use another command for relay control.
The commands in this GUI specify a relay bank as part of the command. These commands should be considered more reliable because
they will function properly if the controller has been power cycled. But
they are slightly slower to process. Each command below transmits the
Bank as a part of the command, ensuring commands are always directed to the correct relay.

Unlike the Bank Selector on the Previous page, this slider does
NOT send any data to the controller. Instead, every button on
this page reads this slider and sends out the slider setting as part
of the command structure. This is slightly slower, but there is no
chance of accidentally activating the wrong relay because of a
power failure to the ProXR controller.

The ProXR Graphical User Interface (GUI)
Timer Commands
This GUI demonstrates the powerful timing commands the ProXR series controllers have to offer. The ProXR series controllers have 16
timers, ideal for watchdog, keep alive, and server reboot timing applications. ProXR controllers are also an ideal choice for duration timing
applications, such as activating a light for 8 hours, or watering a lawn
for 30 minutes. Additional timer commands allow you to monitor the
current time remaining on each of the 16 timers, as well as halt/start
timers in any order. The commands on this GUI have been enhanced
with three white boxes that allow you to see what commands are actually being sent to the controller.

See the data sent to the ProXR Controller in this box.
Step 1: Choose a Timer, there are 16 Available
Step 2: How Many Hours till Timer Expires
Step 3: How Many Minutes till Timer Expires
Step 4: How Many Seconds till Timer Expires
Step 5: Which Relay will this Timer Control
Step 6: Activate the Timer as a Duration or a
Pulse Timer. Duration timers keep a relay on
throughout the time cycle. Pulse timer pulse a
relay for 1/4 of a second at the end of the time
cycle (designed for server reboot applications).

You can calibrate the accuracy of the timer with
this button. See page 23 for more details.

These commands do the exact same thing as
above, except they are used to store the timer
setup information ONLY. Timers are NOT
automatically triggered when these commands
are used.

This interface allows you to Start or Halt ANY of
the timers at any time. This is ideal if you want to
cancel a timer event. Click the check boxes for
the timers you would like active...all others will be
halted. Then click the “Trigger/Halt Selected
Timers” button.

See the data sent to the ProXR Controller in this box.
You can Query any of the 16 timers to see how
much time is remaining. The sliders will be
adjusted every time this button is pushed when
an active timer is queried.

The ProXR Graphical User Interface (GUI)
Advanced Timer Calibration Features Test
This GUI serves the purpose of demonstrating how the timers can be
used in watchdog, keep alive, and server reboot timing applications.
These commands are self explanatory for the most part.

Assigns 16 Timers to 16 Relays...watch
them count down 1 second at a time….
Demonstrates how the controller is capable of handling
timing and RS-232 commands at the same time.

Follow these instructions to demonstrate the implementation of a simple Keep Alive timer.

A Server Reboot Timer is very useful for protecting
against computer crashes.

Use these controls to calibrate the timing of the
controller. This is very useful if you plan to do a lot of
serial communications along with background timers.

Several tools are provided to help you calibrate the
timer for best possible accuracy.

The ProXR Graphical User Interface (GUI)
Advanced Configuration Features
We have provided lots of notes directly on the Advanced Features Configuration screen. The ProXR controller should be in configuration
mode (all dip switches in the off position) before these setting will be
stored permanently in non-volatile EEPROM. Some settings can be
changed during regular runtime operation, but they will not be stored.
Please see the notes below for each of the different controls.

Electrical Ratings and Switching Characteristics
Model
1A DPDT

Ratings

Relay Type

Notes

3A 120VAC / 3A 20VDC

DPDT

3A 250VAC / 3A 30VDC

DPDT

DPDT: Two Switches per Relay
Not for use with Inductive Loads
DPDT: Two Switches per Relay

3A DPDT
5A DPDT
5A SPDT

5A 250VAC / 5A 30VDC

DPDT

DPDT: Two Switches per Relay

10A 250VAC / 5A 100VDC

SPDT

Relay Ratings for this Model are Absolute Maximum, Not for Sustained Constant
Use. Divide all ratings by 2 for Constant Operation

10A SPDT
20A SPDT

10A 250VAC / 8A 30VDC

SPDT

20A 240VAC / 20A 28VDC

SPDT

30A SPST

30A 250VAC / 20A 28VDC

SPST

Common to Normally Closed Terminal is rated at 10A 240VAC / 10A 28VDC
Flange Type Connections to Relay
SPST: Common and Normally Open Terminals Only
Flange Type Connections to Relay

All ratings above are for Resistive Loads. Divide current switching capabilities by 2 for Inductive Loads. Inductive loads not recommended for 1A DPDT relay controller models.

Relay Types
SPST

Single Pole Single Throw: This relay is the most basic type of switch available. SPST relays have only two connections. Typically,
an SPST relay shorts these two connections together when the relay is activated. When the relay is OFF, this connections return to
their original OFF state (disconnected).

SPDT

Single Pole Double Throw: This is the most popular type of relay used in our relay controller designs. Each relay consists of a Normally Open (NO), Normally Closed (NC), and a Common (COM). When the relay is OFF, NC and COM are connected together.
When the relay is turned ON, NC is disconnected from COM and NO and COM are connected together.

DPDT

Same as SPDT above, but there are two of these switches in a single relay that are activated/deactivated at the same time.

Characteristics Data

Minimum

Maximum

Relay Activation Time

>5 ms

<15 ms

Relay Deactivation Time

>5 ms

<20 ms

Activations per Second at 9600 Baud using “ProXR” Command Set

N/A

480

Activations per Second at 115.2K Baud using “ProXR” Command Set (Bank Pre-Selected)

N/A

5760

Activations per Second at 115.2K Baud using “ProXR” Command Set (Bank Specified)

N/A

3840

Communication Distance from PC Without Boosting Signal 1200 Baud*

N/A

Aprox. 2000 Feet

Communication Distance from PC Without Boosting Signal 2400 Baud*

N/A

Aprox. 1200 Feet

Communication Distance from PC Without Boosting Signal 9600 Baud*

N/A

Aprox. 600 Feet

Communication Distance from PC Without Boosting Signal 19.2K Baud*

N/A

Aprox. 200 Feet

Communication Distance from PC Without Boosting Signal 115.2K Baud*

N/A

Aprox. 10 Feet

Maximum Allowed Activation Time per Relay (Relay Held in On State)

N/A

Unlimited

Expected Operational Life, Non-DPDT Models

>10,000,000 Cycles

N/A

Expected Operational Life, DPDT Models

>2,000,000 Cycles

N/A

N/A

1,800

Typical Operational Cycles Per Minute

* assumes good quality low-capacitive wire, twisted pair preferred. Note that distances are estimated. Typically, longer distances are easily achieved.

Connecting 1-Amp DPDT Relays (White Relays)
Connector Pinouts for 1-Amp DPDT Series Controllers
Any time you see one of our relay controllers with a green 24-Position
terminal block and small white relays labeled AXICOM on the board,
you can assume the wiring connections shown to the right will always
apply. Always view the connector from the angle shown in the picture
to the right. This will ensure connections are consistently made to 1A
DPDT series controllers.
A DPDT relay has two separate switches inside each relay. These
switches are labeled Switch A and Switch B in the diagram at right.
Switches A and B are completely separated from each other, there is
no electrical connection between these switches. When a DPDT relay
is activated, both switches A and B “activate” or more appropriately
change position at the same time. In the diagram at right,
each connection is labeled NO, NC and COM.
Switch

Relay
NO

NC

Relay
COM

NO

NC

Relay
COM

NO

NC

Relay
COM

NO

NC

COM

A

NO

NC

COM

NO

NC

COM

NO

NC

COM

NO

NC

COM

Switch B

COM:

Common
This terminal is connected to NC when relay is off.
This terminal swings over to NO when the relay is on.

NO:

Normally Open
This terminal has no connection with the relay is off.
This terminal is connected to COM when the relay is on.

NC:

Normally Close
This terminal is connected to COM when the relay is off.
This terminal has no connection with the relay is on.

Connecting 3-Amp/5-Amp DPDT Relays (Black Relays)
Connector Pinouts for 3-Amp and 5-Amp DPDT Series Controllers
Any time you see one of our relay controllers with a green 24-Position
terminal block and black relays on the board, you can assume the wiring connections shown to the right will always apply. Always view the
connector from the angle shown in the picture to the right. This will
ensure connections are consistently made to 3A and 5A DPDT series
controllers.
A DPDT relay has two separate switches inside each relay. These
switches are labeled Switch A and Switch B in the diagram at right.
Switches A and B are completely separated from each other, there is
no electrical connection between these switches. When a DPDT relay
is activated, both switches A and B “activate” or more appropriately change position at the same time. In the diagram at Switch
right, each connection is labeled NO, NC and COM.

Relay
NO

COM

Switch B
Common
This terminal is connected to NC when relay is off.
This terminal swings over to NO when the relay is on.

NO:

Normally Open
This terminal has no connection with the relay is off.
This terminal is connected to COM when the relay is on.

NC:

Normally Close
This terminal is connected to COM when the relay is off.
This terminal has no connection with the relay is on.

NC

NO

COM

Relay
NC

NO

COM

Relay
NC

NO

COM

NC

A

NO

COM:

Relay

COM

NC

NO

COM

NC

NO

COM

NC

NO

COM

NC

Connecting 5-Amp/10-Amp SPDT Relays
Connector Pinouts for 5-Amp / 10-Amp SPDT Series Controllers
Any time you see one of our relay controllers with blue 12-Position
terminal blocks, you can assume the wiring connections shown to the
right will always apply. Always view the connector from the angle
shown in the picture to the right. This will ensure connections are consistently made to 5 and 10-Amp SPDT series controllers.

Relay

A SPDT relay has one switch inside each relay. When a SPDT relay is
activated, the switch changes position. In the diagram at right, each
connection is labeled NO, NC and COM. Please see the comments
below to better understand how connections are made.
COM:

Common
This terminal is connected to NC when relay is off.
This terminal swings over to NO when the relay is on.

NO:

Normally Open
This terminal has no connection with the relay is off.
This terminal is connected to COM when the relay is on.

NC:

Normally Close
This terminal is connected to COM when the relay is off.
This terminal has no connection with the relay is on.

NO

COM

Relay

NC

NO

COM

Relay

NC

NO

COM

Relay

NC

NO

COM

NC

Connecting O.C. Outputs to External Devices
Connecting Open-Collector Outputs
WARNING: DO NOT CONNECT OC OUTPUTS WHILE POWER IS
APPLIED TO THE CONTROLLER. THIS WILL DAMAGE THE OUTPUT DRIVER CHIP.
Any time you see one of our ProXR Series relay controllers with blue
terminal blocks (8 or 16-Position), you can assume the wiring connections shown to the right will always apply. Always view the connector
from the angle shown in the picture to the right. This will ensure connections are consistently made to the OC Outputs.
Open Collector outputs are ideal for adding external relays, small lights,
LEDs, and other small loads under 150ma at 12VDC. OC outputs work
by connecting an external device to ground. For instance, to connect
an external relay to an open collector output, you will connect one of
the two power leads directly to the OC output. The other relay power
lead should be connected to a power supply. The ground of the power
supply should be shared with the Ground leads on the OC output.
When the OC output is activated, the relay will activate by making a
connection between the relay and ground. A voltage should always be
present on the relay (except during connection).

EXTERNAL
RELAY
-

+

EXTERNAL
POWER
SUPPLY
+

-

Repeat the circuit as shown above for every pair of outputs. On
some controllers, the two sets 8-position blue terminal blocks are
together, forming a single blue 16-position terminal block. Connections are the same for these controllers. Don’t forget, this circuit will share the grounds of your external power supply with the
ground and RS232 ground of the controller. NEVER CONNECT
EXTERNAL DEVICES WHILE THE CONTROLLER IS POWERED UP.

Last Minute Notes
Part Numbers:
R165OC16LP
R1610OC16LP
R325PROXR
R3210PROXR
Revision A boards have an error in the silk screen. A small diagram is shown on the board indicating relay connections. While
the diagram is correct, the Labeling of NC and NO connections is
backwards. Revision B boards are in production that correct this
silk screen error.
Troubleshooting Considerations
If you experience any problems with a relay bank shutting down (all 8
relays turning off) when a relay is activated, please consult the section
of this manual on EMI (page 18). Chances are good that the problem is
caused because the load is too inductive for our controller, though page
18 may offer a solution. We are planning to develop an EMI edition of
some controllers that is designed to handle highly inductive loads.
As of 12/21/2005, there are no known Version 17 firmware bugs. If you
discover any problems with this device, please contact us.

ProXR Series Command Set
Command
254, 0
254, 1
254, 2
254, 3
254,4
254, 5
254, 6
254, 7
254, 8
254, 9
254, 10
254, 11
254, 12
254, 13
254, 14
254, 15
254, 16
254, 17
254, 18
254, 19
254, 20
254, 21
254, 22
254, 23
254, 24
254, 25
254, 26
254, 27
254, 28
254, 29
254, 30
254, 31
254, 32
254, 33
254, 34
254, 35
254, 36
254, 37
254, 40
254, 41
254, 42
254, 43
254, 46
254, 47
254, 48
254, 49
254, 50

254, 50

254, 50

254, 50

254, 50, 130

Parameters

Relay(0-255)
Bank(0-32)
Bank(0-32)
Relay(0-255)
Relay(0-255)
Relay(0-255)
Bank(0-32)
Timer(50-66)
Hour(0-255)
Minute(0-255)
Second(0-255)
Relay (0-255)
Timer(70-86)
Hour(0-255)
Minute(0-255)
Second(0-255)
Relay (0-255)
Timer(90-106)
Hour(0-255)
Minute(0-255)
Second(0-255)
Relay (0-255)
Timer(110-126)
Hour(0-255)
Minute(0-255)
Second(0-255)
Relay (0-255)
Timer(1-16)

Command Decription
Relay 0 Off
Relay 1 Off
Relay 2 Off
Relay 3 Off
Relay 4 Off
Relay 5 Off
Relay 6 Off
Relay 7 Off
Relay 0 On
Relay 1 On
Relay 2 On
Relay 3 On
Relay 4 On
Relay 5 On
Relay 6 On
Relay 7 On
Report Relay 0 Status
Report Relay 1 Status
Report Relay 2 Status
Report Relay 3 Status
Report Relay 4 Status
Report Relay 5 Status
Report Relay 6 Status
Report Relay 7 Status
Reports Status of Relay Bank
Turns On Automatic Relay Refreshing
Turns Off Automatic Relay Refreshing
Turns On Reporting Mode (Setting Stored)
Turns Off Reporting Mode (Setting Stored)
Turn Off All Relays
Turn On All Relays
Inverts All Relays in Bank
Reversed Order of Relays in Bank
Test 2-Way Communication
Sends Currently Selected Relay Bank
Store Relay Automatic Refresh Setting
Reports the Automatic Refresh Setting
Manually Refresh All Relay Banks
Set Status of All Relays at One Time
No Function
Store Startup Status of Relays in Selected Bank
Recall Startup Status of Relays in Selected Bank
Turn On One Relay ONLY, Safe Break Before Make
Turn Off a Relay Specified by its Relay Number
Turn On a Relay Specified by its Relay Number
Sets the Current Relay Banks Commands are Directed To
Choose a Duration Timer (16 Timers Available)
Relay Will Stay Active for Selected Hours
Relay Will Stay Active for Selected Minutes
Relay Will Stay Active for Selected Seconds
Assign a Relay to This Timer
Choose a Pulse Timer (16 Timers Available)
Relay Will At the End of Selected Hours
Relay Will At the End of Selected Minutes
Relay Will At the End of Selected Seconds
Assign a Relay to This Timer
Choose a Duration Timer (Timer Activated Using Different Command)
Relay Will Stay Active for Selected Hours
Relay Will Stay Active for Selected Minutes
Relay Will Stay Active for Selected Seconds
Assign a Relay to This Timer
Choose a Pulse Timer (Timer Activated Using Different Command)
Relay Will At the End of Selected Hours
Relay Will At the End of Selected Minutes
Relay Will At the End of Selected Seconds
Assign a Relay to This Timer
Query Selected Timer
Device Returns Current Hour of Timer
Device Returns Current Minute of Timer
Device Returns Current Second of Timer
Device Returns Relay Number that is Assigned to Selected Timer

www.controlanything.com
Returned Data
85
85
85
85
85
85
85
85
85
85
85
85
85
85
85
85
0-1
0-1
0-1
0-1
0-1
0-1
0-1
0-1
0-255**
85
85
85
85
85
85
85
85
85
0-32
85
0-1
85
85
85
85
0-255**
85
85
85
85

85

85

85

85
Hour(0-255)
Minute(0-255)
Sedond(0-255)
Relay(0-255)

254, 50, 131
254, 50, 132

TimeLSB(0-255)
TimeMSB(0-255)
CalibrateLSB(0-255)
CalibrateMSB(0-255)

254, 50, 133

254, 50, 134

254, 50, 135
254, 50, 136
254, 50, 137
254, 50, 138
254, 50, 139
254, 50, 140
254, 50, 141
254, 50, 144
254, 50, 145
254, 50, 146
254, 50, 147
254, 100
254, 101
254, 102
254, 103
254, 104
254, 105
254, 106
254, 107
254, 108
254, 109
254, 110
254, 111
254, 112
254, 113
254, 114
254, 115
254, 116
254, 117
254, 118
254, 119
254, 120
254, 121
254, 122
254, 123
254, 124
254, 129
254, 130
254, 131
254, 132
254, 140
254, 142
254, 143
254, 246

254, 247
254, 248
254, 249
254, 250
254, 251
254, 252
254, 253
254, 255

REPS(1-255)
CDEL(3-255)
ATBanks(1-255)

TCycle(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Bank(0-32)
Relay(0-255)
Bank(0-32)
Bank(0-32)
Bank(0-32)

Device(0-255)
Device(0-255)
Device(0-255)
Device(0-255)
Device(0-255)

Manually Activate/Halt Selected Timers (Least Sig. Byte)
Manually Activate/Halt Selected Timers (Most Sig. Byte)
Sets the LSB Calibration of the Timer (Stores in Config. Mode Only)
Sets the MSB Calibration of the Timer (Stores in Config. Mode Only)
Retrieves the Calibration Value of the Timer
Least Significant Bytes will be Sent First (LSB)
Most Significant Bytes will be Sent Last (MSB)
Calibrators ON, Meaure Time Between Data to Help Set Calibration
Patches In an ASCII Character Output Signifying the Start of a Timer
Patches In an ASCII Character Output Signifying the End of a Timer
Calibrators OFF, Timers Will Not Signify Start/Stop
Retrieves the Repititions Value (Fights EMI by Holding Relays On)
Stores the Repititions Value (Config. Mode Only)
Retrieves the Character Delay Value (Delay Between Bytes Sent to PC)
Stores the Character Delay (Config. Mode Only)
Retrieves the Number of Relay Banks Attached to Controller
Stores the Number of Relay Banks Attached (Config. Mode Only)
Return to Safe Factory Default Values (Config. Mode Only)
Get TestCycle Value (How Many Banks Tested in Config. Mode, 0=None)
Set TestCycle Value (works in any mode)
Attempt to Recover from a Controller that has Lost Communication
Relay 0 Off in Specified Bank
Relay 1 Off in Specified Bank
Relay 2 Off in Specified Bank
Relay 3 Off in Specified Bank
Relay 4 Off in Specified Bank
Relay 5 Off in Specified Bank
Relay 6 Off in Specified Bank
Relay 7 Off in Specified Bank
Relay 0 On in Specified Bank
Relay 1 On in Specified Bank
Relay 2 On in Specified Bank
Relay 3 On in Specified Bank
Relay 4 On in Specified Bank
Relay 5 On in Specified Bank
Relay 6 On in Specified Bank
Relay 7 On in Specified Bank
Report Relay 0 Status
Report Relay 1 Status
Report Relay 2 Status
Report Relay 3 Status
Report Relay 4 Status
Report Relay 5 Status
Report Relay 6 Status
Report Relay 7 Status
Reports Status of Relay Bank
Turn Off All Relays
Turn On All Relays
Inverts All Relays in Bank
Reversed Order of Relays in Bank
Set Status of All Relays at One Time
Store Startup Status of Relays in Selected Bank
Recall Startup Status of Relays in Selected Bank
Get Device Description Data from Controller: Ouputs Below
Device ID Part 1
Device ID Part 2
Device Year of Design
Device Firmware Version
E3C Device Number
Retrieve Stored E3C Device Number
Enable All Devices Command
Disable All Devices Command
Enable Selected Device
Disable Selected Device
Enable Selected Device ONLY, All Other Devices Disabled
Disable Selected Device ONLY, All Other Devices Enabled
Store E3C Device Number (Config Mode Only)
*Bank Value of 0 Directs Command to ALL Relay Banks
** Returns 32 Bytes of Data if Relay Bank is Set to 0
*** Subject to Change as Device is Improved
85 Values are Sent if Reporting Mode is ON
Copyright © 2006, National Control Devices www.controlanything.com

85
85
CalibrateLSB(0-255)
CalibrateMSB(0-255)
85
Start(90)
Stop(91)
85
Reps(1-255)
85
CDEL(3-255)
85
ATBanks(1-255)
85
85
TCycle(0-32)
85
88
85
85
85
85
85
85
85
85
85
85
85
85
85
85
85
85
0-1
0-1
0-1
0-1
0-1
0-1
0-1
0-1
0-255**
85
85
85
85
85
85
0-255**
1
0
205***
17***
Default is 0
E3CDevice(0-255)








ProXR Enhanced Feature Controllers Introduction
RS-232, USB, Zigbee
In February, 2007, National Control Devices has released several
new, and enhanced controllers that support the ProXR command
set as shown in this manual. These new devices share the same
command set, but also offer additional commands for increased
functionality. The February, 2007 product release includes new
RS-232 controllers with built-in A/D conversion, as well as 6 new
USB versions, as well as 6 new Zigbee versions. In addition, the
ProXR software, as downloaded from our web site, has also been
enhanced to repair some minor bugs, and add support for new
controllers that have an enhanced feature set. There are many
changes introduced by these new controllers, which will be discussed in greater detail as it applies. NCD devices that no-longer
have an RS-232 interface have been rightfully stripped of the E3C
command set (used for networking serial devices).

USB Enhancement Overview

This section of the manual covers the new features added to the
updated line of controllers. This portion of the manual ONLY covers the part numbers indicated below:

5)

RS-232 Devices
Xxxxxxxxx
Xxxxxxxxx
xxxxxxxxx

1)

2)
3)
4)

6)

7)

USB Devices
UADR220PROXR
UADR230PROXR
UADR45PROXR
UADR410PROXR
UADR85PROXR
UADR810PROXR

USB, 2-Relays, 20-Amp, 8-Channels 8/10-bit A/D
USB, 2-Relays, 30-Amp, 8-Channels 8/10-bit A/D
USB, 4-Relays, 5-Amp, 8-Channels 8/10-bit A/D
USB, 4-Relays, 10-Amp, 8-Channels 8/10-bit A/D
USB, 8-Relays, 5-Amp, 8-Channels 8/10-bit A/D
USB, 8-Relays, 10-Amp, 8-Channels 8/10-bit A/D

8)

Zigbee Devices
Xxxxxxxxxxxx
Xxxxxxxxxxxx
Xxxxxxxxxxxx
Xxxxxxxxxxxx

9)

Zigbee Enhancement Overview
1)

RS-232 Enhancement Overview
1)
2)
3)

4)

5)

6)

Baud Rate is Now Set using our ProXR software instead of using
DIP switches.
The Program/Run Jumper can Now be Changed while power is
applied to the controller, however, some parameters will not take
effect until the device is power cycled.
8-Channels of Analog to Digital Conversion has been added to the
controller, supporting 8-Bit or 10-Bit resolution. In addition, new
commands allow you to read a single channel at a time or multiple
channels at one time.
A/D converters employ a resistor network that allows you to pull all
channels up or down. This effectively keeps the input channels
quiet without any external resistors. The pull-up/pull-down feature
is jumper selectable. Removing the jumper floats the inputs with
20Kresistance between neighboring channels.
Integrated jumper-selectable temperature sensor is now integrated
into the controller. This sensor is tied to Analog Input channel 8.
User may choose to use input channel 8 or tie input channel 8 to
the temperature sensor under jumper selection. The controller
supports the Microchip 9701A temperature sensor. Complete data
sheets for the 9701A are available from www.microchip.com.
Unused relay output channels are available for control of external
relays.

Integrated FTDI USB to Serial Converter. Device mounts as a
virtual COM port, user speaks to device using the assigned COM
port. User may choose COM port assignment by changing the
driver settings in the Device Manager. Virtual COM port Drivers
are available for most operating systems currently in use, including
Windows, MAC, UNIX, and Sun.
Three USB LEDs indicate USB Connection and Data Activity.
Baud Rate is fixed at 115.2K Baud, 8 Data bits, 1 Stop bit, No
Parity.
USB Relay controllers are NOT USB Bus powered. A relay controller goes against USB Bus power specifications because of its
ability to surge power on the USB Bus; therefore, most NCD relay
controllers will not likely support USB Bus power features. An
external +12VDC supply will be required.
The Program/Run Jumper can Now be Changed while power is
applied to the controller, however, some parameters will not take
effect until the device is power cycled.
8-Channels of Analog to Digital Conversion has been added to the
controller, supporting 8-Bit or 10-Bit resolution. In addition, new
commands allow you to read a single channel at a time or multiple
channels at one time.
A/D converters employ a resistor network that allows you to pull all
channels up or down. This effectively keeps the input channels
quiet without any external resistors. The pull-up/pull-down feature
is jumper selectable. Removing the jumper floats the inputs with
20Kresistance between neighboring channels.
Integrated jumper-selectable temperature sensor is now integrated
into the controller. This sensor is tied to Analog Input channel 8.
User may choose to use input channel 8 or tie input channel 8 to
the temperature sensor under jumper selection. The controller
supports the Microchip 9701A temperature sensor. Complete data
sheets for the 9701A are available from www.microchip.com.
Unused relay output channels are available for control of external
relays.

2)

3)
4)

5)

6)

7)

Complete support for Zigbee protocol using Maxstream Zigbee
interface modules. Zigbee is essentially a wireless 2-way serial
port protocol, allowing you to speak to a device wirelessly as
though it were physically attached to the serial port of your computer.
Baud Rate to Zigbee modem is user-programmable. A Zigbee
modem if required to communicate to our relay controller. Zigbee
modems connect to the USB port of your computer and are USB
Bus powered.
The Program/Run Jumper can Now be Changed while power is
applied to the controller, however, some parameters will not take
effect until the device is power cycled.
8-Channels of Analog to Digital Conversion has been added to the
controller, supporting 8-Bit or 10-Bit resolution. In addition, new
commands allow you to read a single channel at a time or multiple
channels at one time.
A/D converters employ a resistor network that allows you to pull all
channels up or down. This effectively keeps the input channels
quiet without any external resistors. The pull-up/pull-down feature
is jumper selectable. Removing the jumper floats the inputs with
20Kresistance between neighboring channels.
Integrated jumper-selectable temperature sensor is now integrated
into the controller. This sensor is tied to Analog Input channel 8.
User may choose to use input channel 8 or tie input channel 8 to
the temperature sensor under jumper selection. The controller
supports the Microchip 9701A temperature sensor. Complete data
sheets for the 9701A are available from www.microchip.com.
Unused relay output channels are available for control of external
relays.

Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

USB and Zigbee Device Communications
STOP: Before Connecting USB Devices or Zigbee modems to your
computer, you should start by installing the latest FTDI USB drivers on your computer. Installing the drivers before connecting the
hardware will make setup easier. Click Here for Latest Drivers
Talking to USB and Zigbee devices is just like talking to a RS-232 device. When a USB device is plugged into the USB port of your computer, the USB device will be assigned a COM port. Your software
simply speaks to the USB device as though it were a real COM port.
This offers optimum flexibility in terms of software and hardware compatibility. Zigbee devices work exactly the same way, they mount as a
COM port and you speak to the device as though it were a real serial
device attached to your computer. USB devices emulate a COM port.
Zigbee devices emulate a wireless serial port. Communication to USB
devices is fixed at 115.2K baud. Communicating to a wireless Zigbee
device requires a Zigbee modem. You can configure the Zigbee modem baud rate and other parameters using X-CTU, available for free
download by clicking here.
If the Zigbee modem or USB device does not mount as the desired
COM port, you may change the COM assignment using the Device
Manager as part of the System Control Panel on your Windows system.
USB and Zigbee devices differ from RS-232 devices in that they do not
have a E3C command set, used for networking RS-232 devices. In
addition, USB devices only speak at 115.2K baud.

Developing Software for Serial Communications
Despite the connectivity you have chosen (RS-232, USB, or Zigbee),
the easiest way to speak to NCD devices is to make use of serial communications. Serial communications is supported by nearly all programming languages, and it is very easy to send simple commands to
NCD devices using any language you may require.
We suggest the following resources to help get you started:
Page 8 of this manual explains how data should be formatted as it pertains to speaking to NCD devices.
Visual Basic 4, 5, 6
We have also posted a Visual Basic 6 tutorial in the “Developers Toolbox” section of our web site. This tutorial is available by clicking here.
This same tutorial can be also be downloaded along with a .NET tutorial in the Universal Device Manual available from our web site by clicking here.
.NET Express
You can also use Visual Basic Express to speak to NCD devices. VB
Express is free from Microsoft. At the time of writing, Microsoft offers a
free download by clicking here. Click the large camouflaged “Download
Now” button on the right side of the screen.
We have also posted a tutorial for using .NET Express in the Universal
Device Manual, available from our web site by clicking here.

Your computer can speak to a Zigbee modem at any baud rate. Zigbee
modems communicate with each other at 115.2K baud. Remote Zigbee devices communicate with the on-board Zigbee transceiver at
115.2K baud. For best performance, your computer should speak to
the Zigbee modem at 115.2K baud.

Networking Zigbee Devices:
It is possible to speak to many Zigbee devices within a local area.
Each Zigbee device is hard coded with a device ID number. The device ID number is printed on the bottom side of the Zigbee module.
This Zigbee module can be easily removed. You can also query all
Zigbee modules to determine all device ID numbers within range. The
Zigbee protocol is extensive, and will not be covered in any NCD documentation. Instead, we will focus our documentation on sending commands to remote devices that support the Zigbee protocol. In other
words, we will show you how to talk to our devices for controlling relays
and reading data. If you wish to learn about the extensive features of
the Zigbee protocol (also known as 802.15.4), this documentation can
be downloaded from the MaxStream web site by clicking here. We
highly suggest reading this documentation as it has more information
on speaking to several different Zigbee devices and hopping commands across wireless networks.
To this point, we have focused heavily on USB / Zigbee communications as it focuses on RS-232 emulation. From this point forward, it
should be very easy to speak to devices. Both USB and Zigbee modules offer 100% emulation of a COM port and offer a completely transparent communication layer. We have chosen these communication
methods because we believe they offer the best compatibility and
quickest implementation time.

Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

ProXR Enhanced RS-232
A: Relay Connections:
3 Per Relay

Q: Relay Number Labels

P: SERPAC Enclosure Form factor

B: Relay Connection
Labels: NC COM NO
C:Relays

D: LED Status Lights

O: ProXR Enhanced CPU
N: RS-232 Transceiver

E: Relay Driver
M: RS-232 / OC232 Jumper
F: XR Expansion Port

L: Program / Run Jumper
When using the quick start
kit, keep in mind, it will NOT
fit inside the enclosure, but
it will help you get started.

G: Analog Input Channels: Do Not Exceed +5VDC on Inputs
H: 10K Pull-Up / Pull-Down Jumper

RS-232 Enhancements

In February, 2007, NCD released a number of ProXR enhanced controllers. These
new ProXR controllers are available with an optional enclosure, which accounts for the
unusual shape of the circuit board. There are many versions of the ProXR series that
have enhanced features. The above map explains the updated layout.
A: There are 3 terminals per relay: NC (Normally Closed), COM (Common), and NO
(Normally Open). Then the relay is OFF, Common is connected to Normally Closed.
When the relay is ON, Common is connected to the Normally Open. Relay activation
time is approximately 5ms. Relay deactivation takes approximately 10ms.
B: The circuit board on the model shown is labeled with NC, COM, and NO. Some
models of relay have contacts directly on the top side of the relay. In this case, the
PCB will not be labeled with NC, COM, or NO. Instead, look carefully near the contacts
of the relay, the relay connections are labeled directly on the relay near the contacts.
C: The relays shown above are 5-Amp SPDT. We offer relay in 1-Amp, 3-Amp, 5-Amp,
10-Amp, 20-Amp, 30-Amp, SPST, SPDT, and DPDT varieties.
D: LED status lights. When powered, the first LED is lit (far right in the photo, bottom
LED on other models). One LED is assigned to each relay in the same order as the
relays are shown above. The second LED from the left will light when a command is in
process.
E: Latch driver chip activates the relays by connecting them to ground under computer
control.
F: XR Expansion port allows this controller to speak to a total 256 relays using expansion relay boards.
G: Analog Inputs allow this controller to read 8 different voltage levels or contact closures. Input voltage is between 0 and +5VDC. Do not exceed this voltage rating or
damage to the CPU will result.
H: Pull Up / Pull Down Resistors keep the analog inputs from floating. When the
jumper is installed in the UP position, each of the analog inputs is connected to +5VDC
through a 10K resistor. When the jumper is installed in the DOWN position, each of the
analog inputs is connected to Ground through a 10K resistor. When this jumper is
removed, the analog inputs “Float” (not recommended for most applications).
Neighboring inputs are connected to each other with a total of 20K resistance between
immediate neighboring inputs.

J: Temperature Sensor

K: Power/Data Connector

I: AD8 / Temperature Senor Select Jumper
I: Analog Input #8 can be connected to an external source when this jumper is set to
the Input position. When set to Temp Sensor position, this input is no-longer available
to the user. Instead, input channel #8 is connected to a internal MCP9701A temperate
sensor.
J: MCP9701A temperature sensor. This sensor delivers a analog voltage in proportion
to temperature. This voltage can be read by input channel #8 when the AD8 jumper is
set to the Temp Sensor position. Current software does not convert the analog value to
a actual temperature.
Please consult the MCP9701A data sheet from
www.microchip.com for complete details on converting the voltage to a temperature.
K: Power Data Connector. This is the RS-232 interface and Power connections for the
controller. +12VDC at 100ma is required for “standby” with no relays activated. Allow
up to 100ma for each relay that is activated. The Power Supply Ground on the controller is shared with the RS-232 Ground. The IN refers to the RS-232 input, this connection ties to the RS-232 output of your computer. The OUT refers to the RS-232 output.
This connection ties to the RS-232 input on your computer. See page 5 of this manual
for complete details on RS-232 connection of this controller.
L: The Program/Run jumper determines if the controller is in Program mode (which
allows you to make configuration changes via ProXR software, such as baud rate and
timing parameters), or Run mode, which write-protects the on-board memory and
should be used for normal daily operation. Program mode operates at a fixed baud
rate of 38.4K baud. The baud rate for Runtime mode is user programmed while in
Program mode. Runtime mode supports several different baud rates, please run the
ProXR software to configure the Runtime baud rate.
M: RS-232 / OC-232 Data Output formal select jumper. When connecting one device
to a computer, use the RS-232 mode. When connecting several devices to a computer
using the RSB serial booster, set the jumper to OC-232 mode. See page 7 for details.
N: This chip converts CPU data to RS-232 voltage levels.
O: NCD Customized PIC16F690 CPU running at 20 MHz.
P: PCB Outline Compatible with SERPAC SR171 series enclosures.
Q: Relay number identification labels, R1 through R8. One assigned to each relay.

Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

ProXR Enhanced RS-232
A: Relay Connections:
3 Per Relay

B: Relay Connection
Labels: NC COM NO

Q: Relay Number Labels

P: SERPAC Enclosure Form factor

J: Temperature Sensor

C:Relays
F: XR Expansion Port

K: Power/Data Connector

R: OC Outputs

D: LED Status Lights

O: ProXR Enhanced CPU
N: RS-232 Transceiver

E: Relay Driver

M: RS-232 / OC232 Jumper

L: Program / Run Jumper

H: 10K Pull-Up / Pull-Down Jumper
G: Analog Input Channels: Do Not Exceed +5VDC on Inputs
I: AD8 / Temperature Senor Select Jumper

Small Embossed Marks in the indicated Locations Mark NC, COM, and NO

When using the quick start
kit, keep in mind, it will NOT
fit inside the enclosure, but
it will help you get started.

R: OC Outputs

R: This controller has spare OC outputs. These outputs can be used to drive external relays up to 24VDC at 150ma per relay. To use the output, you will need to connect a external power supply to your relays, providing a positive voltage into the coil of the external relay. The GND connection on this board should be connected to the GROUND of your
external power supply. Each of the spare OC outputs should be connected to the other remaining terminal on the external relay coil. This controller activates external relays by
connecting the relay coil to ground under computer control. ALL POWER SUPPLIES MUST BE POWERED DOWN WHILE MAKING CONNECTIONS. FAILURE TO FOLLOW
THIS CAUTION WILL DAMAGE THE DRIVER CHIP.
Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

ProXR Enhanced RS-232
XR Expansion Port allows you to add relays as your needs grow.

Power / Data Connections are Detailed on Page 5 of this manul.

When using the quick start
kit, keep in mind, it will NOT
fit inside the enclosure, but
it will help you get started.
8-Channels of 8-bit / 10-bit Analog Inputs

The ADPROXR shown above has all the features of the controllers shown on the previous pages, but has no on-board relays. You may add relays at any time to this
controller using the XR expansion port. The firmware on this controller is identical to the firmware shown on the previous two pages. This controller only requires about
100ma and is compatible with the SERPAC SR151 series enclosures.

Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

ProXR Enhanced USB
A: Relay Connections:
3 Per Relay

Q: Relay Number Labels

P: SERPAC Enclosure Form factor

B: Relay Connection
Labels: NC COM NO
C:Relays

R: Power Connector
D: LED Status Lights

S: 2.1mm Power Connector
O: ProXR Enhanced CPU
J: Temperature Sensor
M: USB Type B Connector

E: Relay Driver

N: USB Transceiver
F: XR Expansion Port

K: USB Connection and
Activity LEDs

G: Analog Input Channels: Do Not Exceed +5VDC on Inputs

L: Program / Run Jumper

H: 10K Pull-Up / Pull-Down Jumper

USB Enhancements

In February, 2007, NCD released a number of ProXR enhanced controllers. These
new ProXR controllers are available with an optional enclosure, which accounts for the
unusual shape of the circuit board. There are many versions of the ProXR series that
have enhanced features. The above map explains the updated layout.
A: There are 3 terminals per relay: NC (Normally Closed), COM (Common), and NO
(Normally Open). Then the relay is OFF, Common is connected to Normally Closed.
When the relay is ON, Common is connected to the Normally Open. Relay activation
time is approximately 5ms. Relay deactivation takes approximately 10ms.
B: The circuit board on the model shown is labeled with NC, COM, and NO. Some
models of relay have contacts directly on the top side of the relay. In this case, the
PCB will not be labeled with NC, COM, or NO. Instead, look carefully near the contacts
of the relay, the relay connections are labeled directly on the relay near the contacts.
C: The relays shown above are 5-Amp SPDT. We offer relay in 1-Amp, 3-Amp, 5-Amp,
10-Amp, 20-Amp, 30-Amp, SPST, SPDT, and DPDT varieties.
D: LED status lights. When powered, the first LED is lit (far right in the photo, bottom
LED on other models). One LED is assigned to each relay in the same order as the
relays are shown above. The second LED from the left will light when a command is in
process.

I: AD8 / Temperature Senor Select Jumper
I: Analog Input #8 can be connected to an external source when this jumper is set to
the Input position. When set to Temp Sensor position, this input is no-longer available
to the user. Instead, input channel #8 is connected to a internal MCP9701A temperate
sensor.
J: MCP9701A temperature sensor. This sensor delivers a analog voltage in proportion
to temperature. This voltage can be read by input channel #8 when the AD8 jumper is
set to the Temp Sensor position. Current software does not convert the analog value to
a actual temperature.
Please consult the MCP9701A data sheet from
www.microchip.com for complete details on converting the voltage to a temperature.
K: USB Activity LEDs indicate connection to the USB port and data communications.
The LED labeled USB is lit once data has been established with the computer. The Rx
LED lights when data is received. The Tx LED lights when data is transmitted.
L: The Program/Run jumper determines if the controller is in Program mode (which
allows you to make configuration changes via ProXR software, such as baud rate and
timing parameters), or Run mode, which write-protects the on-board memory and
should be used for normal daily operation. The baud rate for the USB version of this
controller is fixed at 115.2K Baud in Configuration or Runtime mode. Baud rate cannot
be changed.
M: USB Type B Connector.

E: Latch driver chip activates the relays by connecting them to ground under computer
control.

N: This chip converts emulates a RS-232 port at 115.1K Baud and mounts the device
as a COM port on your computer.

F: XR Expansion port allows this controller to speak to a total 256 relays using expansion relay boards.

O: NCD Customized PIC16F690 CPU running at 20 MHz.

G: Analog Inputs allow this controller to read 8 different voltage levels or contact closures. Input voltage is between 0 and +5VDC. Do not exceed this voltage rating or
damage to the CPU will result.

Q: Relay number identification labels, R1 through R8. One assigned to each relay.

H: Pull Up / Pull Down Resistors keep the analog inputs from floating. When the
jumper is installed in the UP position, each of the analog inputs is connected to +5VDC
through a 10K resistor. When the jumper is installed in the DOWN position, each of the
analog inputs is connected to Ground through a 10K resistor. When this jumper is
removed, the analog inputs “Float” (not recommended for most applications).
Neighboring inputs are connected to each other with a total of 20K resistance between
immediate neighboring inputs.

S: +12VDC 1 Amp 2.1mm Center Positive power supply connection.

P: PCB Outline Compatible with SERPAC SR171 series enclosures.
R: +12VDC 1 Amp power supply connection.

You may choose to use any of the above power supply connections. We have provided two options so you may choose the one that best suits your requirements.

Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

ProXR Enhanced Zigbee
A: Relay Connections:
3 Per Relay

Q: Relay Number Labels

P: SERPAC Enclosure Form factor

B: Relay Connection
Labels: NC COM NO
C:Relays

R: Power Connector
D: LED Status Lights

S: 2.1mm Power Connector
O: ProXR Enhanced CPU

E: Relay Driver
N: Zigbee Module
F: XR Expansion Port
K: Antenna Connector
Type U.FL

G: Analog Input Channels: Do Not Exceed +5VDC on Inputs

J: Temperature Sensor

L: Program / Run Jumper

H: 10K Pull-Up / Pull-Down Jumper

Zigbee Enhancements

In February, 2007, NCD released a number of ProXR enhanced controllers. These
new ProXR controllers are available with an optional enclosure, which accounts for the
unusual shape of the circuit board. There are many versions of the ProXR series that
have enhanced features. The above map explains the updated layout.
A: There are 3 terminals per relay: NC (Normally Closed), COM (Common), and NO
(Normally Open). Then the relay is OFF, Common is connected to Normally Closed.
When the relay is ON, Common is connected to the Normally Open. Relay activation
time is approximately 5ms. Relay deactivation takes approximately 10ms.
B: The circuit board on the model shown is labeled with NC, COM, and NO. Some
models of relay have contacts directly on the top side of the relay. In this case, the
PCB will not be labeled with NC, COM, or NO. Instead, look carefully near the contacts
of the relay, the relay connections are labeled directly on the relay near the contacts.
C: The relays shown above are 5-Amp SPDT. We offer relay in 1-Amp, 3-Amp, 5-Amp,
10-Amp, 20-Amp, 30-Amp, SPST, SPDT, and DPDT varieties.
D: LED status lights. When powered, the first LED is lit (far right in the photo, bottom
LED on other models). One LED is assigned to each relay in the same order as the
relays are shown above. The second LED from the left will light when a command is in
process.
E: Latch driver chip activates the relays by connecting them to ground under computer
control.

I: AD8 / Temperature Senor Select Jumper
I: Analog Input #8 can be connected to an external source when this jumper is set to
the Input position. When set to Temp Sensor position, this input is no-longer available
to the user. Instead, input channel #8 is connected to a internal MCP9701A temperate
sensor.
J: MCP9701A temperature sensor. This sensor delivers a analog voltage in proportion
to temperature. This voltage can be read by input channel #8 when the AD8 jumper is
set to the Temp Sensor position. Current software does not convert the analog value to
a actual temperature.
Please consult the MCP9701A data sheet from
www.microchip.com for complete details on converting the voltage to a temperature.
K: Antenna Connector is compatible with type U.FL antennas and pigtail adapters.
L: The Program/Run jumper determines if the controller is in Program mode (which
allows you to make configuration changes via ProXR software, such as baud rate and
timing parameters), or Run mode, which write-protects the on-board memory and
should be used for normal daily operation. The baud rate for the USB version of this
controller is fixed at 115.2K Baud in Configuration or Runtime mode. Baud rate cannot
be changed.
N: Maxstream XBee/XBee Pro Zigbee Interface Module facilitates Wireless 2-Way
communications using the Zigbee protocol. 100% Zigbee compliant. This module may
be removed, the ID# is printed on the bottom of the module, useful when you want to
speak to a specific controller in a wireless network.
O: NCD Customized PIC16F690 CPU running at 20 MHz.

F: XR Expansion port allows this controller to speak to a total 256 relays using expansion relay boards.

P: PCB Outline Compatible with SERPAC SR171 series enclosures.

G: Analog Inputs allow this controller to read 8 different voltage levels or contact closures. Input voltage is between 0 and +5VDC. Do not exceed this voltage rating or
damage to the CPU will result.

R: +12VDC 1 Amp power supply connection.

H: Pull Up / Pull Down Resistors keep the analog inputs from floating. When the
jumper is installed in the UP position, each of the analog inputs is connected to +5VDC
through a 10K resistor. When the jumper is installed in the DOWN position, each of the
analog inputs is connected to Ground through a 10K resistor. When this jumper is
removed, the analog inputs “Float” (not recommended for most applications).
Neighboring inputs are connected to each other with a total of 20K resistance between
immediate neighboring inputs.

You may choose to use any of the above power supply connections. We have provided two options so you may choose the one that best suits your requirements.

Q: Relay number identification labels, R1 through R8. One assigned to each relay.
S: +12VDC 1 Amp 2.1mm Center Positive power supply connection.

Elements of this diagram may be useful for other devices we offer. We have not included photos of every controller we offer in this manual;
instead, we have detailed the significant variations. Our controllers contain many common elements in different combinations.

Analog to Digital Conversion Command Set

Some ProXR Series Enhanced Controllers support Analog to Digital Conversion.
Often referred to as A/D or ADC, A/D conversion is the process of converting a
voltage to a numeric value that can be read by your computer. The input channels on NCD A/D converters can support a voltage range of 0 to +5VDC. Exceeding this input voltage will damage the CPU on the ProXR controller. Regardless
of the type of interface you may be using (RS-232, USB, Zigbee), the commands
found on this page will work with ALL ProXR controllers that are equipped with 8Channels of A/D conversion.
A/D conversion is most commonly used to read sensors, such as light and temperature sensors, but can also be used to read switches, magnets, or any sensor
that provides an ON/OFF switch closure output –or– a sensor that provides a
voltage within the 0-5VDC voltage range.
NCD Enhanced controllers support 8-Bit or 10-Bit Analog to Digital Conversion. A
8-Bit A/D conversion reads a voltage from 0-5VDC and converts it to a value from
0 to 255. A 10-Bit A/D conversion reads a voltage from 0-5VDC and converts it to
a value from 0 to 1023. As you can see, a 10-Bit A/D conversion is more accurate, but it also takes longer to communicate the result to the computer because it
requires two bytes to communicate a value of 0 to 1023 whereas a 8-Bit conversion only requires one byte. Effectively, 8-Bit A/D conversion is twice as fast, but
10-Bit A/D conversion is 4x more accurate.
Keep in mind, the commands found on this page apply ONLY to NCD controllers
with 8-Channels of A/D conversion built in. These commands will not be processed by other controllers. The commands will are the same regardless of the
interface you are using (RS-232, USB, Zigbee).

254,150
254,151
254,152
254,153
254,154
254,155
254,156
254,157
254,158
254,159
254,160
254,161
254,162
254,163
254,164
254,165
254,166
254,167

Read 8-Bit A/D Channel 1 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 2 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 3 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 4 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 5 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 6 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 7 Returns 1 Byte 0-255
Read 8-Bit A/D Channel 8 Returns 1 Byte 0-255
Read 10-Bit A/D Channel 1 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 2 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 3 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 4 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 5 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 6 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 7 Returns 2 Bytes 0-1023
Read 10-Bit A/D Channel 8 Returns 2 Bytes 0-1023
Read 8-Bit A/D All Channels Returns 8 Bytes, Each 0-255
Read 10-Bit A/D All Channels Returns 16 Bytes, 2-Bytes
per Channel, 8 Channels, Valuing 0-1023 per Channel.

Here are some simple programming examples in VB:

254,150

Read Channel 1, 8-Bit

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(150) 'Read Channel 1, 8-Bit
Value = GetData
'Read Byte from the Serial Buffer
(The controller will return a single byte from 0-255 indicating the voltage on the selected input
channel)

254,158

Read Channel 1, 10-Bit

254,166

Read All Channels, 8-Bit

254,167

Read All Channels, 10-Bit

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(158) 'Read Channel 1, 10-Bit
MSB = GetData
'Read MSB Byte from the Serial Buffer
LSB = GetData
'Read MSB Byte from the Serial Buffer
Value = LSB + (MSB * 256)
'Convert Returned Data to Value from 0-1023
The controller will return two bytes indicating the voltage on the selected input channel, the first
returned value is the Most Significant Byte MSB, the second byte sent to your computer will be the
Least Significant Byte LSB. Using the formula VALUE= (LSB + (MSB * 256)), where VALUE will
equate to a numeric value from 0 to 1023. Here is a code sample:
MSComm1.Output = Chr$(254)
MSComm1.Output = Chr$(166)
Channel1 = GetData
Channel2 = GetData
Channel3 = GetData
Channel4 = GetData
Channel5 = GetData
Channel6 = GetData
Channel7 = GetData
Channel8 = GetData

'Enter Command Mode
'Read All Channels, 8-Bit
'Read Channel 1 from the Serial Buffer
'Read Channel 2 from the Serial Buffer
'Read Channel 3 from the Serial Buffer
'Read Channel 4 from the Serial Buffer
'Read Channel 5 from the Serial Buffer
'Read Channel 6 from the Serial Buffer
'Read Channel 7 from the Serial Buffer
'Read Channel 8 from the Serial Buffer

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(167) 'Read All Channels, 10-Bit
For X = 1 to 8
MSB = GetData
'Read MSB Byte from the Serial Buffer
LSB = GetData
'Read MSB Byte from the Serial Buffer
Debug.Print LSB + (MSB * 256)
'Convert and Print Returned Data to Value from 0-1023
Next X
NOTICE:
GetData shown in the code above is a Function and is NOT a VB Command. GetData calls the
code shown below, used for Reading a Byte of Data from the PC Serial Buffer:
Public Function GetData()
‘Read a Byte of Data from the Controller in VB
Do
‘Start a Continuous Loop
DoEvents
‘Service Other Windows Tasks (Very Important!!!)
Until MSComm1.InBufferCount > 0
‘Continue Loop Until a Byte of Data is Received
GetData = ASC(MSComm1.Input)
‘Read Data Byte from the Serial Port
End Function

These Command Apply ONLY to ProXR Controllers Enhanced with 8-Channels of Analog to Digital Conversion, Available with RS-232, USB,
Zigbee, Ethernet, and 802.11b Wi-Fi WLAN Interface. These commands will not be processed by the standard ProXR Series.

AD12 Series 12-Bit Analog to Digital Conversion
With ProXR Relay Control Command Set
Analog to Digital Conversion is the Process of Converting a Voltage to a Number. A low voltage yields a low number while a high voltage yields a high number. The AD12PROXR Series Controllers allow you to read up to 48 channels of Voltages. With minimal amounts of software, it is possible to control relays based on input voltages. NCD AD Converter devices are ideally suited for
interface to light and temperature sensors, as well as buttons and switches. If you are looking to read data, evaluate the results, and control relays all with a single controller, then the
AD12PROXR series is for you.

These Command Apply ONLY to ProXR Controllers Enhanced with High-Resolution Analog to Digital Conversion, Available Interface Options Include RS-232 and USB. These commands will not be processed by the standard ProXR Series.

AD12 Series 12-Bit Analog to Digital Conversion
With ProXR Relay Control Command Set
This Page Applies to the Following Part Numbers:
AD1216PROXR RS-232 16-Channel 12-Bit A/D Analog to Digital Converter + XR Expansion Port
AD1232PROXR RS-232 32-Channel 12-Bit A/D Analog to Digital Converter + XR Expansion Port
AD1248PROXR RS-232 48-Channel 12-Bit A/D Analog to Digital Converter + XR Expansion Port
UAD1216ProXR USB 16-Channel 12-Bit A/D Analog to Digital Converter + XR Expansion Port
UAD1232ProXR USB 32-Channel 12-Bit A/D Analog to Digital Converter + XR Expansion Port
UAD1248ProXR USB 48-Channel 12-Bit A/D Analog to Digital Converter + XR Expansion Port

Analog Input 12
Ground
Analog Input 13
Ground
Analog Input 14
Ground
Analog Input 15
Ground

BANK 0 (Also Called Device 0)
Analog Input 8
Ground
Analog Input 9
Ground
Analog Input 10
Ground
Analog Input 11
Ground

Analog Input 12
Ground
Analog Input 13
Ground
Analog Input 14
Ground
Analog Input 15
Ground

BANK 1 (Also Called Device 1)
Analog Input 8
Ground
Analog Input 9
Ground
Analog Input 10
Ground
Analog Input 11
Ground

Expansion
Not Used on
48-Channel
Version.

BANK 2 (Also Called Device 2)
Analog Input 12
Ground
Analog Input 13
Ground
Analog Input 14
Ground
Analog Input 15
Ground

Expandable
to 48 Channels MAX.

Analog Input 8
Ground
Analog Input 9
Ground
Analog Input 10
Ground
Analog Input 11
Ground

Expansion

Interface (USB/RS232)
Control External
Relays with the XR
Expansion Port

See Page 5
Of this
Manual for
Interface
Connection
Information

Analog Input 7
Ground
Analog Input 6
Ground
Analog Input 5
Ground
Analog Input 4
Ground

Analog Input 3
Ground
Analog Input 2
Ground
Analog Input 1
Ground
Analog Input 0
Ground

Analog Input 7
Ground
Analog Input 6
Ground
Analog Input 5
Ground
Analog Input 4
Ground

Analog Input 3
Ground
Analog Input 2
Ground
Analog Input 1
Ground
Analog Input 0
Ground

Analog Input 7
Ground
Analog Input 6
Ground
Analog Input 5
Ground
Analog Input 4
Ground

Analog Input 3
Ground
Analog Input 2
Ground
Analog Input 1
Ground
Analog Input 0
Ground

For 16 and 32
Channel
Version, use
Part Number
UAD1216 to
Add More
Inputs.

PGM/RUN Jumper
Use PGM to
Change Configuration Settings
ONLY

RS232 / OC232
Jumper. Use OC232
Only when Networking
(Page 7)

LED Status Lights:
Pull-Up/Down Jumpers: As a general rule, Analog Inputs Should Not “Float”. An input is considered “floating” when it is disconnected or not in use. Floating inputs can affect the
analog readings on other channels. We have included Pull-Up/Down jumpers that keep all inputs quiet. When installing the “Pull Inputs” jumper in the “LOW” position, all inputs are
connected to ground through a 10K resistor. When installing the “Pull Inputs” jumper in the “High” position, all inputs are connected to +5VDC through a 10K resistor. You may also
remove the “Pull Inputs” jumper to float the inputs. Remember, do NOT Exceed 0-5VDC on ANY input. Doing so will damage the controller. Also, all grounds are Shared on this device.

Introduction:
The AD1216PROXR Series Controllers allow you to read analog data into the computer. These devices are ideally suited for reading thermistors, photocells, thermocouples, or other sensor devices with voltage or resistive outputs. These controllers may also be used to read contact
closure devices such as switches and buttons.
The purpose of the AD1216PROXR series is to read analog data into a PC or embedded computer, and convert the voltage values to numeric
values that can be easily processed. The AD1216PROXR series support reading single inputs or groups of 16 inputs with a single request.
Both 8-Bit and 12-Bit resolutions are supported by this device. The data generated by the AD1216PROXR series is very easy to process:
When an input is at 0 volts, the controller will generate a numeric value of 0. When an input is at 5 volts, the controller will generate a numeric
value of 255 (8-Bit Resolution) or 4095 (12-Bit Resolution). When an input is at 2.5 Volts, the controller will generate a numeric value of 127 (8Bit Resolution) or 2047 (12-Bit Resolution).

READY: This Light is RED
when Waiting for a Command. This Light turns off
when a command is in
process.
BUSY: This Light is RED
when a command is in
process and is OFF when the
device is ready for data.

USB Status Lights:
USB: Lights when Communication is Established between PC and Controller.
RX: Lights when Data is
Received from the Computer.
TX: Lights when Data is
Transmitted to the Computer.

In addition to reading inputs, this controller fully supports the ProXR command set, allowing you to activate relays externally. This is ideal for
applications that may require a light or temperature activated switch, using your computer or microcontroller to set the threshold limits.
This device is available with an RS-232 interface (fully E3C compliant), supporting baud rates up to 115.2K Baud. This device is also available
with a USB interface at a fixed baud rate of 115.2K baud.

In addition to Multi-Channel High Resolution Analog to Digital Conversion, the
AD12 Series Controllers can be Expanded
to Control up to 256 External Relays.
The XR Expansion Port is compatible with
any Relay Controller that begins with the
part number XR.

These Command Apply ONLY to ProXR Controllers Enhanced with High-Resolution Analog to Digital Conversion, Available Interface Options Include RS-232 and USB. These commands will not be processed by the standard ProXR Series.

AD12 Series 12-Bit Analog to Digital Conversion
With ProXR Relay Control Command Set
The AD1216PROXR Series Controllers wait for a command and return data based on the command you send. Data comes back in many formats, depending on the
command that you issue to the controller. Here is a summary of the commands that can be sent to the controller. When a command is sent to the device, the device
will reply with data as shown below:

Command
Function
Response
254,192
Read 16 Channels at a Time, 8-Bit A/D Device Bank 0
Returns 16 Bytes
254,193
Read 16 Channels at a Time, 8-Bit A/D Device Bank 1
Returns 16 Bytes
254,194
Read 16 Channels at a Time, 8-Bit A/D Device Bank 2
Returns 16 Bytes
When the above commands are sent to the controller, the controller will respond with 16 bytes of data indicating analog values from 0 to
255 for each of the 16 channels. Data will be sent in the following order from left to right:
Channel 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15
254,195,Channel

Read Single Channel at a Time, 8-Bit A/D Device Bank 0

Returns 1 Byte of Analog Data

254,196
254,197
254,198

Read 16 Channels at a Time, 12-Bit A/D Device Bank 0
Read 16 Channels at a Time, 12-Bit A/D Device Bank 1
Read 16 Channels at a Time, 12-Bit A/D Device Bank 2

Returns 32 Bytes
Returns 32 Bytes
Returns 32 Bytes

When the above commands are sent to the controller, the controller will respond with 32 bytes of data indicating analog values from 0 to
255 for each of the 16 channels. Data will be sent in the following order from left to right:
Channel 0 LSB, 0 MSB, 1 LSB, 1 MSB, 2 LSB, 2 MSB, 3 LSB, 3 MSB, 4 LSB, 4 MSB, 5 LSB, 5 MSB, 6 LSB, 6 MSB, 7 LSB, 7 MSB, 8 LSB, 8
MSB, 9 LSB, 9 MSB, 10 LSB, 10 MSB, 11 LSB, 11 MSB, 12 LSB, 12 MSB, 13 LSB, 13 MSB, 14 LSB, 14 MSB, 15 LSB, 15 MSB.
254,199,Channel

Read Single Channel at a Time, 12-Bit A/D Device Bank 0

Returns 2 Bytes LSB then MSB

254,200
254,201
254,202

Read 16 Channels at a Time, 8-Bit A/D Device Bank 0 (Packet Format)
Read 16 Channels at a Time, 8-Bit A/D Device Bank 1 (Packet Format)
Read 16 Channels at a Time, 8-Bit A/D Device Bank 2 (Packet Format)

Returns 18 Bytes
Returns 18 Bytes
Returns 18 Bytes

When the above commands are sent to the controller, the controller will respond with 18 bytes of data indicating analog values from 0 to
255 for each of the 16 channels. Also included in the data structure is a Header Byte (254), and a Checksum Byte (which is the total
value of 254 + all 16 bytes of data). The checksum byte only contains the lower 8 bits of data. Data will be sent in the following order
from left to right:
Header Byte 254, Channel 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, Checksum Value
254,203,Channel

Read Single Channel at a Time, 8-Bit A/D Device Bank 1

Returns 1 Byte of Analog Data

254,204
254,205
254,206

Read 16 Channels at a Time, 12-Bit A/D Device Bank 0 (Packet Format)
Read 16 Channels at a Time, 12-Bit A/D Device Bank 1 (Packet Format)
Read 16 Channels at a Time, 12-Bit A/D Device Bank 2 (Packet Format)

Returns 34 Bytes
Returns 34 Bytes
Returns 34 Bytes

When the above commands are sent to the controller, the controller will respond with 34 bytes of data indicating analog values from 0 to
4095 for each of the 16 channels. Also included in the data structure is a Header Byte (254), and a Checksum Byte (which is the total
value of 254 + all 16 bytes of data). Data will be sent in the following order from left to right:
Header Byte 254, Channel 0 LSB, 0 MSB, 1 LSB, 1 MSB, 2 LSB, 2 MSB, 3 LSB, 3 MSB, 4 LSB, 4 MSB, 5 LSB, 5 MSB, 6 LSB, 6 MSB, 7 LSB,
7 MSB, 8 LSB, 8 MSB, 9 LSB, 9 MSB, 10 LSB, 10 MSB, 11 LSB, 11 MSB, 12 LSB, 12 MSB, 13 LSB, 13 MSB, 14 LSB, 14 MSB, 15 LSB, 15
MSB, Checksum Value.
254,207,Channel
254,208,Channel
254,209,Channel

Read Single Channel at a Time, 12-Bit A/D Device Bank 1
Read Single Channel at a Time, 8-Bit A/D Device Bank 2
Read Single Channel at a Time, 12-Bit A/D Device Bank 2

Channel = Value Between 0 and 15
LSB = Least Significant byte
MSB = Most Significant byte
Value = LSB + (MSB * 256)
Checksum = (254 + All Data) And 255

Returns 2 Bytes LSB then MSB
Returns 1 Byte of Analog Data
Returns 1 Byte of Analog Data

When data greater than 8 bits must be sent, 2 bytes are required, LSB and MSB.
The value of these two bytes is computed with back into a integer value.
Note: This formula is used to convert LSB/MSB 12 bit values to integer values 0-4095.
Note: “And” is a mathematical function supported by most programming languages

8-Bit Resolution = 5VDC Divided By 256 Steps = .01953125 Volts per Step
12-Bit Resolution = 5VDC Divided by 4096 Steps = .001220703125 Volts per Step
NOTE: Incoming Signals are degraded by approximately 100 ohms before analog to digital conversion process.

These Command Apply ONLY to ProXR Controllers Enhanced with High-Resolution Analog to Digital Conversion, Available Interface Options Include RS-232 and USB. These commands will not be processed by the standard ProXR Series.

AD12 Series 12-Bit Analog to Digital Conversion
With ProXR Relay Control Command Set
On this page, we will demonstrate a practical example for handling the incoming
data from the AD1216PROXR series controllers. The programming examples
shown on this page were written in Visual Basic 6 Professional. The “GetData”
and “GetData2” functions are used to read data from the controller. This function
is shown in greater detail at the bottom left of this page.

254,195,1

Read Channel 1, 8-Bit

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(195) 'Read Single Channel 8-Bit
MSComm1.Output = Chr$(1)
'Read Channel 1
Value = GetData
'Read Byte from the Serial Buffer
(The controller will return a single byte from 0-255 indicating the voltage on the selected input
channel)

254,199,1

Read Channel 1, 12-Bit

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(199) 'Read Single Channel 12-Bit
MSComm1.Output = Chr$(1)
'Read Channel 1
MSB = GetData
'Read MSB Byte from the Serial Buffer
LSB = GetData
'Read MSB Byte from the Serial Buffer
Value = LSB + (MSB * 256)
'Convert Returned Data to Value from 0-4095
The controller will return two bytes indicating the voltage on the selected input channel, the first
returned value is the Most Significant Byte MSB, the second byte sent to your computer will be the
Least Significant Byte LSB. Using the formula VALUE= (LSB + (MSB * 256)), where VALUE will
equate to a numeric value from 0 to 4095. Here is a code sample:

254,192

Read All 16 Channels on Bank 0, 8-Bit

MSComm1.Output = Chr$(254)
MSComm1.Output = Chr$(192)
Channel1 = GetData
Channel2 = GetData
Channel3 = GetData
…………...
Channel16 = GetData

254,196

'Enter Command Mode
'Read All 16 Channels, Bank 0, 8-Bit
'Read Channel 1 from the Serial Buffer
'Read Channel 2 from the Serial Buffer
'Read Channel 3 from the Serial Buffer

'Read Channel 16 from the Serial Buffer

Read All Channels on Bank 0, 12-Bit

MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(196) 'Read All Channels, 12-Bit
For X = 1 to 16
MSB = GetData
'Read MSB Byte from the Serial Buffer
LSB = GetData
'Read MSB Byte from the Serial Buffer
Debug.Print LSB + (MSB * 256)
'Convert and Print Returned Data to Value from 0-4095
Next X

NOTICE:
GetData shown in the code above is a Function and is NOT a VB Command. GetData calls the
code shown below, used for Reading a Byte of Data from the PC Serial Buffer:
Public Function GetData()
‘Read a Byte of Data from the Controller in VB
Do
‘Start a Continuous Loop
DoEvents
‘Service Other Windows Tasks (Very Important!!!)
Until MSComm1.InBufferCount > 0
‘Continue Loop Until a Byte of Data is Received
GetData = ASC(MSComm1.Input)
‘Read Data Byte from the Serial Port
End Function
NOTICE:
GetData2 is slightly smarter than the GetData function. This routine times out if data is not received
within 4000 counts. This value can be increased for longer timeouts.
Public Function GetData2()
GetData2 = -1
TT = 0
Do
DoEvents
TT = TT + 1
If TT > 4000 Then Exit Function
Loop Until MSComm1.InBufferCount > 0
GetData2 = Asc(MSComm1.Input)
End Function

The AD1216PROXR Series Controllers are capable of generating packetized data
to help insure error free communications. These data packets are “framed” with a
header byte and a footer checksum. When a packet is received, it is analyzed to
make sure all data bytes are valid BEFORE it is displayed or processed by the
user. If the data packet is invalid, a new data packet will be gathered from the
controller. Here is a example the processes a data packet from the controller:
The following code sets up a buffer array and a label to restart the routine
Dim Buffer(32) As Integer
Restart:
The following code requests data from the controller (16-Channels 12-Bit):
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(204)
'Read 16-Channel 12-Bit with Packets
The following code gathers data from the controller:
CKSUM = GetData2
'Get LSB from Controller
If CKSum <> 254 then Restart
'Make Sure Header is Received and stored as Checksum
For Channel = 0 To 15
'Count Through All 16 Channels
LSB = GetData2
'Get LSB from Controller
MSB = GetData2
'Get MSB from Controller
If MSB <> -1 And LSB <> -1 Then
'If Data Does Not timeout
Buffer((Channel * 2)) = LSB
'Store LSB
Buffer((Channel * 2) + 1) = MSB
'Store MSB
CKSUM = CKSUM + LSB
'Add LSB to Checksum Value
CKSUM = CKSUM + MSB
'Add MSB to Checksum Value
End If
Next Channel
Gather Hardware and Software Checksums for Comaprison:
HW_Cksum = GetData2
'Store the Hardware Checksum
CKSUM = (CKSUM And 255)
'Compute Software Checksum
The following code executes if the Data Packet is Validated
If HW_Cksum = CKSUM Then
'If the Checksums Match
Debug.Print "CK ok"
At this point, the checksums are validated and data can be displayed or processed.
Else
Debug.Print "CK ERROR"
At this point, the checksums are not equal, new data should be gathered.
End If
Goto Restart
Here is another version that works with 8-bit A/D data:
The following code sets up a buffer array and a label to restart the routine
Dim Buffer(32) As Integer
Restart:
The following code requests data from the controller (16-Channels 12-Bit):
MSComm1.Output = Chr$(254)
'Enter Command Mode
MSComm1.Output = Chr$(200)
'Read 16-Channel 12-Bit with Packets
The following code gathers data from the controller:
CKSUM = GetData2
'Get LSB from Controller
If CKSum <> 254 then Restart
'Make Sure Header is Received and stored as Checksum
For Channel = 0 To 15
'Count Through All 16 Channels
Bytes = GetData2
'Get Analog Data Byte from Controller
If Bytes <> -1 Then
'If Data Does Not timeout
Buffer(Channel) = Bytes
'Store Bytes
CKSUM = CKSUM + Bytes
'Add LSB to Checksum Value
End If
Next Channel
Gather Hardware and Software Checksums for Comaprison:
HW_Cksum = GetData2
'Store the Hardware Checksum
CKSUM = (CKSUM And 255)
'Compute Software Checksum
The following code executes if the Data Packet is Validated
If HW_Cksum = CKSUM Then
'If the Checksums Match
Debug.Print "CK ok"
At this point, the checksums are validated and data can be displayed or processed.
Else
Debug.Print "CK ERROR"
At this point, the checksums are not equal, new data should be gathered.
End If
Goto Restart

These Command Apply ONLY to ProXR Controllers Enhanced with High-Resolution Analog to Digital Conversion, Available Interface Options Include RS-232 and USB. These commands will not be processed by the standard ProXR Series.

Potentiometer (Programmable Resistor) Commands
Some ProXR Series Enhanced Controllers support control of up to 256 potentiometers. A potentiometer is a variable resistor, capable of changing resistance
under software control. Programmable potentiometers are ideal for making computer controlled mixers and audio/video mixing devices, as well as light dimmers
and motor speed controllers. The POT and UPOT series controllers offer RS-232
and USB controlled potentiometers, and are ideally suited for integration into
various types of test instruments, programmable amplifiers, programmable power
supplies, and anything else that can benefit by software controlled resistance
variation. As a general rule, potentiometer devices often require external circuitry.
For instance, it is not possible to control the brightness of a light bulb directly or
the speed of a motor without some additional electronics.

254,172, Pot, Value

Potentiometer controllers are available with 10K, 50K and 100K programmable
potentiometers. It is possible to set the power-up default state of the first 48
potentiometers. It is also possible to control each potentiometer in 256 steps,
allowing fine adjustments under software control. You can control up to 256
potentiometers under software control, you can control each individually or all
simultaneously. In addition to potentiometer control the POT and UPOT series
controllers include the ProXR command set, allowing you to plug in up to 256
relays into the expansion port.

254,173, Pot

Potentiometers have 3 Connections: A,
Wiper, and B. When a low value is sent to
the controller, the wiper moves closer to A,
decreasing the resistance between A and
the wiper (increasing the resistance between
the wiper and B). When a high value is sent
to the controller, the wiper moves closer to
B, decreasing the resistance between the
wiper and B (increasing the resistance between the wiper and A). The first 48
channels of wiper values can be set to a power-up default state. It is possible to
set the wipers on all outputs individually or simultaneously.

254,170, Pot, Value

Store One Potentiometer Startup Value

This Command stores a Powerup Default Wiper Position for the Selected Potentiometer. Pot has a valid range of 0 to 47. Value has a valid range of 0-255. A
Low value move the wiper closer to A. A high value moves the wiper closer to B.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(172) 'Set Potentiometer Value of a Single Output Channel
MSComm1.Output = Chr$(0)
'Select a Potentiometer to Store (Maximum 47)
MSComm1.Output = Chr$(128) 'Store Wiper Startup Position to Mid Position
Value = GetData
'Read Byte from the Serial Buffer
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Read Stored Potentiometer Startup Value

This Command reads the Powerup Default Wiper Position for the Selected Potentiometer. Pot has a valid range of 0 to 47. This command returns a single byte of
data indicating the powerup default Wiper position of the selected potentiometer.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(173) 'Set Potentiometer Value of a Single Output Channel
MSComm1.Output = Chr$(0)
'Select a Potentiometer to Read (Maximum 47)
Value = GetData
'Read Byte from the Serial Buffer
(The controller will return a single byte from 0-255 indicating the Default Powerup Wiper Position for
the Selected Channel)
NOTICE:
GetData shown in the code above is a Function and is NOT a VB Command. GetData calls the
code shown below, used for Reading a Byte of Data from the PC Serial Buffer:
Public Function GetData()
‘Read a Byte of Data from the Controller in VB
Do
‘Start a Continuous Loop
DoEvents
‘Service Other Windows Tasks (Very Important!!!)
Until MSComm1.InBufferCount > 0
‘Continue Loop Until a Byte of Data is Received
GetData = ASC(MSComm1.Input)
‘Read Data Byte from the Serial Port
End Function

Set One Potentiometer to a Value

This Command Sets the wiper position of the selected potentiometer to a selected
value. POT has a valid value of 0-255, Value has a valid range of 0-255. A Low
value move the wiper closer to A. A high value moves the wiper closer to B.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(170) 'Set Potentiometer Value of a Single Output Channel
MSComm1.Output = Chr$(0)
'Select a Potentiometer to Control
MSComm1.Output = Chr$(128) 'Set the Wiper to Mid Position
Value = GetData
'Read Byte from the Serial Buffer
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

254,171, Value

Our ProXR Software provides you with a simple window to test these functions.

Set All Potentiometers to a Value

This Command Sets All wiper positions of all potentiometers to a selected value.
Value has a valid range of 0-255. A Low value move the wiper closer to A. A
high value moves the wiper closer to B.
MSComm1.Output = Chr$(254) 'Enter Command Mode
MSComm1.Output = Chr$(171) 'Set All Potentiometer Values
MSComm1.Output = Chr$(255) 'Set All Wipers Close to Position B
Value = GetData
'Read Byte from the Serial Buffer
(When Reporting Mode is ON, controller will send ASCII Code 85 to Acknowledge this command)

Use Part Number
UPOT16 to Expand
up to 256 Potentiometer Outputs.
This expansion port
is not compatible
with other expansion
devices.

POT Interface

Pot 3 B
Pot 3 W
Pot 3 A
Pot 2 B
Pot 2 W
Pot 2 A
Pot 1 B
Pot 1 W
Pot 1 A
Pot 0 B
Pot 0 W
Pot 0 A

Expansion

Interface (USB/RS232)
Control External
Relays with the XR
Expansion Port

See Page 5
Of this
Manual for
Interface
Connection
Information

All ProXR Series Controllers can be Expanded to Control 256 Relays. This Potentiometer
Device is Capable of Controlling a total of 256 Potentiometer Outputs.

This Page Applies to the Following Part Numbers:
Pot 7 B
Pot 7 W
Pot 7 A
Pot 6 B
Pot 6 W
Pot 6 A
Pot 5 B
Pot 5 W
Pot 5 A
Pot 4 B
Pot 4 W
Pot 4 A

PGM/RUN Jumper
Use PGM to
Change Configuration Settings
ONLY

RS232 / OC232
Jumper. Use OC232
Only when Networking
(Page 7)

POT8ProXR RS-232 8-Channel Programmable Potentiometer + XR Expansion Port
POT16ProXR RS-232 16-Channel Programmable Potentiometer + XR Expansion Port
POT24ProXR RS-232 24-Channel Programmable Potentiometer + XR Expansion Port
UPOT8ProXR USB 8-Channel Programmable Potentiometer + XR Expansion Port
UPOT16ProXR USB 16-Channel Programmable Potentiometer + XR Expansion Port
UPOT24ProXR USB 24-Channel Programmable Potentiometer + XR Expansion Port

These Command Apply ONLY to ProXR Controllers Enhanced with Potentiometer Outputs, Available with RS-232 and USB Interface.
These commands will not be processed by the standard ProXR Series.

USB Speed Optimization: Go Faster...
The ProXR Series Enhanced Controllers Equipped with a USB Interface are
shipped with a variety of parameters that are “safe” for all computers to ensure
compatibility. There are a few options that can be configured to significantly
increase communication speed between the device and the computer. This guide
shows you how to optimize communication speed for better performance. The
settings shown work on most computers without any problems.
Step 1:
Click the “Start” button in Windows and select “Control Panels”.
Step 2:
Select the “System” control panel.
Step 3:
Select the “Hardware” tab (shown below), and then click “Device Manager”.

Step 6:
You can assign a different COM port to the USB device by selecting a New COM
port in the “COM Port Number” dropdown box.
Step 7:
Optimization. Set the Receive and Transmit Bytes to 64. Set the Latency Timer
to 2 milliseconds. Make sure all other parameters match the parameters shown
above and click “OK”.
Step 4:
Navigate to the USB Serial Port for
the NCD Device you wish to optimize. And Right Click.

Next, it would be a good idea to unplug the USB device and wait a few seconds.
Plug the device back in and follow these steps again to make sure the parameters
were properly configured for the USB driver. Once you have verified all settings,
you have successfully optimized the USB driver and will notice a significant increase in communication speed. However, further speed increases are still possible. The steps outlined above only configure the USB driver for optimal speed.
Now it is time to optimize the USB device for optimal speed.
Increasing the Speed of the USB Device:
Download our “ProXR Software” and install it on your computer.
Run our ProXR software on your computer and click the yellow button at the
bottom that is labeled “Advanced Feature Settings”.
This will open the settings shown on Page 24 of this manual.
Reduce the “Serial Timing” parameter to a value from 20-35 and store the setting
into the controller. You will need to change the Program/Run jumper to “Program”
to store your settings. USB devices allow you to change this jumper without
power cycling the controller. However, you should return the jumper to the “Run”
position after settings have been stored.
Next, exit the ProXR software and unplug the USB device.

Step 5:
Click on the “Port Settings” tab and click the
“Advanced” button.

Next, reconnect the USB device to your computer. Your device should now be
optimized, though further speed enhancements may be possible by further reducing the “Serial Timing” parameter. The optimal setting will vary from computer to
computer. We achieved reliable communications with a value of 20, but some
computers may be able to handle lower settings. This setting affects the speed of
data being sent from the device to the computer. The device is easily capable of
outrunning your computer. Reducing this parameter reduces the delay between
data bytes sent to your PC. Experimentation is in order, but keep in mind, commands that request more than a single byte of data from the USB device may be
adversely affected by this command. Returning the device to configuration mode
forces the device to a safe speed, regardless of your settings. This will prevent a
permanent loss of communications.

NCD USB Devices mount as a COM port on your computer. Your
software should speak to the device using the COM port that is
mounted by the device. NCD devices use a fixed data rate of
115.2K Baud, 8 data bits, 1 stop bit, No Parity. The settings
shown at left will have no bearing on your software, your software will override the settings shown, so don’t worry about
changing the default baud rate of the driver.



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : Yes
Create Date                     : 2007:03:27 00:57:56Z
Modify Date                     : 2007:03:26 20:11:39-04:00
Page Count                      : 44
Creation Date                   : 2007:03:27 00:57:56Z
Mod Date                        : 2007:03:26 20:11:39-04:00
Producer                        : Acrobat Distiller 5.0 (Windows)
Author                          : Ryan
Metadata Date                   : 2007:03:26 20:11:39-04:00
Creator                         : Ryan
Title                           : PROXR_V2.pub
Has XFA                         : No
EXIF Metadata provided by EXIF.tools

Navigation menu