---
title: "IEC 104 Client | Configuration | N3uron KB V1.22"
slug: "iec-104-client-configuration"
description: "IEC 104 Client allows to quickly and easily connect to any IEDs, RTUs,  controllers, and gateways that adhere to the IEC 60870-5-104 protocol."
updated: 2025-12-23T13:59:28Z
published: 2025-12-23T13:59:28Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.n3uron.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

Note:

Before starting the configuration, a new module instance must be created. [Click here for more information about creating Module instances](/v122/docs/platform-create-new-module-instance).

Note:

This module is available from **N3uron**version **1.21.7**.

## Module Configuration

![Fig%201%20-%20Config](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/Fig%201%20-%20Config.png)

As shown in the previous screenshot, multiple connections****can be created in the **Model**panel by clicking on the burger menu icon. Each connection is named **Channel**. See below for an explanation of the different configuration options.

## **Channel Configuration**

![Iec104Channel(4)](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/Iec104Channel(4).png)

A channel represents the physical medium that will be used for communication between N3uron and remote IEC 104 devices. Each channel has the following parameters:

- **Enable data collection:**When **Disabled****,**the connection will remain inactive and all associated tags will remain as Bad-Uninitialized. The**default**value is set to******Enabled****.**
- **Connection:**
  - **Host:**Hostname/IP address of the target device.
  - **TCP Port:**TCP port number for the connection.
  - **Reconnect delay:**Delay before attempting to reopen the connection after a failed attempt, in **milliseconds**.
- **Protocol settings:**
  - **Common address size:**Determines the number of bytes (or octets) used for the common address. The default setting is **2**.
    - If set to******1**, the valid range for the Common Address is **0** to **254**.
    - If set to **2**, the valid range for the Common Address is **0** to **65534**.
  - **Cause of transmission size:**This parameter specifies the number of bytes in the Cause of Transmission (COT) field of an IEC 60870-5-104 data packet. It can be **1******or **2** bytes. The second byte represents the originator's address. In this way, when the COT size is **2** it includes the originator address (the address of the IEC 60870 client) in the messages, while the originator address is not included in the messages when the size is set to 1. The default setting is **2** bytes.
  - **Originator address:**This parameter specifies the second byte of the **Cause of Transmission (COT)** field in an**IEC 60870-5-104 data packet**. The Originator Address is used to**identify the source**of the **data packet**. This is useful in **systems**with **multiple controlling station**s, or when there are dual-mode stations that can act as both a master and a slave.****The **valid range** for the **Originator Address** parameter is **0** to **254**. **The default setting is** 0.
  - **K:**The **K******parameter, also known as the **maximum unacknowledged transmitted APDUs**, defines the maximum number of unconfirmed APDUs transmitted to the other station without waiting for an acknowledgment (ACK) for each APDU. **The default setting is** **12**.
    - **Example:** With a K value of 12, the client can transmit up to 12 APDUs simultaneously without requiring an immediate acknowledgment from the server.
  - **W:**The **W******parameter, also known as the **maximum unacknowledged received APDUs**, defines the maximum number of APDUs received from the remote station before it is required to send an acknowledgment (ACK) indicating that it has successfully received all the APDUs. This setting works in conjunction with **T2******to limit how often the client acknowledges APDUs. **The default setting is** **8**.
    - **Example:** With a **W**value of **8**, the client will wait to send an ACK to the server until it has received either **8** unacknowledged APDUs or the **T2** timeout period has elapsed. At that point, the client will transmit a supervisory APDU to acknowledge all the received APDUs.
