What is the EOS IEC 60870 Server?

EOS IEC 60870 Server is designed to provide process data from EOS SCADA to higher-level SCADA systems, control centers and test applications using the IEC 60870-5-104 protocol.

On the server side, IEC 60870 information objects are created using the existing Data ID, Column Name, Data Type and Device information available in EOS SCADA.

As a result, process points such as HES_Generator_ActivePower, HES_Generator_ReactivePower, HES_TurbineSpeed or HES_Breaker01_Status within EOS SCADA can be read by IEC 60870-5-104 clients.

EOS SCADA → IEC 60870-5-104

Process data within EOS SCADA is provided to the client through IEC 60870 ASDU structures.


EOS SCADA TAG
      │
      ├── Data ID
      ├── Column Name
      ├── Data Type
      └── Device
            │
            â–¼
      Common Address
            │
            â–¼
      Information Object Address
            │
            â–¼
          ASDU
            │
            â–¼
      IEC 60870-5-104
            │
            â–¼
      SCADA / Master
                    

Server Operating Model

EOS IEC 60870 Server operates as a Server / Controlled Station in IEC 60870-5-104 communication. The SCADA or IEC 104 client on the other side operates as the Master / Controlling Station.

EOS SCADA

The main data source containing the process data.

IEC 60870-5-104

Provides TCP/IP-based telecontrol communication between EOS SCADA and the external SCADA system.

IEC 104 Master

Can connect to the EOS IEC 60870 Server and send General Interrogation or Read requests.

ASDU Data Transfer

Process values are sent to the client within IEC 60870 ASDU structures.

IEC 60870-5-104 Communication

The current implementation of the EOS server operates over IEC 60870-5-104. Communication is performed over TCP/IP.

Parameter EOS Server
Protocol IEC 60870-5-104
Communication TCP/IP
Common Address size 2 bytes
IOA size 3 bytes
Maximum ASDU length 249 bytes
K 12
W 8

IEC 104 connection parameters are configured through the ApplicationLayerParameters and APCIParameters structures. The K value defines the send window, while the W value defines the receive acknowledgment window.

Common Address – CA

In the EOS IEC 60870 Server, Common Address (CA) values are associated with devices within EOS SCADA.

The Common Address value created for a device is generated as one greater than the device's identity value within EOS.


DEVICE ID = 0
        ↓
Common Address = 1

DEVICE ID = 1
        ↓
Common Address = 2

DEVICE ID = 15
        ↓
Common Address = 16
                

For example, if the device HES UNIT 01 has a Common Address value of 1 in EOS, the IEC 60870 data points belonging to this device are provided under CA = 1.

General Interrogation with CA = 0

When the Common Address value in a General Interrogation request sent by the client is 0, the server generates and sends data for all available devices.

Information Object Address – IOA

In the EOS IEC 60870 Server, process information is addressed through the IOA (Information Object Address).

In the current implementation, the IOA is derived from the Column Name value in EOS SCADA.


IOA = 100000 + Column Name
                

For example, if a TAG in EOS SCADA has


Column Name = 125
                

then the IEC 60870 IOA value of this TAG is:


IOA = 100000 + 125

IOA = 100125
                

With this addressing scheme, an IEC 104 client can read the corresponding EOS SCADA data point using a specific IOA.

Example TAG

TAG HES_Generator_ActivePower
Data Type Real
Column Name 125
IOA 100125

ASDU Structure

EOS IEC 60870 Server uses the ASDU (Application Service Data Unit) structure for data transmission.

An ASDU basically contains Type Identification, Cause of Transmission, Originator Address, Common Address and Information Object data.


ASDU
 │
 ├── Type ID
 │
 ├── Cause of Transmission
 │
 ├── Originator Address
 │
 ├── Common Address
 │
 └── Information Objects
        │
        ├── IOA
        ├── Value
        └── Quality
                

The EOS server creates the appropriate Information Object class according to the data type and adds it to the ASDU.

Supported EOS Data Types

EOS IEC 60870 Server uses different IEC 60870 Information Object structures according to the data types available in EOS SCADA.

