IOMOD 8DI8DO User Manual IEC 60870-5-103


IOmod 8DI8DO is a small size stand-alone Modbus RTU or IEC 60870-5-103 digital input and digital output controller (protocol depends on firmware). IOmod can be used for industrial applications, where digital signalling is used and robust communication is needed. IOmod is an ideal solution for applications such as data acquisition, control, process monitoring at remote places. This user manual is written for IEC 60870-5-103 protocol firmware version.


  • 8 digital inputs;

  • Configurable active input signal polarity or input inversion;

  • 8 digital open collector outputs;

  • Galvanically isolated inputs and outputs;

  • Pulsed or latched mode for individual outputs;

  • Possible output feedback measurement with inputs;

  • Configuration over USB console;

  • Values with data and time information;

  • Time synchronization over IEC-60870-5-103;

  • Drag and Drop firmware upgrade over USB mass storage;

  • Modbus RTU, IEC-60870-5-103 communication over RS485;

  • Software-selectable line termination resistor on RS485;

  • LED indication for input/output and data transmission;

  • Easy integration with WCC Lite gateway and platform;

Operational information

IOmod 8DI8DO uses Modbus RTU or IEC 60870-5-103 protocol to communicate with master device over RS485 interface. Protocol used by device can be changed by uploading corresponding firmware. Default communication settings are: 9600 baud rate, 8N1, Link address – 1.

IOmod 8DI8DO configuration can be changed over USB interface with terminal console like PuTTY or similar.

Status LED

Status LED can be in 3 colors :

Red - Missing power souce to the outputs.

Blue - Device connected to USB.

Green - Normal operation.


The RX/TX LED on the IOMod flashes when data is either being transmitted or received via the RS485 port.

IEC 60870-5-103 working information


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.

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.

Output control

To control device outputs master (controlling station) sends command conforming to the IEC-60870-5- 103 protocols. It should contain output address which is 128 by default. Info number represents number of output pin, while info elements shows DPI information of output state (1 – off, 2 – on, 0 - intermediate and 3 – not used (defines error)). Successful command is accepted with a positive acknowledge. Negative acknowledge is returned if the output is already set or if another command for the same output is already in progress and hasn’t finished yet.

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

When active low signalling is needed, user can configure input polarity. When internal pull-up resistors are turned on, all input statuses are turned on. When low signal is connected to input, status of that input is turned off. If user desires to turn input status on, when that input signal is low, user then inverts inputs logically. All input indication LED’s stay the same (are not inverted).

Input / Output grouping

Sometimes two inputs or two outputs must be captured as one DPI input or output. Inputs and outputs can be grouped into the pairs of two. This allows outputs to be controlled by one DPI command (of address of first output in the group). 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 requests for this pin generate an error. For example – OUT1 and OUT2 can be grouped, after that OUT2 is not used; OUT2 and OUT3 cannot be grouped; OUT3 and OUT4 can be grouped, but OUT4 is not used, etc.


Picture shows outputs and inputs ungrouped and controlled independently. In this mode, General Interrogation will be composed of 8 output states and 8 input states.


In addition to this, picture shows first two outputs grouped into pair, while 3rd and 4th inputs are grouped into pair. Now, General interrogation will be composed of 7 output states (with OUT2 missing), and 7 input states (with IN4 missing). Output and input numbers is represented by “Info number” in protocol.

Input filter

Input filter is a simple glitch filter with time input. This filter time corresponds to stable time that input must achieve before sending a status change.

Output pulse time

User can configure outputs to be pulse controlled – it means that output will be turned on for configured amount of time. When this time runs out, output is turned off. This is useful when pulse toggle relays are used. Output pulse is independent from output grouping option and can be used on both grouped and ungrouped outputs. When output is grouped, device will allow only one command completion at a time – when output is already turned ON, other “turn ON” requests will be responded with NACK. If user desires latching outputs to be used, output pulse time is set to 0.


Picture shows example of pulse output usage. In this example inputs and outputs are grouped, and output pulse time is set to 1s. When user sends ON command, OUT2 is pulsed for 1s, and relay is set. This will connect NO contact and IN2 will turn on (assuming it is not inverted). When user sends OFF command, OUT1 is pulsed, and relay is reset, turning IN1 on.

Output detection with inputs

Users can detect an output change with inputs.


To find out if relays are turned on, user can connect relay outputs to IOmod inputs (maximum allowed voltage must be taken into account). When relays are turned on, device responds with IEC-60870-5-103 protocol message “Remote Operation”. If inputs are never turned on or off, device will send “Remote Operation” message after time-out period, with current input statuses. Time-out period is configured by user as a Feedback Time.

Addressing configuration

Devices Output, Input and Output feedback addresses are configurable. This addresses in IEC 60870- 5-103 protocol are considered as “Function Type”. Output address and Output feedback address are 128 by default. Input address is 160 by default.

Device is addressed by “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.

To download The Vinci software please visit website: 

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 picture, Outputs and inputs are shown with info numbers 1-8, and function types are 128 and 160 respectively.

General Interrogation, Time Synchronization and General Command options can be found at right side of the program, in “System” tab.

Output commands are controlled by “General command” window at right side of the program, in “System” tab, with Output address (Function type) 128, and output number (Info number). Picture shows 1st and 6th output command sent and “CMD ACK” response received.


Picture shows first 4 Outputs and last 4 Inputs grouped (notice the order of info numbers).


Technical information






101 x 119 x 17.5, mm



IP20, blend PC/ABS self-extinguishing, black


Working environment



Operating temperature

-40 ¸ +85°C



5-95% RH (non-condensing)



USB – serial console


Firmware upgrade

USB – mass storage device

Electrical specifications




8 x 2kV RMS (1 minute) isolated 12-24VDC;
Selectable inversion.



8 x 3kV isolated open collector outputs (300mA each, Max 50V);



Power Supply

9V to 33V


Current consumption

70 mA

Mounting and installation guide

IOmod 8DI8DO RS485 interface

IOmod 8DI8DO 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.


IOmod 8DI8DO 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 8DI8DO inputs

Typical application of IOmod 8DI8DO 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.


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.


IOmod 8DI8DO outputs

IOmod 8DI8DO has 8 open collector digital outputs. Internal clamp diodes are connected to each output which makes IOmod 8DI8DO ideal for driving inductive loads like relays. Maximum 300mA per output is allowed. For higher loads outputs can be connected in parallel. Make sure your power supply can provide enough power. Typical application of outputs is shown on Fig. 5.4


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 (Fig. 6.1).


 User then manually installs drivers by selecting downloaded driver folder:
Go to Control Panel -> Device Manager;
Select failed device;
Press “Update driver software”; screen in Fig. 6.2. should appear:


Select “x86” driver for 32-bit machine, or x64 for 64-bit machine. If not sure, select root folder (folder in which x64 and x86 lays inside).