- **Timing:**
  - **T1:**Maximum time to receive the acknowledge message**(ACK)**to a transmitted **APDU (Application Protocol Data Unit).**If the ACK is not received within the specified******T1 timeout period****,**the sender assumes that the APDU has either been lost or corrupted. As a result, the client closes the current connection and initiates a reconnection.**The default setting is****15000ms****.**
    - **Example:** When the timeout is set to******15000 milliseconds****,** the server has a maximum window of******15000 ms******to acknowledge an interrogation command received from the client, regardless of the command's execution time.****Failure to receive an ACK within this timeframe triggers retransmission procedures initiated by the sender.
  - **T2:**The******T2**parameter, also known as the **APDU acknowledgment timeout**, defines the time to wait before sending a supervisory **APDU ACK** **response**indicating that it has successfully received the APDU.**The default setting is****10000 ms****.**
    - **Example**: With a timeout set to **10000 ms**, the client will defer acknowledging received APDUs from the server until either the T2 timeout has elapsed or the K value has been reached. At that point, the client will send a supervisory APDU to acknowledge the received APDUs.
  - **T3:**The **T3**parameter, also known as the **idle timeout**, defines the maximum amount of time that a communication link can remain idle before a **TEST APDU**frame is transmitted to verify the connection's integrity. **The default setting is****20000 ms****.**
    - **Example**: With a timeout set to **20000 ms**, a test frame will be sent to the server if no APDUs are received within this timeframe. The receipt of any APDUs will reset this timer, ensuring that communication remains active.
  - **T3 timeout:**The **T3**timeout defines de time to wait for the device to respond to a test frame. If the device does not respond in time, the connection will be terminated. **The default setting is** **20000 ms**.

## **Device Configuration**

Once a **Channel** has been configured, a remote IEC 104 device can be added.

To create a new **Device**, you can click on the **Devices** button under **Channel**and select **New Device**.

When selecting **New Device**, begin by assigning a name, as illustrated in the image below.

Note:

Even though it's uncommon, the specification allows for a gateway that enables multiple devices with a single connection.

![Iec104Device(2)](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/Iec104Device(2).png)

![Iec104Device01(1)](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/Iec104Device01(1).png)

Once the device is created, you can configure the following parameters:

- **Enable data collection:**Enable or disable data collection on this device. When **disabled**, no data will be sent to the device and associated tags will remain as **Bad - Uninitialized****.**
- **Common address of ASDU:** The Common Address of ASDU parameter, also **known as the COA**, specifies a **unique identifier** for the outstation or remote device from which APDUs are received.****The valid range is******0******to **254**or **65534****,** depending on whether the******Common address size******setting is set to one or two octets.**The default setting is****3****.**
- **Interrogation:**

> [!CAUTION]
> Note:
> 
> Interrogation settings must be set up to regularly request data from the server. If there's no interrogation, and the server isn't set to send updates regularly, the client won't get any data. As a result, the tags in the client app will remain in a "**bad quality**" state showing that the data is unavailable.

![Iec104Interrogation](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/Iec104Interrogation.png)

