- Jelina overview
- CommBridge
- Data acquisition
IEC 104 Acquisition
1. Configure the simulator
Section titled “1. Configure the simulator”Use the protocol simulator to generate data. Configure it as follows:
(1.) Double-click protocolsimulator.exe in its folder to open the protocol simulator.
(2.) Configure the following information in the simulator:
a. Connection parameter: TCP-S
b. IP: the laptop’s IPv4 address
c. Port: an integer greater than or equal to 1000, matching the port entered in Connection settings
d. Protocol type: iec104-server
e. Point list file: download simulator_point.csv, the point list for simulated measurement data, and upload it to the simulator

(3.) Select the required measurement points.
(4.) At the upper left, click Test → Auto Send, enter an interval of 1000ms, then click OK.

(5.) Click Open Connection to start generating simulated data.
2. Create nodes
Section titled “2. Create nodes”(1.) Open Digital Twin in CommBridge, then select Device Connectivity on the left.

(2.) Drag the IEC104 Acquisition, Data Processing, and MQTT Upload plugins to the plugin workspace to create three nodes.

(3.) Connect the three nodes in this order: IEC104 Acquisition → Data Processing → MQTT Upload.

3. Create a scheme
Section titled “3. Create a scheme”(1.) Double-click IEC104 Acquisition, then click Add Scheme.

(2.) Enter the connection settings, then click Next.

(3.) Click Add Group, enter the group settings, then click Confirm.

(4.) Click Add Data, enter the point settings, then click Confirm.

(5.) Click Finish to add the acquisition scheme.

(6.) Enable the scheme, then click Save.

4. View results
Section titled “4. View results”(1.) Click Deploy in Device Connectivity to deploy successfully.

(2.) Switch to Digital Twin and hover over the IEC104 Acquisition node to display its information list.

(3.) Click the scheme to view real-time and historical point data for its groups.