EOS Data Type IEC 60870 Object Description
Bool SinglePointInformation Single-bit status information
Sint MeasuredValueScaled Scaled 16-bit measurement
Usint MeasuredValueScaled 16-bit scaled value field is used
Int MeasuredValueScaled 16-bit signed measurement
Uint MeasuredValueShort Transmitted using a floating-point measurement object
Dint IntegratedTotals Transmitted using BinaryCounterReading
Udint MeasuredValueScaled 32-bit value is divided into two 16-bit parts
Lint MeasuredValueScaled 64-bit value is divided into two 32-bit parts
Ulint MeasuredValueScaled 64-bit value is divided into two parts
Real MeasuredValueShort IEEE 754 single-precision value
Double MeasuredValueScaled Bit representation of the Double value is divided into two parts

Data Quality

If a value obtained from EOS SCADA cannot be read or converted while being transformed into an IEC 60870 object, the Invalid bit is set in the QualityDescriptor.


EOS TAG
   │
   ├── Valid value
   │       ↓
   │   QualityDescriptor
   │       Invalid = false
   │
   └── Value could not be read
           ↓
       QualityDescriptor
           Invalid = true
                

For example:


HES_Generator_ActivePower = 12.45 MW
                

The value can be sent to the IEC 60870 client with valid quality information. If the value cannot be converted, the Invalid bit is set for the corresponding Information Object.

General Interrogation – GI

One of the main data transfer mechanisms of the EOS IEC 60870 Server is General Interrogation (GI).

When an IEC 104 Master sends a GI request, the EOS server first sends an ACT_CON message. It then reads the appropriate data points from EOS SCADA and creates ASDUs using the INTERROGATED_BY_STATION Cause of Transmission.


IEC 104 Master
      │
      │ GI
      â–¼
EOS IEC 60870 Server
      │
      ├── ACT_CON
      │
      ├── Scan EOS TAGs
      │
      ├── Group by Common Address
      │
      ├── Create ASDU according to data type
      │
      ├── Send ASDU
      │
      └── ACT_TERM
                

When the client's Common Address is 0, the server iterates through all available devices and sends the corresponding data.

When a specific Common Address is provided, only the data belonging to that device is transferred.

ASDU Packetization

Information Objects of the same data type are grouped into ASDUs. Each ASDU is limited to a maximum of 20 Information Objects.


For example:

Bool TAG 1
Bool TAG 2
Bool TAG 3
...
Bool TAG 20
        │
        â–¼
     ASDU #1

Bool TAG 21
Bool TAG 22
...
        │
        â–¼
     ASDU #2
                

After a completed ASDU is sent to the client, a new ASDU is created. A short delay is applied between packets to ensure controlled data transmission.

Read – Data Read Request

EOS IEC 60870 Server can also process C_RD_NA_1 Read commands.

When an IEC 104 Master sends a Read request for a specific IOA, the server maps the corresponding Common Address and IOA values to the EOS SCADA data points.


Master
  │
  │ C_RD_NA_1
  │ CA = 1
  │ IOA = 100125
  â–¼
EOS IEC 60870 Server
  │
  ├── CA → HES UNIT 01
  │
  ├── IOA 100125 → Column Name 125
  │
  ├── Read EOS TAG value
  │
  └── Send ASDU with REQUEST COT
                

Example

A request with CA = 1 and IOA = 100125 can be mapped on the EOS side to the data point with Column Name 125 belonging to the device associated with Common Address 1.

Server Configuration

The operating parameters of the EOS IEC 60870 Server are configured through EOS SCADA Project Settings. The IP address on which the server operates, the TCP port used by IEC 60870 clients to connect, and the data update interval can be configured in the project settings.

Parameter Description Default Value
IP Address The IP address on which the IEC 60870 Server listens for client connections. IP_Address (Project Setting dependent)
IEC 60870 Port The TCP port used by IEC 60870 clients to connect to the EOS IEC 60870 Server. Default 2404
Data Type Determines the scope of EOS SCADA data provided through IEC 60870. One of All, Digital, Analog or Selected
Update Interval Determines how frequently the EOS IEC 60870 Server checks EOS SCADA data and provides changed values through IEC 60870. Default 1 second

The default value for the IEC 60870 Port is 2404. This is the standard TCP port used by IEC 60870-5-104 communication and can be changed through the Project Settings when required.

The default Update Interval is 1 second. This interval determines how frequently EOS SCADA data is checked by the IEC 60870 Server. When the value of a data point changes, the updated value is provided through the corresponding IEC 60870 data point.

When the IEC 60870 Server is started, it begins accepting IEC 60870 client connections on the IP address and TCP port specified in the Project Settings.

