# IOMOD 16DI # Firmware version 1 # IOMOD 16DI User Manual Modbus ### Introduction IOMOD 16DI is small sized stand-alone Modbus (RTU) or IEC 60870-5-103 digital input controller. IOMOD is used for industrial applications, where digital signaling is used and robust communication is needed. IOMOD is ideal solution for applications such as data acquisition, observation, process monitoring, testing and measurement at remote places. It is controlled over Modbus or IEC 60870-5-103 protocol, and can be used with any SCADA system. ### Features - 16 digital inputs with configurable active signal polarity, or input inversion; Pulse count and ON time count - Galvanically isolated inputs - Configurable over USB - Drag And Drop firmware upgrade over USB - RS485 communication - LED input indications, + Data transmission (Rx and Tx) indication. - Small sized case with removable front panel - DIN rail mount - Operating temperature: from -30 to +70°C - Power Requirements: 12-24 VDC ### Device operational information IOMOD 16DI uses Modbus (RTU) or IEC 60870-5-103 protocol over the RS485 interface. The protocol used by the device can be changed by uploading the corresponding firmware. Default communication settings are: 9600 baudrate, 8N1, Slave address - 1. #### Status LED Status LED can be in 2 colors : Blue - Device connected to USB. Green - Normal operation. #### Rx/Tx LED The RX/TX LED on the IOMod flashes when data is either being transmitted or received via the RS485 port. ### MODBUS operational information To read all input statuses, send 02 Modbus command (Read Discrete Inputs) 03 Modbus command with resolution of first register (0) and a size of 16. Returned value will show 16 input states. To read all input registers’ values, send 04 Modbus command (Read input registers) with resolution of first register (0) and size of 80. Returned data will show pulse count (first register) and ON time (2nd and 3rd registers) for each input – pulse count of input #2 will be at register 4th, and so on. ON time will be shown as seconds. ON time and pulse count will increase when input pulse is longer than Filter time, which is configured by user in USB terminal menu. Shorter pulses will be ignored in both pulse and ON time registers. From software version 1.10, as capacity of input counter expanded to 32-bits, additional 32 registers depict such wider values in registers 00048-00079. All these registers can be set by using 06 Modbus command. To invert input states by software, configure device over USB terminal. Modbus commands one may use are shown in table below. ### Supported MODBUS functions 02 (0x02) Read Discrete Inputs Reads status of digital inputs (Off or On). IOMOD 16DI has 16 digital inputs from address 0 to address 0xF; These inputs are active-high or active-low according to supply given to reference input. User can turn on logical input inversion (through USB). 03 (0x03) Read Holding Registers Lets user read counter/timer values dedicated to digital inputs. There are 80 MODBUS registers. Values held in these registers are explained in a table below. There are two types of values - Pulse Counter and On Timer, the latter calculating the time that respective input was held in its active state. 04 (0x04) Read Input Registers Lets user read counter/timer values dedicated to digital inputs. There are 80 MODBUS registers. Values held in these registers are explained in a table below. There are two types of values - Pulse Counter and On Timer, the latter calculating the time in seconds that respective input was held in its active state. This function is deprecated and mirrors function 0x03 to conform to past versions of IOMOD 16DI. 06 (0x06) Preset Single Register Sets single register. Register addresses are identical to *“Read Input Registers”* addresses. ### Modbus register mapping table
**Register** **Description** **Value range**
**Read discrete inputs (02)**
00000-00015 Reading digital inputs DI1-DI16 0-65535
**Read holding register (03), Read input register (04), Preset Single Register (06)**
00000 Pulse count for DI1, Least Significant Word 0-65535
00001-00002 On time, in seconds, for DI1, Least Significant Word first 0-65535
... ...
00045 Pulse count for DI16, Least Significant Word 0-65535
00046-00047 On time, in seconds, for DI16, Least Significant Word first 0-65535
00048-00079 Pulse count for DI1-DI16, Least Significant Word First 0-65535
\*It is advised to set most significant word of counter/timer first ### Testing With “THE VINCI” software To test IOMOD with default settings, user connects device through RS485 to Modbus master. Example using “The Vinci Expert” device as serial interface converter and adapter to PC with “The Vinci” software. Default settings for Modbus – 9600 baudrate; 8 data, no parity, 1 stop bit. When opening “The Vinci” software, choose Modbus serial – Master mode. In settings tab, choose station number (default – 1); configure tags (as described in section 2. Device working information); Press start and go to “Statistic” tab: [![image-1623934325077.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934325077.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934325077.png)Fig. 3.1. Statistic tab in “The Vinci” application for Modbus communication As seen in Fig. 3.1, Inputs are shown with info numbers 1-16, and function type - 160. GI, time synchronization options can be found at right side of the program, in “System” tab. Fig. 3.2 shows 1st + 2nd , 5th + 6th and 11th + 12th Inputs grouped (notice order of info numbers). These pairs is shown INTERM (00) because both inputs of pair are off (giving binary representation of 00b). [![image-1623934360802.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934360802.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934360802.png) Fig.3.2. Statistic tab in “The Vinci” application for IEC-60870-5-103 ### Technical information
**System**
1.Dimensions 101 x 119 x 17.5, mm
2.Case ABS, black
3.Working environment Indoors
4.Working temperature -30 ⎟ +70°C
5.Recommended operating conditions 5 – 60°C and 20 – 80%RH;
6.Configuration USB
7.Firmware upgrade USB – mass storage device
**Electrical specifications**
8.Inputs 16 X 2kV isolated 12-24VDC; ESD protected; Selectable inversion.
**Power**
9.Power Supply 9V to 33V
10\. Current consumption 50mA @ 12VDC, 25mA @ 24VDC
### Mounting and installation guide ##### IOMOD 16DI RS485 interface IOMOD 16DI has integrated 120Ω termination resistor which can be enabled or disabled over USB configuration. It is recommended to use termination at each end of the RS485 cable. See typical connection diagram on Fig. 5.1. [![image-1623934557580.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934557580.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934557580.png) Fig. 5.1. Connection example IOMOD 16DI has 1/8 Unit load receiver which allows to have up to 256 units on line (compared to standard 32 units). To reduce reflections, keep the stubs (cable distance from main RS485 bus line) as short as possible when connecting device. ##### IOMOD 16DI inputs Typical application of IOMOD 16DI inputs is shown on Fig. 5.2. When default configuration for inputs is applied, user will see inputs connected to +12/24V as “high” or state “1” and input status LED will glow. [![image-1651664405242.png](https://wiki.elseta.com/uploads/images/gallery/2022-05/scaled-1680-/image-1651664405242.png)](https://wiki.elseta.com/uploads/images/gallery/2022-05/image-1651664405242.png) Fig. 5.2. Input configuration example User can setup inputs to be driven by 0V (active low) signal (see Fig. 5.3). With this configuration, user will see inputs connected to 0V as “high” or state “1”, input status LED will glow. [![image-1651664414507.png](https://wiki.elseta.com/uploads/images/gallery/2022-05/scaled-1680-/image-1651664414507.png)](https://wiki.elseta.com/uploads/images/gallery/2022-05/image-1651664414507.png) Fig. 5.3. Configuration of inverted inputs ### Configuration over USB ##### Driver installation Device requires USB drivers to work as virtual com port. First-time connection between device and computer could result in “Device driver software was not successfully installed” error (Fig. 6.1). [![image-1623934684137.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934684137.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934684137.png)Fig. 6.1. Device driver error message User then manually installs drivers by selecting downloaded driver folder: Go to Control Panel -> Device Manager; Select failed device; Press “Update driver software”; following screen should appear (Fig 6.2). [![image-1623934717824.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934717824.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934717824.png)Fig. 6.2. Manually searching for device drivers Select “x86” driver for 32bit machine, or x64 for 64bit machine. If not sure, select root folder (folder in which x64 and x86 lays inside). [![image-1623934741093.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934741093.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934741093.png)Fig. 6.3. Contents of device drivers’ folder ##### IOMOD configuration with PuTTY terminal Configuration of IOMOD device is done through CLI (Command Line Interface) on virtual COM port. Drivers needed for MS Windows to install VCOM will be provided. To open up CLI simply connect to specific V-COM port with terminal software (advised to use PuTTY terminal software. If other software is being used, user might need to send <return> symbol after each command). When connected user should immediately see main screen: [![image-1623934780787.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623934780787.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623934780787.png)Fig. 6.4. Main menu example of configuration program via CLI Navigation is performed by sending number to terminal. User then proceeds by following further on-screen instructions. For example, to set Baudrate, press \[2\] to enter Baudrate screen; press \[1\] to edit; enter new configuration; press \[RETURN\] to save, or \[ESC\] to cancel changes. When done, press \[0\] (exit) before disconnecting device. Default values is set by pressing \[6\] on main screen, and confirming changes \[1\]. If accidentally closed the terminal window, user can connect terminal program again, and press any key on keyboard to show up main menu. ##### Main Menu Modbus
**Menu Name** **Function** **Values** **Default Values**
1\. Slave Address Modbus Slave address / ID 1-247 (default: 1)
2\. Communication settings Enters baudrate, data and parity bit, termination resistor screen - (default: 9600; 8+1+N; termination resistor - on)
3\. Input State Inversion Input inversion (Inverts input states in modbus) 0 - 1 (off/on) (default: 0)
5\. Input Filter time Configures input pulse filter time 0 – 256000 (milliseconds) (default: 100)
6\. Input counter restart Restarts all input counter registers to 0 (1 to confirm, 0 to cancel) -
7\. Set Default Settings Sets Default Settings (1 to confirm, 0 to cancel) -
8\. Firmware Upgrade Mass Storage Device Firmware Upgrade (1 to confirm, 0 to cancel) -
9\. Diagnostics Input states - -
0\. Exit Exit and disconnect - -
##### Protocol simulator After entering diagnostics screen, user can turn on protocol simulator by pressing \[9\]. When protocol simulator is turned on, device will communicate through USB port rather than RS-485 line. Communication on RS-485 line is closed and all Modbus commands will be accepted only from USB. To exit this mode user must restart device. ##### Firmware upgrade over USB [![image-1623914467899.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623914467899.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623914467899.png)It is recommended to close terminal window when entered firmware upgrade mode. [![image-1623935180203.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623935180203.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623935180203.png)Fig. 6.5. Reconnecting as a mass storage device User then must delete existing file “firmware.bin”, and simply upload new firmware file by drag and drop. [![image-1623935213196.png](https://wiki.elseta.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623935213196.png)](https://wiki.elseta.com/uploads/images/gallery/2021-06/image-1623935213196.png)Fig. 6.6 Reconnect device, check firmware version and **set default settings**. # IOMOD 16DI User Manual IEC 60870-5-103 ### Introduction IOMOD 16DI is small sized stand-alone Modbus (RTU) or IEC 60870-5-103 digital input controller. IOMOD is used for industrial applications, where digital signaling is used and robust communication is needed. IOMOD is an ideal solution for applications such as data acquisition, observation, control, process monitoring, testing and measurement at remote places. It is controlled over Modbus or IEC 60870-5-103 protocol, and can be used with any SCADA system. ### Features - 16 digital inputs; - Configurable active input signal polarity or input inversion; - Galvanically isolated inputs; - Configuration over USB console; - Drag and Drop firmware upgrade over USB mass storage; - Modbus, IEC-60870-5-103 communication over RS485; - Values with data and time information; - Time synchronization over IEC-60870-5-103; - Software selectable termination resistor on RS485; - LED indication for input and data transmission; - Easy integration with WCC Lite gateway and CloudIndustries.eu platform ### Operational information IOMOD 16DI uses Modbus (RTU) or IEC 60870-5-103 protocol over RS485 interface. Protocol used by device can be changed by uploading a corresponding firmware. Default communication settings are: 9600 baud rate, 8N1, Slave address - 1. #### Status LED Status LED can be in 2 colors : Blue - Device connected to USB. Green - Normal operation. #### Rx/Tx LED The RX/TX LED on the IOMod flashes when data is either being transmitted or received via the RS485 port. ### IEC 60870-5-103 description **Initialization:** IOMOD uses a standard IEC-60870-5-103 communication scheme. Initiation, control messages and queries are initiated by the master (controlling station), while IOMOD device (controlled station) only answers these requests. Therefore, the first message should be sent by master to start/restart communication (RESET CU or LINK RESET FCB). This message is answered by IOMOD with an acknowledgement (ACK) to enable master to proceed with sending other messages defined by IEC-60870-5-103 protocol. Other messages are ignored until a successful initialization has taken place. IOMOD 8DI8DO configuration can be changed over USB interface with terminal console like PuTTY or similar. **Data polling:** When initialization is complete, master may poll IOMOD device with both Class 1 and Class 2 requests. Class 2 is used when master polls for a cyclic data. Controlled device answers with a message containing Access Demand flag when spontaneous data exists and master then sends request for Class 1. IOMOD would then respond with time-tagged message. On first Class 1 request IOMOD device always asks for the Access Demand to send an identification string. However, if there are spontaneous messages to be sent, they will be sent before the identification string. **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 – 160), 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. **Time synchronization:** To initiate the time synchronization between devices master must send variable frame, with function code “User data with ACK”, ASDU type “6” and Cause of Transmission “8”. Info elements must contain the 7-byte time structure. As per IEC-60870-5-103 protocol specification time synchronization can be completed for multiple devices using broadcasting messages. It is included in IEC-60870-5-103 firmware since version 1.7.3. To broadcast time synchronization message, link address should be equal to 255. **General interrogation:** General Interrogation (GI) is initiated by the master with variable frame, including function code “3” (User data with ACK), ASDU type “7” and Cause of Transmission “9”. Slave device then responds with an acknowledgement (ACK). Master gets GI data by polling with Class 2 request till slave transmits “End of GI” (Cause of Transmission – “10”). IOMOD device responds with a time-tagged message, including DPI states of inputs and outputs (Outputs are sent first). Output and input numbers are represented by “Info number” in protocol. ### Device configuration **Input inversion and polarity selection:** Input polarity selection (active signal selection) is done by connecting appropriate supply to COM pin. Further explained in section 5: Mounting and installation guide. Input inversion does logical inversion of signals. **Input grouping:** Sometimes two inputs must be captured as one DPI input. Inputs can be grouped into pairs of two. Only two neighbour pins can be grouped into pair, while first pin in pair must be an odd number pin. When grouped, second pin in the pair is not used anymore – all request to this pin generate an error. For example – IN1 and IN2 can be grouped, after that IN2 is not used; IN2 and IN3 *cannot* be grouped; IN3 and IN4 can be grouped, but IN4 is not used, etc. Fig. 3.1 shows inputs ungrouped and controlled independently. In this mode, General Interrogation will be composed of 16 input states. Notice +VIO and –VIO connection: when COM is connected to negative power supply voltage, inputs are controlled by positive voltage. [![image-1651665540066.png](https://wiki.elseta.com/uploads/images/gallery/2022-05/scaled-1680-/image-1651665540066.png)](https://wiki.elseta.com/uploads/images/gallery/2022-05/image-1651665540066.png) In addition to this, Fig. 3.2 shows 1st + 2nd and 11th + 12th inputs are grouped into pair. Now, General Interrogation will be composed of 14 input states (with IN2 and IN12 missing). Input numbers is represented by “Info number” in protocol. Here, COM is connected to positive voltage of power supply and inputs are controlled by negative voltage. [![image-1651665549993.png](https://wiki.elseta.com/uploads/images/gallery/2022-05/scaled-1680-/image-1651665549993.png)](https://wiki.elseta.com/uploads/images/gallery/2022-05/image-1651665549993.png) **Input filter:** Input filter is a simple input glitch filter with a time input. This filter time corresponds to time that input must achieve without changing state before sending status change. **Addressing configuration:** Devices Input address is configurable. This addresses in IEC 60870-5-103 protocol is considered as “Function Type”. Input address is 160 by default. Device is addressed in the line as “Link address”, which is 1 by default. ### Testing With “THE VINCI” software To test IOMOD with default settings, user connects device through RS485 to IEC 60870-5-103 master. Example using “The Vinci Expert” as serial interface converter and adapter to PC with “The Vinci” software. When opening “The Vinci” software, choose IEC 60870-5-103 – Master mode. Initial settings – 9600 baud rate; 8 data, no parity, 1 stop bit. Press Start, send Time synchronization, General interrogation and go to the “Statistic” tab: As seen in Fig. 3.3, Inputs are shown with info numbers 1-16, function type - 160. General Interrogation, Time Synchronization options can be found at right side of the program, in the “System” tab. [![image-1638372371127.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372371127.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638372371127.png) Fig. 3.4 shows 1st + 2nd, 5th + 6th and 11th + 12th inputs grouped (notice order of info numbers). These pairs are shown INTERM (00) because both inputs of pair are off (giving binary representation of 00b). [![image-1638372367941.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372367941.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638372367941.png) # Technical information
**System**
Dimensions 101 x 119 x 17.5, mm
Case IP20, blend PC/ABS self-extinguishing, black
Working environment Indoors
Operating temperature -40 ¸ +85°C
Humidity 5-95% RH (non-condensing)
Configuration USB – serial console
Firmware upgrade USB – mass storage device
**Electrical specifications**
Inputs 16 X 3kV isolated 12-24VDC; Selectable inversion.
**Power**
Power Supply 9V to 33V
Current consumption 130 mA
# Mounting and installation guide ### IOMOD 16DI RS485 interface IOMOD 16DI has an integrated 120Ω termination resistor which can be enabled or disabled over USB configuration. It is recommended to use termination at each end of the RS485 cable. See typical connection diagram on Fig. 5.1. [![image-1638372358166.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372358166.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638372358166.png) IOMOD 16DI has 1/8 Unit load receiver which allows to have up to 256 units on line (compared to standard 32 units). To reduce reflections, keep the stubs (cable distance from main RS485 bus line) as short as possible when connecting device. ### IOMOD 16DI inputs Typical application of IOMOD 16DI inputs is shown on Fig. 5.2. When default configuration for inputs is applied, user will see inputs connected to +12-24V as “high” or state “1” and input status LED will glow. [![image-1651666344898.png](https://wiki.elseta.com/uploads/images/gallery/2022-05/scaled-1680-/image-1651666344898.png)](https://wiki.elseta.com/uploads/images/gallery/2022-05/image-1651666344898.png) User also can configure to enable pull-up resistors (function is applied for all inputs) and software input inversion. With this configuration, user will see inputs connected to 0V (see Fig. 5.3) as “high” or state “1”, input status LED will NOT glow # Configuration over USB ### Driver installation Device requires USB drivers to work as a Virtual COM port. First-time connection between device and computer could result in “Device driver software was not successfully installed” error. [![image-1638372342431.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372342431.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638372342431.png) User then manually installs drivers by selecting downloaded driver folder: Go to Control Panel -> Device Manager; Select failed device; Press “Update driver software”; following screen should appear: [![image-1638372337090.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372337090.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638372337090.png) Select “x86” driver for 32bit machine, or x64 for 64bit machine. If not sure, select root folder (folder in which x64 and x86 lays inside). [![image-1638372333607.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372333607.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638372333607.png) ### IOMOD configuration with PuTTY terminal Configuration of IOMOD device is done through CLI (Command Line Interface) on virtual COM port. Drivers needed for MS Windows to install VCOM will be provided. To open up CLI simply connect to specific V-COM port with terminal software (advised to use PuTTY terminal software. If other software is being used, user might need to send <return> symbol after each command). When connected user should immediately see main screen as in Fig. 6.4. [![image-1638369873983.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369873983.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369873983.png) Navigation is performed by sending number to terminal. User then proceeds by following further on-screen instructions. For example, to set baud rate, press \[2\] to enter Baudrate screen; press \[1\] to edit; enter new configuration; press \[RETURN\] to save, or \[ESC\] to cancel changes. When done, press \[0\] (exit) before disconnecting device. Default values is set by pressing \[6\] on main screen, and confirming changes \[1\]. If accidentally closed the terminal window, user can connect terminal program again, and press any key on keyboard to show up main menu. Main menu contains various possibilities of device configuration. A user can configure Link Address (Fig. 6.5), set communication settings (Fig. 6.6), change the input type (address) for input values (Fig. 6.7), change which input values are inverted (Fig. 6.8). [![image-1638369844931.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369844931.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369844931.png) [![image-1638369836116.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369836116.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369836116.png) [![image-1638369826344.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369826344.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369826344.png) [![image-1638369811113.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369811113.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369811113.png) [![image-1638369798095.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369798095.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369798095.png) ### Main Menu
**Menu Name** **Function** **Values** **Default Values**
1\. Link Address Setts Link address 1-255 1
2\. Baudrate, Parity and stop bits Enters configuring screen for communication settings 8+1 or 8+2 (Data+Stop), None, Odd, Even, Mark, Space (Parity) 9600, 8+1, Parity -None
3\. Data addressing config Enters configuring screen for Input address (function type) 1 – 255 160
4\. RS485 Terminating Resistor RS485 120 Ohms Terminating Resistor 0 - 1 (off/on) 1
5\. Input state inversion Input inversion (Inverts input states in protocol logic) 0 - 1 (off/on) 0 (not inverted)
6\. Input configure Enters screen for configuring (see 6.1 – 6.5 rows below) - -
6.1 Input grouping; Groups or ungroups inputs 16 inputs ungrouped / 8 pairs grouped All inputs ungrouped by default
6.2 Input filter time; Input glitch filter – minimum stable time to detect input 1 – 60000 milliseconds 100
7\. Set Default Settings Sets Default Settings (1 to confirm, 0 to cancel) -
8\. Firmware Upgrade Mass Storage Device Firmware Upgrade (1 to confirm, 0 to cancel) -
9\. Diagnostics Input states - -
0\. Exit Exit and disconnect - -
### Protocol simulator When entered diagnostics screen, user can turn on protocol simulator by pressing \[9\]. When protocol simulator is turned on, device will communicate through USB port rather than RS-485 line. Communication on RS-485 line is closed and all IEC-103 commands will be accepted only from USB. To exit this mode user must restart device. ### Firmware upgrade over USB To update device firmware user must enter main configuration menu. Enter Firmware update screen by pressing \[4\]; Confirm update by pressing \[1\]; Device now enters Firmware Upgrade mode. [![image-1638369763954.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369763954.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369763954.png) Device reconnects as mass storage device: [![image-1638369740771.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369740771.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369740771.png) User then must delete existing file “firmware.bin”, and simply drag and drop new firmware file. [![image-1638369674953.png](https://wiki.elseta.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638369674953.png)](https://wiki.elseta.com/uploads/images/gallery/2021-12/image-1638369674953.png) Reconnect device, set default settings and check firmware version in Diagnostics screen. # IOMOD 16DI User Manual IEC 60870-5-101
### Introduction IOMOD 16DI is small sized stand-alone Modbus (RTU) or IEC 60870-5-101 digital input controller. IOMOD is used for industrial applications, where digital signaling is used and robust communication is needed. IOMOD is an ideal solution for applications such as data acquisition, observation, control, process monitoring, testing and measurement at remote places. It is controlled over Modbus or IEC 60870-5-101 protocol, and can be used with any SCADA system. ### Features
- 16 digital inputs; - Configurable active input signal polarity or input inversion; - Galvanically isolated inputs; - Configuration over USB console; - Drag and Drop firmware upgrade over USB mass storage; - Modbus, IEC-60870-5-101 communication over RS485; - Values with data and time information; - Time synchronization over IEC-60870-5-101; - Software selectable termination resistor on RS485; - LED indication for input and data transmission; - Easy integration with WCC Lite gateway and CloudIndustries.eu platform ### Operational information IOMOD 16DI uses Modbus (RTU) or IEC 60870-5-101 protocol over RS485 interface. Protocol used by device can be changed by uploading a corresponding firmware. Default communication settings are: 9600 baud rate, 8E1, Link address - 1. #### Status LED Status LED can be in 2 colors : Blue - Device connected to USB. Green - Normal operation. #### Rx/Tx LED The RX/TX LED on the IOMod flashes when data is either being transmitted or received via the RS485 port. ### IEC 60870-5-101 description #### Initialization IOmod uses a standard IEC-60870-5-101 communication scheme. Initiation, control messages, and queries are initiated by the master (controlling station), while the IOmod device (controlled station) only answers these requests. Therefore, the first message should be sent by the master to request status of link (function code = 9). This message is answered by IOmod with the status of link (function code = 11) if link is available. Otherwise there is going to be no response. After receiving the status of link the master will send Reset of remote link command (function code = 0) to restart the communication. The IOMod can respond with either acknowledgment (function code = 0, ACK) or Negative Acknowledgment (function code = 1, NACK). If IOMod respond is ACK then the initialization procedure is finished. The described procedure enables the master to proceed with sending other messages defined by the IEC-60870-5-101 protocol. #### Data polling When initialization is complete, the master may request data from the IOmod device with general interrogation. Although according to the protocol specification IOMod will send data on value change. The 16DI IOMod responds with type 30 (M\_SP\_TB\_1) a single point value with a time tag. #### 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 a “Spontaneous” message with the 30 data types (M\_SP\_TB\_1), and “IOA” as the input pin number shifted by 16. #### Time synchronization To initiate the time synchronization between devices the master must send a Clock Sync command. The command type is C\_CS\_NA\_1 (103) and the Cause of Transmission (COT) has to be 6. The command has to be sent to the correct link address and CASDU, which is the same as the link address by default. If the sent frame is correct the IOMod will respond with a C\_CS\_NA\_1 (103) type command with the COT (cause of transmission) of 7 and the **p/n** bit will be positive (0) also the command will be time-tagged with the **device** time. If the time synchronization feature is disabled or the command is sent to an undefined CASDU the response is the same except the **p/n** bit will be negative (1). #### General interrogation General Interrogation (GI) is initiated by the master sending the General Interrogation command. The command type is C\_IC\_NA\_1 (100) and the Cause of Transmission (COT) has to be 6. The command has to be sent to the correct link address and CASDU, which is the same as the link address by default. If the sent frame is correct the IOMod will respond with a C\_IC\_NA\_1 (103) type command with the COT (cause of transmission) of 7 and the **p/n** bit will be positive (0). Otherwise, it will respond with the same command just that the **p/n** bit will be negative (1). Then the device will begin to send all of its data. After that's done the IOMOD will also send another 100 type command with the COT (cause of transmission) of 10 (ActTerm) meaning the general interrogation is over.
IOAs \[1,16\] - inputs ### Device configuration **Input inversion and polarity selection:** Input polarity selection (active signal selection) is done by connecting appropriate supply to COM pin. Further explained in section 5: Mounting and installation guide. Input inversion does logical inversion of signals. **Input grouping:** Sometimes two inputs must be captured as one DPI input. Inputs can be grouped into pairs of two. Only two neighbor pins can be grouped into pair, while first pin in pair must be an odd number pin. When grouped, second pin in the pair is not used anymore – all request to this pin generate an error. For example – IN1 and IN2 can be grouped, after that IN2 is not used; IN2 and IN3 *cannot* be grouped; IN3 and IN4 can be grouped, but IN4 is not used, etc.
Fig. 1. shows inputs ungrouped and controlled independently. In this mode, General Interrogation will be composed of 16 input states. Notice +VIO and –VIO connection: when COM is connected to negative power supply voltage, inputs are controlled by positive voltage. [![image-1668411587059.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411587059.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411587059.png) Fig. 1. In addition to this, Fig. 2. shows 1st + 2nd and 11th + 12th inputs are grouped into pair. Now, General Interrogation will be composed of 14 input states (with IN2 and IN12 missing). Input numbers is represented by “Info number” in protocol. Here, COM is connected to positive voltage of power supply and inputs are controlled by negative voltage. [![image-1668411609185.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411609185.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411609185.png) Fig. 2. **Input filter:** Input filter is a simple input glitch filter with a time input. This filter time corresponds to time that input must achieve without changing state before sending status change. **Addressing configuration:** Devices Input address is configurable. This addresses in IEC 60870-5-101 protocol is considered as “Function Type”. Input address is 160 by default.
Device is addressed in the line as “Link address”, which is 1 by default. # Technical information
**System**
Dimensions 101 x 119 x 17.5, mm
Case IP20, blend PC/ABS self-extinguishing, black
Working environment Indoors
Operating temperature -40 ¸ +85°C
Humidity 5-95% RH (non-condensing)
Configuration USB – serial console
Firmware upgrade USB – mass storage device
**Electrical specifications**
Inputs 16 X 3kV isolated 12-24VDC; Selectable inversion.
**Power**
Power Supply 9V to 33V
Current consumption 130 mA
# Mounting and installation guide ### IOMOD 16DI RS485 interface IOMOD 16DI has an integrated 120Ω termination resistor which can be enabled or disabled over USB configuration. It is recommended to use termination at each end of the RS485 cable. See typical connection diagram on Fig. 3. [![image-1668411662441.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411662441.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411662441.png) Fig. 3. IOMOD 16DI has 1/8 Unit load receiver which allows to have up to 256 units on line (compared to standard 32 units). To reduce reflections, keep the stubs (cable distance from main RS485 bus line) as short as possible when connecting device. ### IOMOD 16DI inputs
Typical application of IOMOD 16DI inputs is shown on Fig. 4. When default configuration for inputs is applied, user will see inputs connected to +12-24V as “high” or state “1” and input status LED will glow. [![image-1668411688668.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411688668.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411688668.png) Fig. 4. User also can configure to enable pull-up resistors (function is applied for all inputs) and software input inversion. With this configuration, user will see inputs connected to 0V as “high” or state “1”, input status LED will NOT glow # Configuration over USB ### Driver installation
Device requires USB drivers to work as a Virtual COM port. First-time connection between device and computer could result in “Device driver software was not successfully installed” error. [![image-1668411709047.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411709047.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411709047.png) User then manually installs drivers by selecting downloaded driver folder: Go to Control Panel -> Device Manager; Select failed device; Press “Update driver software”; following screen should appear: [![image-1668411726717.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411726717.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411726717.png) Select “x86” driver for 32bit machine, or x64 for 64bit machine. If not sure, select root folder (folder in which x64 and x86 lays inside). [![image-1668411745956.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411745956.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411745956.png) ### IOMOD configuration with PuTTY terminal
Configuration of IOMOD device is done through CLI (Command Line Interface) on virtual COM port. Drivers needed for MS Windows to install VCOM will be provided. To open up CLI simply connect to specific V-COM port with terminal software (advised to use PuTTY terminal software. If other software is being used, user might need to send <return> symbol after each command). When connected user should immediately see main screen as in Fig. 5. [![image-1668413364818.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668413364818.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668413364818.png) Fig.5 Navigation is performed by sending number to terminal. User then proceeds by following further on-screen instructions. For example, to set baud rate, press \[3\] to enter Baudrate screen; press \[1\] to edit; enter new configuration; press \[RETURN\] to save, or \[ESC\] to cancel changes. When done, press \[0\] (exit) before disconnecting device. Default values is set by pressing \[7\] on main screen, and confirming changes \[1\]. If accidentally closed the terminal window, user can connect terminal program again, and press any key on keyboard to show up main menu.
Main menu contains various possibilities of device configuration. A user can configure Link Address (Fig. 6.), set communication settings (Fig. 7.), change which input values are inverted (Fig. 8.). Fig. 9. shows diagnostics screen. [![image-1668414210521.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668414210521.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668414210521.png) Fig. 6. [![image-1668414303426.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668414303426.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668414303426.png) Fig. 7. [![image-1668414653531.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668414653531.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668414653531.png) Fig. 8. [![image-1668414774824.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668414774824.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668414774824.png) Fig. 9. ### Main Menu
**Menu name** **Function** **Values** **Default values**
1\. Link Address Setts Link address 1-255 1
2\. Baudrate, Parity and stop bits Enters configuring screen for communication settings 8+1 or 8+2 (Data + Stop), None, Odd, Even, Mark, Space (Parity) 9600, 8+1, Parity - Even
3\. RS485 Terminating Resistor RS485 120 Ohms Terminating Resistor 0 - 1 (off/on) 0
4\. Input state inversion Input inversion (Inverts input states in protocol logic) 0 - 1 (off/on) 0 (not inverted)
5\. Input configure Enters screen for configuring (see 5.1 – 5.2 rows below) - -
5.1 Input grouping; Groups or ungroups inputs 16 inputs ungrouped / 8 pairs grouped All inputs ungrouped by default
5.2 Input filter time; Input glitch filter – minimum stable time to detect input 1 – 60000 milliseconds 100
6\. Protocol settings Enters screen for protocol settings (see rows 6.1 - 6.2) - -
6.1 Toggle 24/56 bit time Time mode for info objects 24/56 56
6.2 Change IOA size IOA size 1-3 1
7\. Set Default Settings Sets Default Settings (1 to confirm, 0 to cancel) -
8\. Firmware Upgrade Mass Storage Device Firmware Upgrade (1 to confirm, 0 to cancel) -
9\. Diagnostics Input states - -
0\. Exit Exit and disconnect - -
### Protocol simulator When entered diagnostics screen, user can turn on protocol simulator by pressing \[9\]. When protocol simulator is turned on, device will communicate through USB port rather than RS-485 line. Communication on RS-485 line is closed and all IEC-101 commands will be accepted only from USB. To exit this mode user must restart device. ### Firmware upgrade over USB
To update device firmware user must enter main configuration menu. Enter Firmware update screen by pressing \[8\]; Confirm update by pressing \[1\]; Device now enters Firmware Upgrade mode. [![image-1668415408925.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668415408925.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668415408925.png) Device reconnects as mass storage device: [![image-1668411877014.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411877014.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411877014.png) User then must delete existing file “firmware.bin”, and simply drag and drop new firmware file. [![image-1668411895536.png](https://wiki.elseta.com/uploads/images/gallery/2022-11/scaled-1680-/image-1668411895536.png)](https://wiki.elseta.com/uploads/images/gallery/2022-11/image-1668411895536.png) Reconnect device, set default settings and check firmware version in Diagnostics screen. # Firmware version 2 # 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-1742470991145.png](https://wiki.elseta.com/uploads/images/gallery/2025-03/scaled-1680-/image-1742470991145.png)](https://wiki.elseta.com/uploads/images/gallery/2025-03/image-1742470991145.png) Fig. 1.2 IOMod 16DI internal structure and block diagram ### 2. Hardware data #### 2.1 Mechanical drawings [![16DI_mechanical_drawings.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/ue216di-mechanical-drawings.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/ue216di-mechanical-drawings.png) Fig. 2.1.1 IOMod 16DI side view with dimensions and terminals description. 1 - Digital inputs; 2 - Common inputs; 3 - RS485 interface; 4 - Power supply input [![16DI_mechanical_drawings_front.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/16di-mechanical-drawings-front.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/16di-mechanical-drawings-front.png) Fig. 2.1.2 IOMod 16DI front view with dimensions #### 2.2 Terminal connections IOMod 16DI has 22 terminals, which are depicted below: [![16DI_therminals.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/16di-therminals.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/16di-therminals.png) Fig. 2.2.1 IOMod 16DI terminals 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 DI1Digital 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 COMCommon
18 COMCommon
19 ARS485 input
20 BRS485 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](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1736168716724.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/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
**Name****LED color** **Description**
I1- I16🟠 (orange) Indicates input status
RX/TX 🟢 (green) Flashing 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**
Dimension101 x 119 x 17.5 mm
CaseABS, black
Working environmentIndoor
Operating temperature-40°C ... +85°C
Recommended operating conditions 5–60°C and 20–80%RH
ConfigurationUSB, RS485
Firmware upgradeUSB, RS485
**Electrical specifications**
Inputs Nominal input voltage range 4-33VDC (@current 1.3mA - 16mA)
Isolation 16 X 3kV(RMS)
**Power**
Power Supply9–33 VDC (full range)
Current consumption40 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-1742552204377.png](https://wiki.elseta.com/uploads/images/gallery/2025-03/scaled-1680-/image-1742552204377.png)](https://wiki.elseta.com/uploads/images/gallery/2025-03/image-1742552204377.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-1742552224056.png](https://wiki.elseta.com/uploads/images/gallery/2025-03/scaled-1680-/image-1742552224056.png)](https://wiki.elseta.com/uploads/images/gallery/2025-03/image-1742552224056.png) Fig. 4.1.2 Configuration of inverted polarity inputs #### 4.2 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.2.1). [![image-1736175534579.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1736175534579.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1736175534579.png) Fig. 4.2.1 Power supply inputs physical location #### 4.3 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, the user can connect to the IOMod to control its parameters and monitor data. [![image-1728042632848.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1728042632848.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1728042632848.png) Fig. 4.3.1 IOMod Utility interface and communication port parameters [![image-1736176976927.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1736176976927.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1736176976927.png) Fig. 4.3.2. IOMod 16DI USB connection port physical location ### 5. Parametrization ##### **IOMod 16DI default communication settings** Table 5.1 IOMod 16DI 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
Modbus 19200Even181
IEC 101 19200Even1811112
IEC 103 19200Even181 253
****

\*Default IOMod 16DI communication protocol is Modbus

#### 5.1 Device settings for **Modbus** protocol **Communication settings** IOMod 16DI configuration is performed via IOMod Utility (the manual can be accessed [here](https://wiki.elseta.com/books/tools-and-software/page/iomod-utility)). [![image-1738054807569.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738054807569.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738054807569.png)Fig. 5.1.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. See the table below for parameter ranges and default values (Table 5.1.1). Table 5.1.1 Communication parameters range and default values
**Parameter** **Range** **Default values**
Link address1-2561
Baudrate600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600, 76800, 11520019200
ParityNone, Odd, Even, Mark, SpaceEven
Stop bits1, 21
Terminating resistorEnable or disabledisabled
Bit wait time for packet8-2568
**General IOMod settings** More device parameters can be changed with IOMod utility under IOMod settings tab. For Modbus protocol user can set input inversion and input filter. [![image-1737990844035.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1737990844035.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1737990844035.png)Fig. 5.1.2 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.3) 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](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1737972795348.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1737972795348.png)** Fig. 5.1.3 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 50 ms. Input filter time can be set in the IOMod utility application under the *IOMod settings* tab (Fig. 5.1.4). [![image-1738140535616.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738140535616.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738140535616.png) Fig. 5.1.4 Input filter on IOMod utility app #### 5.2 Device settings for **IEC 60870-5-101** protocol IOMod 16DI configuration is performed via IOMod Utility application (the manual can be accessed [here](https://wiki.elseta.com/books/tools-and-software/page/iomod-utility)). [![image-1737991687263.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1737991687263.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1737991687263.png) Fig. 5.2.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, bit wait time, time synchronization timeout, link address size, ASDU size, COT size, and IOA size using the IOMod utility application (Fig 5.2.1) See the table below for parameter ranges and default values for IEC 60870-5-101 protocol (Table 5.2.1). Table 5.2.1 parameters range and default values of IOMod
**Parameter** **Range** **Default values**
Link address 1-65535\* 1
Baudrate600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600, 76800, 11520019200
ParityNone, Odd, Even, Mark, SpaceEven
Stop bits1, 21
Terminating resistorEnable or disabledisabled
Bit wait time for packet8-2568
Time synchronization timeout (s)1-65535300
Link address size1, 21
ASDU size1, 21
COT size1, 21
IOA size1, 2, 32

\*To use Link address value greater than 256, Link address size must be set to "2".

**General IOMod settings** More device parameters can be changed with IOMod utility application under IOMod settings tab. For the IEC 60870-5-101 protocol users can configure the following settings: input grouping, swap grouped inputs, invert inputs, and inputs filters. **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.2). [![image-1738071191375.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738071191375.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738071191375.png)Fig. 5.2.2 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. Table 5.2.2 Double-point states
**Value****State**
00indeterminate
01off
10on
11error
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.3). [![image-1738140588680.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738140588680.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738140588680.png)Fig. 5.2.3 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 input is deactivated 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.4) **[![image-1737972795348.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1737972795348.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1737972795348.png)** Fig. 5.2.4 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 50 ms. Input filter time can be set in the IOMod utility application under the *IOMod settings* tab (Fig. 5.2.5). [![image-1738140549451.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738140549451.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738140549451.png) Fig. 5.2.5 Input filter time setting on IOMod utility application #### 5.3 Device settings for **IEC 60870-5-103** protocol IOMod 16DI configuration is performed via IOMod Utility application (the manual can be accessed [here](https://wiki.elseta.com/books/tools-and-software/page/iomod-utility)). [![image-1738150245179.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738150245179.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738150245179.png) Fig. 5.3.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, bit wait time, time synchronization timeout, and input function using the IOMod utility application (Fig 5.3.1) See the table below for parameters range and default values for IEC 60870-5-103 protocol (Table 5.3.1). Table 5.3.1 parameters range and default values of IOMod
**Parameter** **Range** **Default values**
Link address 1-256 1
Baudrate600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 57600, 76800, 11520019200
ParityNone, Odd, Even, Mark, SpaceEven
Stop bits1, 21
Terminating resistorEnable or disabledisabled
Bit wait time for packet8-2568
Time synchronization timeout (s)1-65535300
Input function 253
**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. Input grouping can be achieved via IOMod utility application under the *IOMod settings* tab (Fig. 5.3.2). [![image-1738071191375.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738071191375.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738071191375.png)Fig. 5.3.2 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. Table 5.3.2 Double-point states
**Value****State**
00indeterminate
01off
10on
11error
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.3). [![image-1738140588680.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738140588680.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738140588680.png)Fig. 5.3.3 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.4). **[![image-1737972795348.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1737972795348.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1737972795348.png)** Fig. 5.3.4 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.5). [![image-1738140549451.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1738140549451.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1738140549451.png) Fig. 5.3.5 Input filter time setting on IOMod utility application ### 6. 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. 6.1) The Utility's interface allows users to connect to IOMod via USB port or RS485. More information about this tool and its installation can be found on detailed IOMod Utility manual [here](https://wiki.elseta.com/books/tools-and-software/page/iomod-utility). [![image-1737709648782.png](https://wiki.elseta.com/uploads/images/gallery/2025-01/scaled-1680-/image-1737709648782.png)](https://wiki.elseta.com/uploads/images/gallery/2025-01/image-1737709648782.png)Fig. 6.1 IOMod utility app protocol selection window #### 6.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. ##### 6.1.1 Modbus register mapping table Table 6.1.1 Modbus registers
**Discrete Inputs FC02**
**Address** **(Dec)** **Description** ** ** **Data type** **Access**
0 Read digital input DI1 BOOLEAN R
1 Read digital input DI2 BOOLEAN R
2 Read digital input DI3 BOOLEAN R
3 Read digital input DI4 BOOLEAN R
4 Read digital input DI5 BOOLEAN R
5 Read digital input DI6 BOOLEAN R
6 Read digital input DI7 BOOLEAN R
7 Read digital input DI8 BOOLEAN R
8 Read digital input DI9 BOOLEAN R
9 Read digital input DI10 BOOLEAN R
10 Read digital input DI11 BOOLEAN R
11 Read digital input DI12 BOOLEAN R
12 Read digital input DI13 BOOLEAN R
13 Read digital input DI14 BOOLEAN R
14 Read digital input DI15 BOOLEAN R
15 Read digital input DI16 BOOLEAN R
**Holding Register FC03**
**Address** **(Dec)** **Description** ** ** **Data type** **Access**
0 input 1 pulse count UINT16 RW
1-2 input 1 on time UINT32 RW
3 input 2 pulse count UINT16 RW
4-5 input 2 on time UINT32 RW
6 input 3 pulse count UINT16 RW
7-8 input 3 on time UINT32 RW
9 input 4 pulse count UINT16 RW
10-11 input 4 on time UINT32 RW
12 input 5 pulse count UINT16 RW
13-14 input 5 on time UINT32 RW
15 input 6 pulse count UINT16 RW
16-17 input 6 on time UINT32 RW
18 input 7 pulse count UINT16 RW
19-20 input 7 on time UINT32 RW
21 input 8 pulse count UINT16 RW
22-23 input 8 on time UINT32 RW
24 input 9 pulse count UINT16 RW
25-26 input 9 on time UINT32 RW
27 input 10 pulse count UINT16 RW
28-29 input 10 on time UINT32 RW
30 input 11 pulse count UINT16 RW
31-32 input 11 on time UINT32 RW
33 input 12 pulse count UINT16 RW
34-35 input 12 on time UINT32 RW
36 input 13 pulse count UINT16 RW
37-38 input 13 on time UINT32 RW
39 input 14 pulse count UINT16 RW
40-41 input 14 on time UINT32 RW
42 input 15pulse count UINT16 RW
43-44 input 15 on time UINT32 RW
45 input 16 pulse count UINT16 RW
46-47 input 16 on time UINT32 RW
#### 6.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. 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. Time synchronization is critical for logging events. To synchronize time, the master sends a Time Sync command C\_CS\_NA\_1 (103) with Cause of Transmission (COT) 6. According to the IEC 60870-5-101 protocol specification, time synchronization can be performed for multiple devices using broadcast messages. A master device sends a broadcast timesync command with a broadcast link address. This ensures consistent time-stamping for event recording and fault detection across the network. Table 6.2.1 IEC 60870-5-101 protocol registers
**IOA** **Description** **Type**
1 input 1 SPI event 30 (M\_SP\_TB\_1)
2 input 2 SPI event 30 (M\_SP\_TB\_1)
3 input 3 SPI event 30 (M\_SP\_TB\_1)
4 input 4 SPI event 30 (M\_SP\_TB\_1)
5 input 5 SPI event 30 (M\_SP\_TB\_1)
6 input 6 SPI event 30 (M\_SP\_TB\_1)
7 input 7 SPI event 30 (M\_SP\_TB\_1)
8 input 8 SPI event 30 (M\_SP\_TB\_1)
9 input 9 SPI event 30 (M\_SP\_TB\_1)
10 input 10 SPI event 30 (M\_SP\_TB\_1)
11 input 11 SPI event 30 (M\_SP\_TB\_1)
12 input 12 SPI event 30 (M\_SP\_TB\_1)
13 input 13 SPI event 30 (M\_SP\_TB\_1)
14 input 14 SPI event 30 (M\_SP\_TB\_1)
15 input 15 SPI event 30 (M\_SP\_TB\_1)
16 input 16 SPI event 30 (M\_SP\_TB\_1)
Table 6.2.2 IEC 60870-5-101 protocol register table for grouped inputs
**IOA** **Description** **Type**
1 input 1-2 DPI event 31 (M\_DP\_TB\_1)
3 input 3-4 DPI event 31 (M\_DP\_TB\_1)
5 input 5-6 DPI event 31 (M\_DP\_TB\_1)
7 input 7-8 DPI event 31 (M\_DP\_TB\_1)
9 input 9-10 DPI event 31 (M\_DP\_TB\_1)
11 input 11-12 DPI event 31 (M\_DP\_TB\_1)
13 input 13-14 DPI event 31 (M\_DP\_TB\_1)
15 input 15-16 DPI event 31 (M\_DP\_TB\_1)

*\* SPI - single-point information, DPI - double-point information*

Table 6.2.3 Double-point states
**Value****State**
00intermediate
01off
10on
11error
#### 6.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.
Time synchronization is critical for logging events. To synchronize time, the master sends a Time Sync command with function 0 and Cause of Transmission (COT) 8. According to the IEC 60870-5-103 protocol specification, time synchronization can be performed for multiple devices using broadcast messages. For broadcast time synchronization, the master device sends a periodic signal with a time stamp to synchronize the system time of slave devices. If synchronization fails, devices default to their local system time until they successfully resynchronize.
Table 6.3.1 IEC 60870-5-103 protocol registers
**Type** **INF** **FUN** **Description**
1 (M\_TTM\_TA\_3) 1 253 input 1 event
1 (M\_TTM\_TA\_3) 2 253 input 2 event
1 (M\_TTM\_TA\_3) 3 253 input 3 event
1 (M\_TTM\_TA\_3) 4 253 input 4 event
1 (M\_TTM\_TA\_3) 5 253 input 5 event
1 (M\_TTM\_TA\_3) 6 253 input 6 event
1 (M\_TTM\_TA\_3) 7 253 input 7 event
1 (M\_TTM\_TA\_3) 8 253 input 8 event
1 (M\_TTM\_TA\_3) 9 253 input 9 event
1 (M\_TTM\_TA\_3) 10 253 input 10 event
1 (M\_TTM\_TA\_3) 11 253 input 11 event
1 (M\_TTM\_TA\_3) 12 253 input 12 event
1 (M\_TTM\_TA\_3) 13 253 input 13 event
1 (M\_TTM\_TA\_3) 14 253 input 14 event
1 (M\_TTM\_TA\_3) 15 253 input 15 event
1 (M\_TTM\_TA\_3) 16 253 input 16 event
Table 6.3.2 IEC 60870-5-103 protocol register table for grouped inputs
**Type** **INF** **FUN** **Description**
1 (M\_TTM\_TA\_3) 1 253 input 1-2 event
1 (M\_TTM\_TA\_3) 3 253 input 3-4 event
1 (M\_TTM\_TA\_3) 5 253 input 5-6 event
1 (M\_TTM\_TA\_3) 7 253 input 7-8 event
1 (M\_TTM\_TA\_3) 9 253 input 9-10 event
1 (M\_TTM\_TA\_3) 11 253 input 11-12 event
1 (M\_TTM\_TA\_3) 13 253 input 13-14 event
1 (M\_TTM\_TA\_3) 15 253 input 15-16 event
Table 6.3.3 Double-point states
**Value****State**
00intermediate
01off
10on
11error