Remote Inputs and Outputs

Optional "Remote I/O Modules" (RIO boards) provide additional digital inputs and outputs that may be accessed transparently from the Controller. When a properly configured RIO module is connected to the local Ethernet network and enabled, additional general inputs and outputs become available on the controller. The correspondence between the RIO module I/O and the Controller signal numbers depends on the unit number of the RIO, as selected by the DIP switch settings on the RIO, and are independent of the Ethernet IP addresses of the controller and RIO.

RIO Unit RIO DIP switch
1 2 3 4
Output Signals Input Signals

1

0 0 0 0

101 - 196

10101 - 10196

2

1 0 0 0

201 - 296

10201 - 10296

3

0 1 0 0

301 - 396

10301 - 10396

4

1 1 0 0

401 - 496

10401 - 10496

A single RIO module contains 32 digital inputs and 32 digital outputs on its base board, and (as a future enhancement) an additional 32 inputs and 32 outputs on each of two optional expansion boards, for a total of 96 digital inputs and 96 digital outputs per RIO.

Guidance Controller Configuration

After the Ethernet IP address of the Remote I/O module has been configured, the controller must be configured to recognize and connect to the RIO module.

  1. Set the value of the "Remote IO module IP address" (DataID 555) database array to the IP address of the RIO module. The array index chosen is not important for operation of the RIO module, but is used when accessing other parameter values in the following steps.  Likewise, the IP address for the RIO can be arbitrarily selected and does not effect how the IO on the RIO are addressed from within application programs.  However, you must not specify an IP address that is being used by the MODBUS/TCP scanner specified by DataID 583.  By default, the first RIO address is set to "192.168.0.101".
  2. Set the corresponding element of the "Remote IO module enable" (DataID 554) parameter array to "True," to enable scanning of the RIO device. If this value is True when the parameter database is saved, the scanning begins automatically when the Controller is restarted. Setting this value to False stops the scanning of the corresponding RIO, and setting it back to True attempts to restart scanning. If a RIO module is connected to the network after the Controller is started, the "Remote IO module enable" (DataID 554) value must be toggled to False then True to initiate scanning of the RIO.
  3. Note the value of the corresponding element of the read-only parameter array "Remote IO module unit" (DataID 556). If the RIO device was detected and is being scanned, this parameter value is the unit number (from 1 to 15) of the RIO module. If no RIO module is detected or an error occurs, this value is zero.
Parameter Database ID Parameter Name Default Value Description

554

Remote IO module enable

False

(Set only on controller) Determines if the corresponding RIO module specified by a "Remote IO module IP address" (DataID 555) entry should be scanned by this controller. When changed from True to False, disables the RIO module. When changed from False to True, attempts to begin scanning for the RIO module.

555

Remote IO module IP address

192.168.0.101

(Set only on controller)  Each entry specifies the IP address of a RIO module to be scanned. Scanning only occurs if the corresponding entry in "Remote IO module enable" (DataID 554) is set to True. The order of IP addresses in this array is not important.

556

Remote IO module unit

0 to 15

(Read-only on controller and RIO) Indicates the status of the corresponding RIO module specified by the "Remote IO module IP address" (DataID 555). If 0, the RIO module is not being scanned. If > 0, the value indicates the RIO unit number, from 1 to 15.

Remote I/O Scanning

The Controller scans its desired output values at a fixed rate to check for any changes. If a change occurs, a message is sent to the RIO, notifying it of the new output values. The scan period determines the minimum output pulse width that can be detected and also adds to the latency between when an output changes and when the RIO is notified of the change. The scan period must be set short enough to not miss output pulses, but must be long enough to not overwhelm the system with messages if the outputs change frequently. Normally the scan period is set to 10 milliseconds.

The Controller does not poll inputs from the Remote I/O modules, but relies on these modules to notify the controller whenever an input changes. The rate at which individual RIO modules scan their inputs and send messages to the Controller is configured on the RIO module itself.

The Controller also sends heartbeat messages at a slow rate to each RIO module, even if no outputs have changed. These messages allow the RIO modules to detect that the Controller is still connected and functioning. The heartbeat must occur often enough so the RIOs can detect failures in a timely manner, but slow enough to not waste too much time on the master Controller.

The RIO modules also send heartbeats to the Controller. If the Controller does not receive a message within a specified time, it assumes that an error has occurred and closes its connection. In this case the I/O points associated with the RIO become unavailable for I/O, and robot power is optionally disabled until communication with the RIO is reestablished.

The table below shows the scanning parameters.  Note, if you elect to use the default scanning parameters on all your RIO modules, you can simply use the defaults on the Controller.

Parameter Database ID Parameter Name Default Value Description

550

Remote IO scan period in sec

0.010

(Set on controller and RIO) The time period used by the local board to scan its local I/O. If any changed I/O values are detected during a scan, the new values are sent to the remote board (either a RIO module or the master Controller). The scan period determines the minimum input pulse width that can be detected by the local board, and also adds to the time between when an input changes and when the remote node is notified of the change. The scan period must be set short enough to not miss input pulses, but must be long enough to not overwhelm the system with messages if the inputs change frequently.

551

Remote IO heartbeat period in sec

0.500

(Set on controller and RIO) The time period used by the local board to send its I/O state to the remote board (either a RIO module or the master Controller), even if no I/O have changed. Receiving this message notifies the remote node that this local board is alive. Typically set to less than one-half the value of "Remote IO max input time in sec" (DataID 552) on the remote module.

552

Remote IO max input time in sec

2

(Set on controller and RIO) If the remote board (either a RIO module or master Controller) fails to send an update message within this time period, an error occurs. Typically set to > 2 times the value of "Remote DIO output heartbeat time in sec" (DataID 551) on the remote module.

553

Local IO error action

0 or 2

(Set on controller and RIO) Determines the action taken if a communications error occurs. On the RIO module, 0 means freeze the outputs, 1 means clear the outputs. On a Controller, 0 and 1 are ignored. 2 means disable robot power and do not permit it to be enabled until communication with the RIO module is established.