Selecting Data to be Provided

EOS IEC 60870 Server can be configured to provide all data points within EOS SCADA or only specific data groups.

All

All eligible EOS data points are provided by the IEC 60870 server.

Digital

Data points belonging to the digital data group are provided.

Analog

Analog measurement points are provided.

Selected

Selected data points within EOS SCADA are provided.

Device and TAG Mapping

When the server starts, the device and TAG tables of EOS SCADA are scanned. The device associated with each TAG and its data type are maintained in separate dictionaries.


TAG
 │
 ├── Data ID
 │
 ├── Data Type
 │
 └── Device
       │
       ├── Common Address
       │
       └── IEC 60870 Server
                

For example:

EOS TAG Data Type Device CA IOA
HES_Generator_ActivePower Real HES_UNIT_01 1 100125
HES_Generator_Running Bool HES_UNIT_01 1 100126
HES_Turbine_Speed Real HES_UNIT_01 1 100127

Cause of Transmission – COT

EOS IEC 60870 Server uses different Cause of Transmission values for different operations.

Operation COT Description
General Interrogation INTERROGATED_BY_STATION Response to a GI request
Read REQUEST Response to a Read request
Server Initialization INITIALIZED Message indicating the initialization state of the server
Command ACT_CON Command acceptance confirmation

Server Initialization

When the EOS IEC 60870 Server starts, IEC 104 communication parameters are created, the server is started, and an End Of Initialization message is sent with the INITIALIZED Cause of Transmission.


Start Server
     │
     ├── ApplicationLayerParameters
     │
     ├── APCIParameters
     │
     ├── Create Server
     │
     ├── Interrogation Handler
     │
     ├── ASDU Handler
     │
     ├── Server.Start()
     │
     └── EndOfInitialization
                

The operating status of the server is also transferred to the IEC 60870 status indicator within EOS SCADA.

Data Queue

The maximum queue size for the server's ASDU queue is configured as 10.


MaxQueueSize = 10

EnqueueMode = REMOVE_OLDEST
                

When the queue is full, old data is removed so that new ASDUs can be added to the queue.

Current Implementation Limitations

This page does not describe all features of the IEC 60870 standard. It describes the IEC 60870 Server implementation currently available within EOS SCADA.

Features not available in the current code

  • There is no automatic Data Change / Spontaneous transmission mechanism.
  • There is no Historian or historical data transmission mechanism through IEC 60870.
  • CP24Time2a or CP56Time2a timestamped data transmission is not currently implemented.
  • Single Command messages are received and ACT_CON is sent; however, actual process control is not implemented.
  • Clock Synchronization messages are received and ACT_CON is sent; however, changing the system clock is not implemented in the current code.
  • IEC 60870-5-101 serial communication server is outside the scope of this implementation.

Therefore, in its current form, EOS IEC 60870 Server can be used especially for data access between SCADA systems, GI-based data acquisition, Read operations and IEC 104 communication testing .

Example IEC 60870 Data Structure

The following example shows how a hydroelectric power plant data point in EOS SCADA can be represented over IEC 60870-5-104.


TAG:
    HES_Generator_ActivePower

EOS Data Type:
    Real

Device:
    HES_UNIT_01

Common Address:
    1

Column Name:
    125

IOA:
    100125

Value:
    42.75 MW

IEC 60870 Object:
    MeasuredValueShort

Quality:
    Valid
                

As another example, consider a breaker status indication:


TAG:
    HES_Breaker01_Status

EOS Data Type:
    Bool

Device:
    HES_UNIT_01

Common Address:
    1

Column Name:
    126

IOA:
    100126

Value:
    TRUE

IEC 60870 Object:
    SinglePointInformation
                

Summary

EOS IEC 60870 Server has been developed to provide process data from EOS SCADA to external SCADA and telecontrol systems through the IEC 60870-5-104 protocol.

The server maps EOS devices to the IEC 60870 addressing structure using Common Address, while process points are mapped using the Information Object Address.

The current implementation is primarily based on General Interrogation, Read, ASDU data transfer, Common Address / IOA mapping and IEC 60870-5-104 communication.

EOS SCADA can therefore not only consume data as an IEC 104 client, but can also operate as an IEC 104 Server capable of providing its internal process data to IEC 60870-5-104 compatible systems.