5. Configuration details
Section titled “5. Configuration details”Connection settings
Section titled “Connection settings”| Parameter | Description | Format | Example |
|---|---|---|---|
| Scheme name | User-defined name for the scheme | Nonempty | IEC 104 acquisition |
| Protocol | IEC 104 power-system protocol | Nonempty | IEC 104(TCP) |
| Cause of transmission size | Size of the cause of transmission (COT) in bytes; defaults to 1 byte | 1, 2 | 2 |
| Common address length | Size of the ASDU common address (CA) in bytes; defaults to 2 bytes (16 bits) | 1, 2 | 2 |
| Information object address length | Size of the information object address (IOA); defaults to 3 bytes (24 bits) | 1, 2, and 3 | 3 |
| Originator address | User-defined | Number, range: [0,255] | 0 |
| Application service data unit common address | Common address (CA) of the application service data unit (ASDU), set when issuing a general interrogation or sending a command | Number, range: [0,2147483647] | 1 |
| General interrogation interval | Interval for general interrogation in milliseconds; 0 disables periodic general interrogation | Number, range: [0,2147483647] | 0 |
| Host | IP address of the IEC 104 slave being polled (the device running the simulator, or controlled station) | Address in decimal notation | 192.168.220.146 |
| Port | IP port number of the IEC 104 slave being polled; enter the actual port, matching the simulator’s port | Number, range: [1, 65535] | 2404 |
| K | Send-window size: maximum number of sent but not yet acknowledged I-format APDUs | Number, range: [1,32767] | 12 |
| W | Maximum number of unacknowledged APDUs the receiver can accept | Number, range: [1,32767] | 8 |
| t0 | Connection establishment timeout. Attempts to reconnect if no connection is established | Number, range: [1,255] | 30 |
| t1 | APDU transmission or test timeout: time to wait for acknowledgment. Data must be retransmitted if acknowledgment is not received | Number, range: [1,255] | 15 |
| t2 | Acknowledgment timeout: time from the slave’s spontaneous data transmission to receipt of an S-format acknowledgment frame; if no data is sent within t2, the next acknowledgment frame should be sent |
Number, range: [1,255] | 10 |
| t3 | Heartbeat timeout: if no data is exchanged within t3, a U-format test frame should be sent to ensure continued link-layer activity | Number, range: [1,255] | 20 |
Note:
- K defaults to 12: at most 12 sent I-format APDUs may remain unacknowledged. Once this window limit is reached, the sender must wait for an acknowledgment before continuing to send I-format APDUs.
- W defaults to 8: after receiving 8 APDUs, the master must reply with an S-format acknowledgment. Applies to the master. In theory,
W < 2/3K.- Defaults: t0 = 30s, t1 = 15s, t2 = 10s, and t3 = 20s. In theory,
t2 < t1 < t3.- t0–t3 are in seconds.
Add a group
Section titled “Add a group”| Parameter | Description | Format | Example |
|---|---|---|---|
| Group name | User-defined name for the group | Nonempty | Group 1 |
| Originator address (s) | User-defined ASDU common address (ADR), used to distinguish substations on this link | Number, range: [0,255] | 1 |
| General interrogation interval | Interval for general interrogation; 0 disables periodic general interrogation | Seconds; number, range: [0,2147483647] | 1 |
| Teleindication (DI) point offset | Offset for all teleindication (digital input DI) data; supports decimal and hexadecimal | Decimal range: [1,2147483647] Hexadecimal range: [0x0,0xffff] |
0x0 |
| Remote control (DO) point offset | Offset for all remote control (digital output DO) data; supports decimal and hexadecimal | Decimal range: [1,2147483647] Hexadecimal range: [0x0,0xffff] |
0x6001 |
| Telemetry (AI) point offset | Offset for all telemetry (analog input AI) data; supports decimal and hexadecimal | Decimal range: [1,2147483647] Hexadecimal range: [0x0,0xffff] |
0x3e9 |
| Remote adjustment (AO) point offset | Offset for all remote adjustment (analog output AO) data; supports decimal and hexadecimal | Decimal range: [1,2147483647] Hexadecimal range: [0x0,0xffff] |
0x6201 |
Add data
Section titled “Add data”| Parameter | Prerequisite | Description | Format | Example |
|---|---|---|---|---|
| Data alias | User-defined data name, matching the key to acquire | Nonempty | Data 1 | |
| Information object address | Information object address (InfoAdr), distinguishing applications such as teleindication and telemetry; each information item occupies a different address | Number; see below | 0 | |
| Data category | Teleindication is digital input DI; remote control is digital output DO; telemetry is analog input AI; remote adjustment is analog output AO | AI, DI | AI | |
| Data type | Data type of the point being acquired | Select from the drop-down list; see below | ||
| Include timestamp | Whether to include a timestamp indicating when the information was sent | Yes, No; see below | No | |
| Timestamp type | Include timestamp is Yes | Timestamp type. IEC 104 does not support CP24Time2a | CP56Time2a, CP24Time2a | CP56Time2a |
| Read/write | Determined by the data category | Supports ro (read only) and wo (write only) | ro, wo; see below | No |
| Calculation | User-defined formula based on the data alias | Unrestricted | ||
| Execution mode | Data category is AO/DO | Execute: direct control; Select Execute: select before operate | Execute, Select Execute; see below | |
| Control timeout | Data category is AO/DO | See below | ||
| Quality qualifier | Data category is AO/DO | Set-point qualifier QL for AO; command qualifier QU for DO | See below | |
| Control type | Data category is DO | Duration of the control command’s output signal | Persistent Output, Short Pulse, Long Pulse; see below |
Note:
Actual point address = teleindication/remote control/telemetry/remote adjustment point offset + information object address.
- The information object address range depends on its configured size: 1 byte gives [0-255]; 2 bytes gives [0-65535]; 3 bytes gives [0-16777215].
Data types:
- DI: Single Point Information or Double Point Information.
- DO: Single Command, Double Command, or Regulating Step Command.
- AI: Step Position Information, Bitstring32, Measured Value Normalized, Measured Value Scaled, Measured Value Short Floating, Integrated Total, or Measured Hormalized Without Quality.
- AO: BitString32 Command, Setpoint Command Normalized, Setpoint Command Scaled, or Setpoint Command Short Floating.
Read/write:
- ro: DI and AI default to ro (read only).
- wo: DO and AO default to wo (write only).
Quality qualifiers:
- Set-point qualifier QL is used for measured values (telemetry) and status information (teleindication), describing the quality of the data object itself; number, range: [0,127].
- Command qualifier QU is used for commands (remote control and set points), describing the execution mode and attributes. Options: No Additional Definition, Persistent Output, Short Pulse, Long Pulse.
- Persistent Output: continuous output.
- Short Pulse: short-duration pulse.
- Long Pulse: long-duration pulse.
Point data in the protocolsimulator simulator has no timestamp by default.
6. IEC 104 protocol parameter details
Section titled “6. IEC 104 protocol parameter details”Data types
Section titled “Data types”| Data category | Data type | Type identification (ASDU type) | Description |
| Teleindication DI | Single Point | M_SP_NA_1=1 | Single-point information without timestamp |
| M_SP_TB_1=30 | Single-point information with long timestamp | ||
| Double Point | M_DP_NA_1=3 | Double-point information without timestamp | |
| M_DP_TB_1=31 | Double-point information with long timestamp | ||
| Telemetry AI | Step Position | M_ST_NA_1=5 | Step position information without timestamp |
| M_ST_TB_1=32 | Step position information with long timestamp | ||
| Bitstring | M_BO_NA_1=7 | 32-bit string without timestamp | |
| M_BO_TB_1=33 | 32-bit string with long timestamp | ||
| Measured Normalized | M_ME_NA_1=9 | Measured value, normalized, without timestamp | |
| M_ME_TD_1=34 | Measured value, normalized, with long timestamp | ||
| Measured Scaled | M_ME_NB_1=11 | Measured value, scaled, without timestamp | |
| M_ME_TE_1=35 | Measured value, scaled, with long timestamp | ||
| Measured Short Float | M_ME_NC_1=13 | Measured value, floating point, without timestamp | |
| M_ME_TF_1=36 | Measured value, floating point, with long timestamp | ||
| Integrated Totals | M_IT_NA_1=15 | Integrated totals without timestamp | |
| M_IT_TB_1=37 | Integrated totals with long timestamp | ||
| Measured Normalized Without Quality | M_ME_ND_1=21 | Measured value, normalized, without quality descriptor | |
| Remote control DO | Single Command | C_SC_NA_1=45 | Single command |
| C_SC_TA_1=58 | Single command with long timestamp | ||
| Double Command | C_DC_NA_1=46 | Double command | |
| C_DC_TA_1=59 | Double command with long timestamp | ||
| Regulation Command | C_RC_NA_1=47 | Regulating step command | |
| C_RC_TA_1=60 | Regulating step command with long timestamp | ||
| Remote adjustment AO | Setpoint Normalized | C_SE_NA_1=48 | Set-point value, normalized |
| C_SE_TA_1=61 | Set-point value, normalized, with long timestamp | ||
| Setpoint Scaled | C_SE_NB_1=49 | Set-point value, scaled | |
| C_SE_TB_1=62 | Set-point value, scaled, with long timestamp | ||
| Setpoint Floating | C_SE_NC_1=50 | Set-point value, short floating point | |
| C_SE_TC_1=63 | Set-point value, short floating point, with long timestamp | ||
| Bitstring Command | C_BO_NA_1=51 | 32-bit string | |
| C_BO_TA_1=64 | 32-bit string with long timestamp |