[Embedded content](https://www.youtube.com/embed/eY52SVLq7Hw)

## Tag Configuration

> [!NOTE]
> Note:
> 
> For additional details on **Supported ASDUs**, please refer to the [Appendix](/v122/docs/iec-104-client-appendix).
  - **Interrogation group:**The Interrogation Group (IG) parameter in the IEC 104 protocol defines a logical grouping of data objects within an outstation or remote device. This grouping enables efficient data retrieval by allowing a client or master station to request data from multiple data objects with a single interrogation command.
    - General interrogation.
    - Interrogation group **1-16**. ![Iec104Interrogation01](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/Iec104Interrogation01.png)
  - **Rate:**Sets the rate at which interrogation APDUs are sent to the outstation. The default value is **60000ms**.

The channel and device configuration parameters define the settings for establishing connections to slave devices. Once these elements are configured, users can proceed to create and configure tags associated with the data received from IEC 104 devices, as illustrated in the example below:

**Source:**

- **Enabled:**When **Disabled****,**tags won't be updated with the values received from the server, but instead, will essentially act as memory tags. When set to******Enabled****,**the tag value will be continuously updated with the values received. The default value is set to **Disabled**.
- **Module type:**The type**of the module used to retrieve the tag's value, quality and timestamp.**
- **Module name:**Name of the module instance used to obtain the tag's value, quality and timestamp.

**Config:**

> [!NOTE]
> Note:
> 
> To send commands from the client to the server, N3uron uses **Direct Execute**. Therefore, the server must be configured accordingly. In order to write values, ensure that the tag is configured with **Read/Write**. For more information on tag configuration, please refer to the documentation available at [**creating tags.**](https://docs.n3uron.com/v122/docs/platform-creating-tags)

> [!WARNING]
> Note:
> 
> Please note that many RTUs or Outstations, do not automatically provide feedback through the same IOA used to send commands; instead, they often utilize a different IOA for feedback. Starting with **N3uron**version**1.21.11**, you can configure separate IOA addresses for sending commands and receiving feedback within the tag configuration.

- **Device:** Devices are specified using the format **<channel>/<device_name>**. Ensure the device is created and configured within the IEC104 Client module connections. For example, to connect to an IEC104 field device with channel name **Channel01**and device name **Device01**, use **Channel01/Device01**.
- **Read IOA:**Specifies the **Information Object Address (IOA)** used to retrieve data for this tag. The IOA uniquely identifies a specific data object within an outstation or remote device. By assigning a separate Read IOA, the system can independently receive feedback, enabling more efficient data management and clearer monitoring of data retrieval processes.

> [!WARNING]
> Note:
> 
> This feature is available starting from **N3uron**version **1.21.11**.
- **Data type**: Selects the type of data received from the outstation.
  - **Single point**:
    - Represents binary information, indicating a simple **on/off** or **true/false** state.
    - Includes quality descriptor and Cause of Transmission (**COT**).
  - **Single command:**
    - A command type that allows the client to write a binary value, representing a simple **on/off** or **true/false******state.
    - The tag property for **Client access** must have read/write **RW******permissions.

> [!WARNING]
> Note:
> 
> This data type is available starting with **N3uron** version**1.21.11**. In earlier versions, this data type was included within the**Single Point**data type.
  - **Double point**:
    - Represents binary information with two bits, known as Double Point Information (DPI). The states are defined as follows:
      - **00** **(0)** Indeterminate state or intermediate state.
      - **01** **(1)** Determined state **OFF**.
      - **10** **(2)** Determined state **ON**.
      - **11** **(3)** Indeterminate state.
    - This encoding allows for a more nuanced representation of states beyond simple on/off.
    - Includes quality descriptor and Cause of Transmission (**COT**).
  - **Double command**:
    - A command type that allows the client to write binary information using two bits, known as Double Point Information (DPI). The states are defined as follows:
      - **00** **(0)** Indeterminate state or intermediate state.
      - **01** **(1)** Determined state **OFF**.
      - **10** **(2)** Determined state **ON**.
      - **11** **(3)** Indeterminate state.
    - The tag property for **Client access** must have read/write **RW******permissions.

> [!WARNING]
> Note:
> 
> This data type is available starting with **N3uron** version**1.21.11**. In earlier versions, this data type was included within the**Double Point** data type.
  - **Step position**:
    - Represents discrete positions within a defined range.
    - Includes quality descriptor, Cause of Transmission (**COT**) and In-transit flag.

> [!WARNING]
> Note:
> 
> Write operations for this data type are not supported.
  - **Bit String**:
    - It is a **sequence of bits** (up to **32 bits**) used for transmitting multiple binary signals simultaneously.
    - Includes quality descriptor and Cause of Transmission (**COT**).
  - **Bit String command**:
    - A command that allows the client to write a sequence of up to **32 bits**, enabling the simultaneous transmission of multiple binary signals.
    - The tag property for **Client access** must have read/write **RW******permissions.

> [!WARNING]
> Note:
> 
> This data type is available starting with **N3uron** version**1.21.11**. In earlier versions, this data type was included within the**Bit String** data type.
  - **Normalized value**:
    - It is used for representing measured values in a normalized format, ranging from******-1** to **+1**.
    - Includes quality descriptor and Cause of Transmission (**COT**).
  - **Normalized value command**:
    - A command that allows the client to write measured values in a normalized format ranging from ******-1** to **+1**.
    - The tag property for **Client access** must have read/write **RW******permissions.

> [!WARNING]
> Note:
> 
> This data type is available starting with **N3uron** version**1.21.11**. In earlier versions, this data type was included within the**Normalize value** data type.
  - **Scaled value**:
    - Represents measured values that are scaled to a specific range. It is a 16-bit integer with values ranging from **-32768** to **+32767**.
    - Includes quality descriptor and Cause of Transmission (**COT**).
  - **Scaled value command**:
    - A command that allows the client to write measured values as 16-bit integers scaled to a specific range **-32768** to **+32767**.
    - The tag property for **Client access** must have read/write **RW******permissions.

> [!WARNING]
> Note:
> 
> This data type is available starting with **N3uron** version**1.21.11**. In earlier versions, this data type was included within the**Scaled value** data type.
  - **Floating point**:
    - Represents measured values using **IEEE 754 standard floating-point representation**.
    - Includes quality descriptor and Cause of Transmission (**COT**).
  - **Floating point command**:
    - A command that allows the client to write measured values using the **IEEE 754 standard floating-point representation**.
    - The tag property for **Client access** must have read/write **RW******permissions.

> [!WARNING]
> Note:
> 
> This data type is available starting with **N3uron** version**1.21.11**. In earlier versions, this data type was included within the**Floating point** data type.
- **Variable:**This parameter defines the specific information to be extracted from the data received and assigned to the tag value. Available options for all data types include:
  - **Common variables:**
    - **Value:** Reads the current value of the data point.
    - **Cause of transmission (COT):** Reads the **reason for the transmission of this APDU**.
    - **Qualifier (Invalid):** Reads the **invalid** bit of the qualifier, indicating whether the value is **valid**(**0**) or **invalid**(**1**) due to abnormal conditions.
    - **Qualifier (Not topical):** Reads the **not topical** bit of the qualifier, indicating whether the value is **current** (**0**) or **outdated**(**1**) .
    - **Qualifier (Substituted):** Reads the **substituted** bit of the qualifier, indicating whether the value is from the **original source** (**0**) or **substituted**(**1**).
    - **Qualifier (Blocked):** Reads the **blocked** bit of the qualifier, indicating whether the value is **available**(**0**) or **blocked**(**1**).
  - **Step Position Specific variables:**
    - **In transit flag:** Reads the value of the **In transit flag**of the data point, which is the 8th bit of the step position value. It indicates whether the position is **changing** (**1**) or **stable**(**0**).
    - **Value (Raw):** Reads the raw value received from the server. This includes the whole byte, which consists of the **first seven bits representing the value** and the**8th bit** representing the **In-transit flag**.
    - **Qualifier (Overflow):**Reads the **overflow** bit of the qualifier, indicating if an overflow has occurred.
  - **Normalized Value Specific variables:**
    - **Value (Normalized):** Reads the value of the data point after calculating the normalized value.
    - **Value (Raw):** Reads the raw value received from the server before calculating the normalized value.
    - **Qualifier (Overflow):**Reads the **overflow** bit of the qualifier, indicating if an overflow has occurred.
  - **Scaled Value Specific variables:**
    - **Qualifier (Overflow):**Reads the **overflow** bit of the qualifier, indicating if an overflow has occurred.
  - **Bit string Specific variables:**
    - **Value:** This allows you to access and read the value of a specific bit within the 32-bit string. You need to specify the bit position (**0-31**) to read its current value.
    - **Value (Raw):** Accesses the entire 32-bit string, allowing for both reading of the complete set of bits in one operation.
    - **Qualifier (Overflow):**Reads the **overflow** bit of the qualifier, indicating if an overflow has occurred.
- **Write**: Below this section are the settings that apply when **Command data types** are selected.

> [!WARNING]
> Note:
> 
> Starting with **N3uron**version **1.21.11**, this settings section allows for the separation of IOA addresses for Read and Write operations.
  - **Write mode:********Only Direct Operate** is currently supported.
  - **Write IOA:** Specifies the **Information Object Address (IOA)** designated for writing commands. By assigning a separate IOA for write commands, you can send data to this Write IOA while receiving feedback through a different Read IOA, as previously explained. This separation enables more efficient data management and clearer monitoring of command execution.

> [!WARNING]
> Note:
> 
> The tag property for **Client access** must have **read/write RW permissions.**
  - **Pulse type:**Specifies the pulse type applied during the writing of **Single Point**and **Double Point commands**.
    - **Unspecified:** No additional definition is included in the control ASDU, allowing the device to use its default settings.

> [!WARNING]
> Note:
> 
> This option may not be supported by all field devices.
    - **Short pulse:**The control ASDU includes a Short Pulse Quality of Control (QoC).
    - **Long pulse:** The control ASDU includes a Long Pulse Quality of Control (QoC).
    - **Persistent:** The control ASDU includes Persistent QoC. The output remains in the specified state until a new command is received.

> [!WARNING]
> Note:
> 
> The specific pulse durations for **Short**and **Long Pulse** are defined by the outstation’s configuration.

[Embedded content](https://www.youtube.com/embed/7QAWSjZ_tsg)

**Refer to this link for more detailed information on**[**creating tags**](https://docs.n3uron.com/v122/docs/platform-creating-tags)**.**

[IEC 104 Client Full Product Details](https://n3uron.com/iiot-platform-modules/iec-104-client/)
