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.
| 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. |