Skip to main content

IOMod 16DI user manual

1. Introduction

The IOMod 16DI is a compact, standalone digital input 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 in remote locations and integrates seamlessly with any SCADA system.

1.1 Features

  • 16 digital inputs
  • Pulse counting and ON-time measurement functionality
  • Galvanically isolated inputs 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 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

image-1738311523598.png

Fig 1.2 IOmod 16DI internal structure and block diagram

2. Hardware data

2.1 Mechanical drawings

16DI_mechanical_drawings.png

Fig. 2.1.1 IOMod 16DI side view with dimensions and terminals description. 1 - digital inputs; 2 - ground input; 3 - RS485 interface; 4 - power supply input

16DI_mechanical_drawings_front.png

Fig.2.1.2 IOMod 16DI front view with measurements


2.2 Terminal connections

IOMod 16DI has 22 terminals, which are depicted below:

16DI_therminals.png

Fig. 2.2.1 IOMod 16DI 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

DI1

 

 

 

 

 

 

 

 

 

 

 

 

Digital inputs

2

DI2

3

DI3

4

DI4

5

DI5

6

DI6

7

DI7

8

DI8

9

DI9

10

DI10

11

DI11

12

DI12

13

DI13

14

DI14

15

DI15

16

DI16

17

COM Common

18

COM Common

19

A RS485 input

20

B RS485 input

21

V- Power source input

22

V+ Power source input

2.3 Status indication

IOMod 16DI has LEDs (Fig. 2.3.1), which are used to indicate inputs, communication and power statuses

image-1736168716724.png

Fig. 2.3.1 IOMod 16DI LEDs physical location

The description of each IOMod 16DI LED can be  found in the table below:

Table 2.3.1 Description of LEDs

I1- I16

🟠 (orange)

Indicates input status

RX/TX

🟢 (green)

Blinking green light indicates active communication via RS485 interface.


STAT

🟢 (green)

Power source is connected to the power supply input.

🔵 (blue)

IOMod 16DI 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


Inputs

Nominal input voltage range

4-33VDC (@current 1.3mA - 16mA) 

Isolation

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

image-1738580267428.png

Fig. 4.1.1. Input configuration example

The user can configure the inputs to be driven by a 0V (active low) signal (see Fig. 4.1.2). With this configuration, inputs connected to 0V will be displayed as “high” or in state “1,” and the input status LED will illuminate.

image-1738580351078.png

Fig 4.1.2 Configuration of inverted polarity inputs

4.2  RS485 Interface

IOMod 16DI 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

rs485_connection_diagram.pngFig. 4.2.1 Typical IOMod connection diagram


4.3 Power supply

IOMod 16DI 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)

image-1736175534579.png

Fig. 4.3.1. Power supply inputs physical location

4.4 USB connection

The IOMod 16DI 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.

image-1728042632848.png

Fig. 4.4.1 IOMod Utility interface and communication port parameters

image-1736176976927.png

Fig. 4.4.2. IOMod 16DI USB connection port physical location

5. Communication protocols

The IOMod 16DI 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. The desired communication protocol can be selected using the IOMod Utility application (Fig. 5) 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.

image-1737709648782.pngFig. 5 IOMod utility app protocol selection window

IOMod 16DI default communication settings

Protocol

baudrate

parity

stop bits

wait byte count

slave address

link address size

ASDU size

COT size

IOA size

Input 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






 

*Default IOMod 16DI 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 16DI will send data only after receiving correct queries from a master device. Supported Modbus function codes: FC1, FC2, FC3, FC6 and FC16.

01 (0x01) Read Coil status
As the name implies, it is designed for reading digital data. In the context of IOMod 16DI FC1 requests allow to read digital input 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 16DI FC2 requests allow to read digital input 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.

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

Write

Read coil status (01)


0- 15

Reading digital inputs DI1-DI16


Read discrete inputs (02)


0- 15

Reading digital inputs DI1-DI16


Read holding register (03) 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

...

...

...

45

input 16 pulse count

accepts command with 6 or 16 function to change value

46- 47

input 16 on time

accepts command with 6 or 16 function to change value

Fig. 5.1.1 Modbus register table

5.1.2 Device settings for Modbus protocol

Communication settings

IOMod 16DI configuration is performed via IOMod Utility (the manual can be accessed here).

image-1738054807569.pngFig 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 inversion and input filter.

image-1737990844035.pngFig 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 be enabled via IOMod utility application under the IOMod settings tab image-1737972795348.png

Fig. 5.1.2.4 Input inversion on IOMod utlity 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)

image-1738140535616.png

Fig. 5.1.2.5 Input filter 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 16DI 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.

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 16DI, 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),
  • IOA: The input pin number
5.2.4 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.5 General Interrogation (GI)

The master initiates GI by sending a General Interrogation command:

  • 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 (Type 100) with COT = 10 (ActTerm) to indicate the GI process is complete.

5.2.6 Device settings for IEC 60870-5-101 protocol

IOMod 16DI configuration is performed via IOMod Utility application (the manual can be accessed here).

image-1737991687263.png

Fig 5.2.6.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.6.1) See the table below for parameter ranges and default values for IEC 60870-5-101 protocol (Fig 5.2.6.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

Fig 5.2.6.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 set: input grouping, swap grouped inputs, invert inputs and filter inputs.

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.

image-1738579994836.png

Input grouping can be achieved via IOMod utility application under the IOMod settings tab (Fig. 5.2.6.3) 

image-1738071191375.pngFig. 5.2.6.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 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.2.6.4)

image-1738140588680.pngFig 5.2.6.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)

image-1737972795348.png

Fig. 5.2.6.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.6.6) 

image-1738140549451.png

Fig. 5.2.6.6 Input filter time setting on IOMod utility application

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

  1. 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.
  2. 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.
  3. 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.
  4. 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. 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.3.4 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.5 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 Identification8 (General interrogation)
5.3.6 Device settings for IEC 60870-5-103 protocol

IOMod 16DI configuration is performed via IOMod Utility application (the manual can be accessed here).

image-1738150245179.png

Fig 5.3.6.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.6.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 set: input grouping, swap grouped inputs, invert inputs and filter inputs.

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.

image-1738580004118.png

Input grouping can be achieved via IOMod utility application under the IOMod settings tab (Fig. 5.3.6.3) 

image-1738071191375.pngFig. 5.3.6.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.6.4)

image-1738140588680.pngFig 5.3.6.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.6.5)

image-1737972795348.png

Fig. 5.3.6.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.6.6) 

image-1738140549451.png

Fig. 5.3.6.6 Input filter time setting on IOMod utility application