IOMOD 8DI8DO User Manual
1. Introduction
The IOMod 8DI8DO is a compact, standalone digital input and output controller compatible with Modbus RTU, IEC 60870-5-101, and IEC 60870-5-103 protocols. It is designed for industrial applications that require digital signaling and robust communication. The IOMod is an ideal solution for process monitoring and control in remote locations and integrates seamlessly with any SCADA system.
1.1 Features
- 8 digital inputs
- 8 digital open collector outputs
- Galvanically isolated inputs and outputs for enhanced safety and reliability
- Configurable using the IOMod utility app for user-friendly setup
- RS485 communication for robust data exchange
- LED indicators for input/ output status, data transmission (Rx), and data reception (Tx)
- Compact case with a removable transparent front panel
- DIN rail mounting for seamless integration into industrial systems
1.2 Block diagram
Fig. 1.2.1 IOMod 8DI8DO internal structure and block diagram
2. Hardware data
2.1 Mechanical drawings
Fig. 2.1.1 IOMod 8DI8DO side view with dimensions and terminals description. 1 - digital outputs; 2 - digital inputs; 3 - input/output power supply; 4 - RS-485 interface; 5 - Power supply
Fig. 2.1.2 IOMod 8DI8DO front view with measurements
2.2 Terminal connections
IOMod 8DI8DO has 22 terminals, which are depicted below:
Fig. 2.2.1 IOMod 8DI8DO terminal diagram
The description of each terminal can be found in the table below:
Table 2.2.1 Terminal Specifications
Terminal number |
Terminal name |
Description |
---|---|---|
1 |
DO1 |
Digital outputs |
2 |
DO2 | |
3 |
DO3 | |
4 |
DO4 | |
5 |
DO5 | |
6 |
DO6 | |
7 |
DO7 | |
8 |
DO8 | |
9 |
DI1 |
Digital inputs |
10 |
DI2 | |
11 |
DI3 | |
12 |
DI4 | |
13 |
DI5 | |
14 |
DI6 | |
15 |
DI7 | |
16 |
DI8 | |
17 |
VIO+ | Input/output positive power source |
18 |
VIO- | Input/output negative power source |
19 |
A | RS485 input |
20 |
B | RS485 input |
21 |
V- | Power source input |
22 |
V+ | Power source input |
2.3 Status indication
IOMod 8DI8DO has LEDs (Fig. 2.3.1), which are used to indicate outputs, inputs, communication and power statuses
Fig. 2.3.1 IOMod 8DI8DO LEDs physical location
The description of each IOMod 8DI8DO LED can be found in the table below:
Table 2.3.1 Description of LEDs
O1- O8 |
🟠 (orange) |
Indicates output status |
I1- I8 |
🟠 (orange) |
Indicates input status |
RX/TX |
🟢 (green) |
Blinking green light indicates active communication via RS485 interface. |
STAT |
🔴 (red) |
Power source is connected only to the power supply input of the device |
🟢 (green) |
Power source is connected to both- power supply input of the device and to the input/output power supply |
|
🔵 (blue) |
IOMod 8DI8DO is connected to an external device via USB mini cable. |
3. Technical information
Table 3.1. Technical specifications
System | ||
Dimension | 101 x 119 x 17.5 mm |
|
Case | ABS, black |
|
Working environment | Indoor |
|
Operating temperature | -40°C ... +85°C |
|
Recommended operating conditions | 5–60°C and 20–80%RH; |
|
Configuration |
USB, RS485 |
|
Firmware upgrade | USB, RS485 |
|
Electrical specifications |
||
Outputs |
open collector outputs |
9-33VDC (@current < 400mA shared across all 8 outputs) |
Isolation |
8 X 3kV(rms) |
|
Inputs |
Nominal input voltage range |
6-33VDC (@current 1.3mA - 16mA) |
Isolation |
8 X 3kV(rms) |
|
Power |
||
Power Supply | 9–33 VDC (full range) |
|
Current consumption | 40 mA @ 12 VDC, 20 mA @ 24 VDC |
4. Mounting and installation
4.1 Connection Diagrams
In this chapter the various options of connecting the device to systems are discussed.
4.1.1 Digital inputs
The typical application of IOMOD 8DI8DO inputs is shown in Fig. 4.1.1. When the default configuration for the inputs is applied, the user will observe inputs connected to +12/24V as “high” or in state “1,” and the input status LED will illuminate.
Fig. 4.1.1 Input configuration example
4.1.2 Digital outputs
The outputs are the sink type (NPN), meaning they provide a path to ground. The load is connected between the output and the positive voltage. When an output is active, current flows from power supply through the load to ground, the output state becomes "high" (1), and the corresponding status LED illuminates. A typical output application is shown in Fig. 4.1.2
Fig. 4.1.2 Output configuration example
4.2 RS485 Interface
IOMod 8DI8DO has integrated 120Ω termination resistor which can be enabled or disabled over IOMod utility app. It is recommended to use termination at each end of the RS485 cable. See typical connection diagram on Fig. 4.2.1
Fig 4.2.1 Typical IOMod connection diagram
4.3 Power supply
IOMod 8DI8DO needs to be powered by a 9–33 V power source. IOMod power supply inputs are located next to RS485 interface inputs (Fig 4.4.1)
Fig. 4.4.1. Power supply input physical location
4.4 USB connection
The IOMod 8DI8DO device features a USB-mini connection port, primarily used to establish a physical connection between the IOMod and a PC. By selecting the USB interface and the correct communication port in the IOMod Utility (see Fig. 4.4.1), the user can connect to the IOMod to control its parameters and monitor its measured data. Additionally, this connection can be used to power the module.
Fig. 4.4.1 IOMod Utility interface and communication port parameters
Fig. 4.4.2. IOMod 8DI8DO USB connection port physical location
5. Communication protocols
The IOMod 8DI8DO supports three communication protocols: Modbus RTU, IEC 60870-5-101, and IEC 60870-5-103. These protocols allow a user, via a master device, to read data from the IOMod and send commands to activate digital outputs. The desired communication protocol can be selected using the IOMod Utility application (Fig. 5.1) The Utility's interface allows users to connect to IOMOD via USB port, RS485, and ser2net. More information about this tool and its installation can be found on detailed IOMod Utility manual here.
Fig. 5.1 IOMod utility app protocol selection window
IOMod 8DI8DO default communication protocol settings
Protocol |
baudrate |
parity |
stop bits |
wait byte count |
slave address |
link address size |
ASDU size |
COT size |
IOA size |
Input function |
Output command function |
Output status function |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Modbus |
19200 | Even | 1 | 8 | 1 | |||||||
IEC 101 |
19200 | Even | 1 | 8 | 1 | 1 | 1 | 1 | 2 | |||
IEC 103 |
19200 | Even | 1 | 8 | 1 | 253 | 254 | 254 |
*Default IOMod 8DI8DO communication protocol is Modbus
5.1 Modbus RTU protocol operational information
Modbus RTU protocol is a simple and widely used messaging structure for serial communication. In the case of Modbus protocol IOMod 8DI8DO will send data only after receiving correct queries from a master device. Supported Modbus function codes: FC1, FC2, FC3, FC5, FC6 and FC16.
01 (0x01) Read Coil status
As the name implies, it is designed for reading digital data. In the context of IOMod 8DI8DO FC1 requests allow to read digital input and output statuses. Please note that the input statuses cannot be overwritten separately but can only be read (R access).
02 (0x02) Read Discrete Inputs
As the name implies, it is designed for reading digital data. In the context of IOMod 8DI8DO FC2 requests allow to read digital input and output statuses. Please note that the input statuses cannot be overwritten separately but can only be read (R access).
03 (0x03) Read Holding Registers
Allows the user to read counter/timer values dedicated to digital inputs. There are two types of values - Pulse Counter and On Timer. The pulse counter tracks the number of pulses for the respective input. While the On timer calculates the duration for which the respective input remained in its active state.
05 (0x05) Write single coil
This command is used to set the state of a single output (On or Off). The output addresses range from 0 to 7 (the first output is address 0, last output is address 7)
06 (0x06) Preset Single Register
Sets single register. This command is used to change the values of Pulse counter and ON timer.
16 (0x16) Preset Multiple Registers
Sets multiple registers. This command is used to change the values of Pulse counter and ON timer.
5.1.1 Modbus register mapping table
Address (Dec) |
Description |
|
---|---|---|
Read coil status (01) |
||
0 - 7 |
Reading digital output DO1-DO8 |
|
8 - 15 |
Reading digital input DI1- DI8 |
|
Read discrete inputs (02) |
||
0 - 7 |
Reading digital output DO1-DO8 |
|
8 - 15 |
Reading digital input DI1- DI8 |
|
Read holding register (03), Read input register (04) Write single or multiple registers (06 or 16) |
||
0 |
input 1 pulse count |
accepts command with 6 or 16 function to change value |
1 - 2 |
input 1 on time |
accepts command with 6 or 16 function to change value |
3 |
input 2 pulse count |
accepts command with 6 or 16 function to change value |
4 - 5 |
input 2 on time |
accepts command with 6 or 16 function to change value |
... |
... |
... |
21 |
input 8 pulse count |
accepts command with 6 or 16 function to change value |
22 - 23 |
input 8 on time |
accepts command with 6 or 16 function to change value |
Write single coil (05) |
||
0 - 7 |
Writing digital outputs DO1-DO8 |
|
Write multiple coils (15) |
||
0 - 7 |
Writing multiple digital outputs DO1-DO8 |
|
Fig. 5.1.1 Modbus register table
5.1.2 Device settings for Modbus protocol
Communication settings
IOMod 8DI8DO configuration is performed via IOMod Utility (the manual can be accessed here).
Fig 5.1.2.1 Modbus protocol communication settings tab on IOMod utility app
For Modbus protocol users can set: Link address, baudrate, parity, stop bits, terminating resistor and bit wait time (Fig 5.1.2.1). See the table below for parameter ranges and default values (Fig 5.1.2.2)
Parameter |
Range |
Default values |
---|---|---|
Link address | 1-256 | 1 |
Baudrate | 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600, 76800, 115200 | 19200 |
Parity | None, Odd, Even, Mark, Space | Even |
Stop bits | 1, 2 | 1 |
Terminating resistor | Enable or disable | disabled |
Bit wait time for packet | 8-256 | 8 |
Fig 5.1.2.2 Communication parameters ranges and default values
General IOMod settings
More device parameters can be changed with IOMod utility under IOMod settings tab (Fig 5.1.2.3). For Modbus protocol user can set input, output inversion and input, output filter.
Fig 5.1.2.3 IOMod settings tab on utility application
Input Inversion
If the user wants the input status to display as "ON" when the input signal is in a low state, the inputs can be logically inverted via IOMod utility application under the IOMod settings tab (Fig. 5.1.2.4)
When input inversion is enabled, the input state will show 1 (ON) when no signal is connected and will change to 0 (OFF) when the input is activated.
Note: The input indication LEDs are not affected by this inversion and will continue to reflect the actual signal state.
Example:
Input 2 has input inversion enabled in the IOMod Utility application. Both inputs, IN1 and IN2, are physically activated, and the LEDs on the IOMod are lit for both inputs. However, on the SCADA system:
- IN1 will be displayed as "1" (ON).
- IN2 will be displayed as "0" (OFF) due to the input inversion setting.
Input inversion can enabled via IOMod utility application under the IOMod settings tab
Fig. 5.1.2.4 Input inversion on IOMod utlity app
Output Inversion
If the user wants the output status to display as "ON" when the output signal is in a low state, the outputs can be logically inverted via IOMod utility application under the IOMod settings tab (Fig. 5.1.2.4)
When output inversion is enabled, the output state will show 1 (ON) when output is not activated and will change to 0 (OFF) when the output is activated.
Note: The output indication LEDs are not affected by this inversion and will continue to reflect the actual signal state.
Example:
output 2 has output inversion enabled in the IOMod Utility application. Both outputs, DO1 and DO2, are activated, and the LEDs on the IOMod are lit for both outputs. However, on the SCADA system:
- DO1 will be displayed as "1" (ON).
- DO2 will be displayed as "0" (OFF) due to the output inversion setting.
Output inversion can be enabled via IOMod utility application under the IOMod settings tab
Fig. 5.1.2.4 Output inversion on IOMod utility app
Input filter
The filter time specifies the duration for which the input must remain stable before a status change is transmitted. The time interval is set in milliseconds. Default interval is 50ms.
Input filter time can be set in the IOMod utility application under the IOMod settings tab (Fig. 5.1.2.5)
Fig. 5.1.2.5 Input filter on IOMod utility application
Output pulse time
The output pulse time defines how long an output remains active after receiving a command. It is set in milliseconds. The default value is 0 ms, meaning the pulse function is disabled.
Output pulse time can be set in the IOMod utility application under the IOMod settings tab (Fig. 5.1.2.6)
Fig. 5.1.2.6 Output pulse time on IOMod utility app
5.2 IEC 60870-5-101 protocol operational information
Introduction
IEC 60870-5-101 (IEC101) is a communication protocol designed for telecontrol applications in power systems, facilitating communication between a master station and slave devices (e.g., Remote Terminal Units or RTUs). Unlike the Modbus protocol, IEC101 allows to transfer additional information like timestamp and quality attributes.
The IOMod 8DI8DO uses the IEC101 protocol to transmit signals in a standardized format. Each signal is mapped to an Information Object Address (IOA) and assigned Type Identifier (TI). This format conveys binary status changes (e.g., whether a circuit breaker is open or closed) with associated timestamps.
5.2.1 Initialization
The IOMod utilizes a standard IEC 60870-5-101 communication scheme. Initialization, control messages, and queries are initiated by the master (controlling station), while the IOMod device (controlled station) responds to these requests.
-
Link Status Check: The master sends a "Request Status of Link" message (function code = 9).
- If the link is available, the IOMod responds with "Status of Link" (function code = 11).
- If the link is unavailable, there will be no response.
-
Link Reset: After receiving the link status, the master sends a "Reset of Remote Link" command (function code = 0) to restart communication.
- The IOMod may respond with either:
- ACK (Acknowledgment, function code = 0), or
- NACK (Negative Acknowledgment, function code = 1).
- The IOMod may respond with either:
-
Completion: If the IOMod responds with an ACK, the initialization is complete, and the master can proceed with other messages defined by the IEC 60870-5-101 protocol.
5.2.2 Data Polling
Once initialization is complete, the master can request data from the IOMod device using a general interrogation command. Additionally, per protocol specifications, the IOMod sends data automatically upon detecting value changes.
For the IOMod 8DI8DO, data is transmitted using Type 30 (M_SP_TB_1), which represents single-point values with a time tag. Double-point input data is transmitted using Type 31(M_DP_TB_1)
5.2.3 Input Messages
When an input status changes, the IOMod filters potential glitches using a user-configurable filter time. Once the filter criteria are met, the device sends a “Spontaneous” message with:
- Type: 30 (M_SP_TB_1) for single point and 31 (M_DP_TB_1) for double-point input
-
The inputs are mapped to the following IOAs:
- 9: DI1
- 10: DI2
- 11: DI3
- 12: DI4
- 13: DI5
- 14: DI6
- 15: DI7
- 16: DI8
5.2.4 Output control
The outputs are controlled by the master (controlling station) using a 45-type command (C_SC_NA_1, single-point command) or 46-type command (C_DC_NA_1, double-point command) for grouped outputs. Each output is assigned to a Information Object Address (IOA):
- 101: DO1
- 102: DO2
- 103: DO3
- 104: DO4
- 105: DO5
- 106: DO6
- 107: DO7
- 108: DO8
5.2.5 Time Synchronization
To synchronize time, the master must send a Clock Sync command:
- Command Type: C_CS_NA_1 (103),
- Cause of Transmission (COT): 6
The command must target the correct link address and CASDU (defaulted to the link address). If the frame is valid, the IOMod responds with:
- Command Type: C_CS_NA_1 (103),
- COT: 7
- The response will also include the device’s timestamp.
5.2.6 General Interrogation (GI)
The master initiates GI by sending a General Interrogation command. The command must be sent to the correct link address and CASDU (default is the link address)
- Command Type: C_IC_NA_1 (100),
- COT: 6.
When the command is valid, the IOMod responds with:
- Command Type: C_IC_NA_1 (103),
- COT: 7,
- p/n Bit: Positive (0).
If invalid, the response includes a negative (1) p/n bit.
After validation, the device transmits all its data. Upon completion, the IOMod sends another command C_IC_NA_1 (Type 100) with COT = 10 (ActTerm) to indicate the GI process is complete.
5.2.7 Device settings for IEC 60870-5-101 protocol
IOMod 8DI8DO configuration is performed via IOMod Utility application (the manual can be accessed here).
Fig 5.2.7.1 Communication settings on the IOMod utility application
For IEC 60870-5-101 protocol users can set: Link address, baudrate, parity, stop bits, terminating resistor and bit wait time, time synchronization timeout, link address size, ASDU size, COT size, and IOA size using the IOMod utility application (Fig 5.2.7.1) See the table below for parameter ranges and default values for IEC 60870-5-101 protocol (Fig 5.2.7.2)
Parameter |
Range |
Default values |
---|---|---|
Link address |
1-65535* |
1 |
Baudrate | 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600, 76800, 115200 | 19200 |
Parity | None, Odd, Even, Mark, Space | Even |
Stop bits | 1, 2 | 1 |
Terminating resistor | Enable or disable | disabled |
Bit wait time for packet | 8-256 | 8 |
Time synchronization timeout (s) | 1-65535 | 300 |
Link address size | 1, 2 | 1 |
ASDU size | 1, 2 | 1 |
COT size | 1, 2 | 1 |
IOA size | 1, 2, 3 | 2 |
* To use Link address value greater than 256, Link address size must be set to "2".
Fig 5.2.7.2 parameter ranges and default values of IOMod
General IOMod settings
More device parameters can be changed with IOMod utility application under IOMod settings tab. For the IEC 60870-5-101 protocol user can enable: input and output grouping, swap grouped inputs and outputs, invert inputs and outputs, filter inputs and set output pulse time.
Input Grouping
Certain applications require combining two inputs into a single (DPI) input. This is done by grouping two neighboring pins, where the first pin in the pair must be odd-numbered. When grouped, the second pin in the pair is not used anymore – all requests to this pin will generate an error.
Example:
- Valid: IN1 and IN2 (IN2 becomes unused).
- Invalid: IN2 and IN3.
Input grouping can be achieved via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.3)
Fig. 5.2.7.3 Input grouping settings on IOMod utility app
Swap grouped inputs
Grouped inputs are referred to as Double Point Information (DPI) inputs. DPI signals consist of two bits of information, allowing for four possible states, thus providing more detail compared to SPI/. For example: The INDETERMINATE state might indicate that part of the equipment is turned off or that a mechanical component responsible for switching is stuck between states. The ERROR state could signify that both contacts are connected, possibly indicating a short circuit in the equipment.
Value | Representation |
00 | INDETERMINATE |
01 | OFF |
10 | ON |
11 | ERROR |
Practical usage example of Swap Grouped Inputs setting: In a typical configuration, an active IN1 indicates the OFF position, and an active IN2 indicates the ON position. However, if a technician accidentally mismatches the cables during installation, resulting in IN1 indicating ON and IN2 indicating OFF, the Swap Grouped Inputs setting allows the positions of the inputs to be swapped without requiring any physical reconnection of the cables.
Swap grouped inputs can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.4)
Fig 5.2.7.4 Swap grouped inputs setting on IOMod utility application
Input inversion
Enables logical inversion of signal states. If the user wants the input status to display as "ON" when the input signal is in a low state, the inputs can be logically inverted
When input inversion is enabled, the input state will show 1 (ON) when no signal is connected and will change to 0 (OFF) when the input is activated.
Note: The input indication LEDs are not affected by this inversion and will continue to reflect the actual signal state.
Example:
Input 2 has input inversion enabled in the IOMod Utility application. Both inputs, IN1 and IN2, are physically activated, and the LEDs on the IOMod are lit for both inputs. However, on the SCADA system:
- IN1 will be displayed as "1" (ON).
- IN2 will be displayed as "0" (OFF) due to the input inversion setting.
Input inversion can enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.6.5)
Fig. 5.2.7.5 Input inversion setting on IOMod utility application
Input Filtering
The filter time specifies the duration for which the input must remain stable before a status change is transmitted. The time interval is set in milliseconds. The default interval is 50ms.
Input filter time can be set in the IOMod utility application under the IOMod settings tab (Fig. 5.2.7.6)
Fig. 5.2.7.6 Input filter time setting on IOMod utility application
Output grouping
Certain applications require combining two outputs into a single (DPI) output. This is done by grouping two neighboring pins, where the first pin in the pair must be odd-numbered. When grouped, the second pin in the pair is not used anymore – all requests to this pin will generate an error.
Example:
- Valid: DO1 and DO2 (DO2 becomes unused).
- Invalid: DO2 and DO3.
46-type command (C_DC_NA_1, double-point command) must be used to active DPI outputs. When outputs are grouped, only short and long pulse commands are executed. The short pulse is sent with qualifier 1 (QU/QL = 1), while a long pulse is sent with qualifier 2 (QU/QL = 2). Each output pair is assigned to a Information Object Address (IOA):
- 101: DO1 and DO2 pair
- 103: DO3 and DO4 pair
- 105: DO5 and DO6 pair
- 107: DO7 and DO8 pair
Output grouping can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.7)
Fig. 5.2.7.7 Group outputs settings
Swap grouped outputs
If desired, output groups can be swapped. Grouped Output Swapping allows you to exchange the positions of the grouped pins. After swapping, the even-numbered pin can become the first pin in the pair, and the odd-numbered pin follows. For instance, if DO1 and DO2 are grouped, you can swap their positions so that DO2 becomes the first in the pair.
Swap grouped outputs can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.8 )
Fig. 5.2.7.8 Swap grouped outputs settings
Invert outputs
Enables logical inversion of signal states. If the user wants the output status to display as "ON" when the output is not activated, the output can be logically inverted.
When output inversion is enabled, the output state will show 1 (ON) when when the output is not activated and will change to 0 (OFF) when the output is activated.
Note: The output indication LEDs are not affected by this inversion and will continue to reflect the actual signal state.
Example:
DO2 has output inversion enabled in the IOMod Utility application. Both outputs, DO1 and DO2, are activated, and the LEDs on the IOMod are lit for both outputs. However, on the SCADA system:
- DO1 will be displayed as "1" (ON).
- DO2 will be displayed as "0" (OFF) due to the output inversion setting.
Output inversion can enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.9)
Fig. 5.2.7.9 output inversion settings
Output short and long pulse
Users can configure outputs to be pulse controlled – it means that output will be turned on for the configured amount of time. When this time runs out, output is turned off. This is useful when pulse toggle relays are used. The output pulse is independent of the output grouping option and can be used on both grouped and ungrouped outputs.
The IEC101 protocol has settings for long and short pulse commands. Unlike the Modbus RTU protocol, the IEC-60870-5-101 protocol offers options for short and long pulses. A short pulse is typically sent with qualifier 1 (QU/QL = 1), while a long pulse is usually sent with qualifier 2 (QU/QL = 2). Short and long pulse interval is set in milliseconds.
Output short and long pulse interval can be set via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.10)
Fig. 5.2.7.10 Short and long output pulse settings
Select Before Operate (SBO)
SBO ensures that an output action (such as turning a relay on or off) is carried out only after the output has been explicitly selected. This helps prevent accidental or unauthorized operations, ensuring that the operator's intent is confirmed before acting. For example, the user wants to turn on DO1. First, they issue a select command to DO1. After the selection is acknowledged, the user sends an execute command to activate DO1 output. If the command is successful, the output is turned on. If there’s an issue, a negative acknowledgement (NACK) will be sent, and no change will occur. There is also an output SBO time option which ensures that the operation is not immediately executed but is instead delayed to allow for confirmation or review before the operation is carried out.
Select Before Operate can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.11)
Fig. 5.2.7.11 Select before operate settings
5.3 IEC 60870-5-103 protocol operational information
Introduction
IEC 60870-5-103 (IEC103) is a communication protocol specifically designed for protection equipment in power systems, enabling communication between a master station and slave devices such as protection relays and Remote Terminal Units (RTUs). This protocol ensures efficient and reliable data exchange, focusing on events, fault records, and protection settings.
The IOMod 8DI8DO utilizes the IEC103 protocol to transmit data in a standardized format. Signals are mapped to predefined Information Object Addresses (IOA) and Type Identifiers (TI). The protocol is optimized for transferring detailed information, such as event-driven data and device status updates, ensuring precise monitoring and control of power system protection devices.
5.3.1 Initialization
The IOMod utilizes a standard IEC 60870-5-103 communication scheme. Initialization, control messages, and queries are initiated by the master (controlling station), while the IOMod device (controlled station) responds to these requests.
-
Reset Frame Count Bit (Reset FCB):
- The master sends a "Reset FCB" command (function code = 7) to ensure a fresh communication state.
- The IOMod responds with an ACK (Acknowledgment, function code = 0) if the request is successfully processed.
-
Link Status Check:
-
The master sends a "Request Status of Link" message (function code = 9) to verify the availability of the link.
-
The IOMod responds with:
- "Status of Link" (function code = 11) if the link is available, including the ACD flag if additional data is ready to be sent.
- No response if the link is unavailable.
-
-
Link Reset:
-
After confirming the link status, the master sends a "Reset of Remote Link" command (function code = 0) to reset the communication link.
-
The IOMod may respond with either:
- ACK (Acknowledgment, function code = 0) to confirm the reset, or
- NACK (Negative Acknowledgment, function code = 1) if the reset is unsuccessful.
-
- Completion:
-
Once the link is reset and the master receives an acknowledgment (ACK), initialization is complete. The master can now proceed with data exchange or other communication defined by the IEC 60870-5-103 protocol.
-
5.3.2 Data polling
Once the initialization process is complete, the master can poll the IOMod device using both Class 1 and Class 2 requests: Class 2 requests are used by the master to poll cyclic data. When no spontaneous data exists, the IOMod device responds with normal cyclic data. If spontaneous data exists, the IOMod device sets the Access Demand flag, prompting the master to send a Class 1 request.
Class 1 Requests are used to retrieve priority or event-driven data. Upon receiving the first Class 1 request, the IOMod device sends an identification string. If there are any pending spontaneous messages, the IOMod prioritizes sending them before transmitting the identification string.
5.3.3 Input messages
When input status changes, IOMOD device filters input glitches through filters with a user configurable filter time. When the filter is passed device sends “Spontaneous” message with “Function type” as input address (default function type of inputs – 253), and “Info number” as input pin number (1-8 accordingly). Please note that spontaneous messages are answered with a four-byte time structure not containing date info. Controlling station should therefore be able to handle the signals sent before the start of a new day.
5.2.4 Output control
To enable or disable outputs master (controlling station) sends commands conforming to the IEC-60870-5-103 protocols. The function type of the output commands has to be 254. Info number represents the number of output pins (1-8 accordingly).
5.3.5 Time synchronization
To initiate the time synchronization between devices master must send variable frame which includes:
- Function code "3"
- Type Identification “6” (Time synchronization)
- Info number "0"
- Cause of Transmission “8”
- The frame must include a 7-byte time structure to synchronize the clock. The IOMod acknowledges the synchronization command with a time-tagged response.
5.3.6 General Interrogation (GI)
General Interrogation is used to retrieve the complete dataset from the IOMod device. The master must send a variable frame with:
- Function code: 3 ("User Data with ACK")
- Type Identification "7" (Initialization of general interrogation)
- Cause of Transmission "9"
The slave device acknowledges (ACK) the request. The master then retrieves IOMod data through Class 2 polling requests. IOMod responds with time-tagged messages containing states of inputs. Pin numbers are represented by the Info Number fields in the packets. Finally, the slave sends an End of GI message:
- Cause of Transmission: 10
- Type Identification: 8 (General interrogation)
5.3.7 Device settings for IEC 60870-5-103 protocol
IOMod 8DI8DO configuration is performed via IOMod Utility application (the manual can be accessed here).
Fig 5.3.7.1 Communication settings on the IOMod utility application
For IEC 60870-5-103 protocol users can set: Link address, baudrate, parity, stop bits, terminating resistor and bit wait time, time synchronization timeout, and input function using the IOMod utility application (Fig 5.3.6.1) See the table below for parameter ranges and default values for IEC 60870-5-103 protocol (Fig 5.3.6.2)
Parameter |
Range |
Default values |
---|---|---|
Link address |
1-256 |
1 |
Baudrate | 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600, 76800, 115200 | 19200 |
Parity | None, Odd, Even, Mark, Space | Even |
Stop bits | 1, 2 | 1 |
Terminating resistor | Enable or disable | disabled |
Bit wait time for packet | 8-256 | 8 |
Time synchronization timeout (s) | 1-65535 | 300 |
Input function | 253 |
Fig 5.3.7.2 parameter ranges and default values of IOMod
General IOMod settings
More device parameters can be changed with IOMod utility application under IOMod settings tab. For the IEC 60870-5-103 protocol user can enable: input/output grouping, swap grouped inputs/outputs, invert inputs/outputs, filter inputs and set output pulse time.
Input Grouping
Certain applications require combining two inputs into a single DPI input. This is done by grouping two neighboring pins, where the first pin in the pair must be odd-numbered . When grouped, the second pin in the pair is not used anymore – all requests to this pin will generate an error.
Example:
- Valid: IN1 and IN2 (IN2 becomes unused).
- Invalid: IN2 and IN3.
Input grouping can be achieved via IOMod utility application under the IOMod settings tab (Fig. 5.3.7.3)
Fig. 5.3.7.3 Input grouping settings on IOMod utility app
Swap grouped inputs
Grouped inputs are referred to as Double Point Information (DPI). DPI signals consist of two bits of information, allowing for four possible states, thus providing more detail compared to single-point inputs. For example: The INDETERMINATE state might indicate that part of the equipment is turned off or that a mechanical component responsible for switching is stuck between states. The ERROR state could signify that both contacts are connected, possibly indicating a short circuit in the equipment.
Value | Representation |
00 | INDETERMINATE |
01 | OFF |
10 | ON |
11 | ERROR |
Practical usage example of Swap Grouped Inputs setting: In a typical configuration, an active IN1 indicates the OFF position, and an active IN2 indicates the ON position. However, if a technician accidentally mismatches the cables during installation, resulting in IN1 indicating ON and IN2 indicating OFF, the Swap Grouped Inputs setting allows the positions of the inputs to be swapped without requiring any physical reconnection of the cables.
Swap grouped inputs can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.3.7.4)
Fig 5.3.7.4 Swap grouped inputs setting on IOMod utility application
Input inversion
Enables logical inversion of signal states. If the user wants the input status to display as "ON" when the input signal is in a low state, the inputs can be logically inverted
When input inversion is enabled, the input state will show 1 (ON) when no signal is connected and will change to 0 (OFF) when the input is activated.
Note: The input indication LEDs are not affected by this inversion and will continue to reflect the actual signal state.
Example:
Input 2 has input inversion enabled in the IOMod Utility application. Both inputs, IN1 and IN2, are physically activated, and the LEDs on the IOMod are lit for both inputs. However, on the SCADA system:
- IN1 will be displayed as "1" (ON).
- IN2 will be displayed as "0" (OFF) due to the input inversion setting.
Input inversion can enabled via IOMod utility application under the IOMod settings tab (Fig. 5.3.7.5)
Fig. 5.3.7.5 Input inversion setting on IOMod utility application
Input Filtering
The filter time specifies the duration for which the input must remain stable before a status change is transmitted. The time interval is set in milliseconds. The default interval is 50ms.
Input filter time can be set in the IOMod utility application under the IOMod settings tab (Fig. 5.3.7.6)
Fig. 5.3.7.6 Input filter time setting on IOMod utility application
Output grouping
Certain applications require combining two outputs into a single (DPI) output. This is done by grouping two neighboring pins, where the first pin in the pair must be odd-numbered. When grouped, the second pin in the pair is not used anymore – all requests to this pin will generate an error.
Example:
- Valid: DO1 and DO2 (DO2 becomes unused).
- Invalid: DO2 and DO3.
The function type of the output commands has to be 254. Info number represents the number of output pins (1-8 accordingly).
- 1: DO1 and DO2 pair
- 3: DO3 and DO4 pair
- 5: DO5 and DO6 pair
- 7: DO7 and DO8 pair
Output grouping can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.7)
Fig. 5.2.7.7 Group outputs settings
Swap grouped outputs
If desired, output groups can be swapped. Grouped Output Swapping allows you to exchange the positions of the grouped pins. After swapping, the even-numbered pin can become the first pin in the pair, and the odd-numbered pin follows. For instance, if DO1 and DO2 are grouped, you can swap their positions so that DO2 becomes the first in the pair.
Swap grouped outputs can be enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.8 )
Fig. 5.2.7.8 Swap grouped outputs settings
Invert outputs
Enables logical inversion of signal states. If the user wants the output status to display as "ON" when the output is not activated, the output can be logically inverted
When output inversion is enabled, the output state will show 1 (ON) when when the output is not activated and will change to 0 (OFF) when the output is activated.
Note: The output indication LEDs are not affected by this inversion and will continue to reflect the actual signal state.
Example:
Output 2 has output inversion enabled in the IOMod Utility application. Both outputs, DO1 and DO2, are activated, and the LEDs on the IOMod are lit for both outputs. However, on the SCADA system:
- DO1 will be displayed as "1" (ON).
- DO2 will be displayed as "0" (OFF) due to the output inversion setting.
Output inversion can enabled via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.9)
Fig. 5.2.7.9 output inversion settings
Output short pulse
Users can configure outputs to be pulse controlled – it means that output will be turned on for the configured amount of time. When this time runs out, output is turned off. This is useful when pulse toggle relays are used. The output pulse is independent of the output grouping option and can be used on both grouped and ungrouped outputs.
The IEC103 protocol has settings short pulse commands. Short pulse interval is set in milliseconds The default value is 1000 ms, Setting the value to 0 will disable the pulse function.
Output short pulse can be set via IOMod utility application under the IOMod settings tab (Fig. 5.2.7.10)
Fig. 5.2.7.10 output pulse settings