Skip to content

Communication Protocols

inSCADA manages communication with field devices through a standard hierarchical structure. Regardless of the protocol used — MODBUS, DNP3, IEC 104, OPC UA, or others — the data model always follows the same four-level structure.

Data Model: Connection → Device → Frame → Variable

Section titled “Data Model: Connection → Device → Frame → Variable”
Connection
│ Protocol type, IP address, port, and protocol-specific parameters
└── Device
│ Device address, scan period
└── Frame (Data Block)
│ Memory area type, start address, block size
└── Variable
Offset address within the block, data type

A communication channel opened to a field device or system. Each Connection is bound to a single protocol type and target address.

  • IP address and port information
  • Protocol selection (MODBUS TCP, DNP3, OPC UA, etc.)
  • Communication parameters such as timeout, retry
  • Protocol-specific settings (security, authentication, etc.)

Multiple Devices can be defined under a single Connection.

A physical or logical unit accessed through the Connection. It is addressed differently depending on the protocol:

ProtocolDevice AddressExample
MODBUSStation Address (Slave ID)1
DNP3Local/Remote Address pair1 / 10
IEC 104Common Address (CASDU)1
IEC 61850Object Reference (Logical Device)IED1LD1
OPC UABase PathPLC_1
S7Rack / Slot0 / 0
EtherNet/IPSlot0

Each Device has a Scan Time (scan period) parameter. inSCADA reads all Frames attached to the Device sequentially at this interval.

Represents a specific memory region or data group within a Device. A Frame defines what will be read:

  • Which memory area (Holding Register, Analog Input, DataBlock, etc.)
  • Start address
  • Block size (how many units to read)

Multiple Frames can be defined under a single Device — each representing a different memory region or data group.

A single data point within a Frame. It is the fundamental building block of inSCADA — logging, scaling, alarms, animations, and all other functions operate through Variables.

This is the most commonly confused point for developers using inSCADA for the first time. Correct understanding is critical for error-free configuration.

The Start Address entered when defining a Frame is the absolute start address in the device’s memory area. The Quantity specifies how many units of area will be read from this start address.

A Frame opens a window into the device memory:

Device Memory (e.g., Holding Register)
┌──────────────────────────────────────────────────────────┐
│ Addr: 0 1 2 ... 99 100 101 102 ... 119 120 │
│ ▲ ▲ │
│ │ Frame Window │ │
│ │◄─────────────────────────►│ │
│ Start: 100 Quantity: 20 │
└──────────────────────────────────────────────────────────┘

In this example, the Frame reads a block of 20 registers starting from address 100 in the device’s Holding Register area.

Variable: Relative Address Within the Frame

Section titled “Variable: Relative Address Within the Frame”

The address entered when defining a Variable is not the device’s actual address — it is a relative offset from the start of the Frame. That is, the Variable address specifies which unit within the Frame window it is located at.

Frame: Start Address = 100, Quantity = 20
Device Memory: [100] [101] [102] [103] [104] ... [119]
Frame Offset: 0 1 2 3 4 ... 19
▲ ▲ ▲
│ │ │
Variable A Variable B Variable C
Offset: 0 Offset: 3 Offset: 4
(Actual: 100) (Actual: 103) (Actual: 104)

You want to read voltage and current values from an energy analyzer. According to the device documentation:

  • Phase-A Voltage: Holding Register 40100 (REAL, 2 registers)
  • Phase-B Voltage: Holding Register 40102 (REAL, 2 registers)
  • Phase-C Voltage: Holding Register 40104 (REAL, 2 registers)
  • Phase-A Current: Holding Register 40106 (REAL, 2 registers)

Frame definition:

ParameterValueDescription
TypeHolding RegisterMemory area
Start Address100Actual start address of the device
Quantity1010 registers to be read (100-109)

Variable definitions:

VariableOffsetData TypeActual AddressDescription
Voltage_A0Float100-101Phase-A Voltage
Voltage_B2Float102-103Phase-B Voltage
Voltage_C4Float104-105Phase-C Voltage
Current_A6Float106-107Phase-A Current

You want to read temperature and status information from DB8 on an S7 PLC:

  • Running status: DB8.DBX0.0 (BIT)
  • Alarm status: DB8.DBX0.1 (BIT)
  • Temperature: DB8.DBD2 (REAL, 4 bytes)
  • Pressure: DB8.DBD6 (REAL, 4 bytes)
  • Setpoint: DB8.DBW10 (INT, 2 bytes)

Frame definition:

ParameterValueDescription
TypeDBDataBlock area
DB Number8DataBlock number
Start Address0Start from byte 0
Quantity12Read 12 bytes (0-11)

Variable definitions:

VariableByte OffsetBit OffsetData TypeS7 AddressDescription
Running00BITDBX0.0Running status
Alarm01BITDBX0.1Alarm status
Temperature2REALDBD2Temperature (4 bytes)
Pressure6REALDBD6Pressure (4 bytes)
Setpoint10INTDBW10Setpoint (2 bytes)

Note that Variable offsets are relative to the start of the Frame (byte 0). Since S7 addressing is byte-based, when Frame Start Address = 0, the Variable offsets directly correspond to S7 byte addresses. However, if the Frame Start Address were different (e.g., 100), the Variable offsets would still start from 0.

Setting the Frame size (Quantity) correctly directly affects communication performance:

  • Frame too large: Pulls a lot of data in a single request, but an error affects the entire block
  • Frame too small: A separate request is sent for each variable, slowing down communication
  • Gaps in addresses: Even if there are unused addresses in between, including them in a single Frame is generally more efficient than using separate Frames

Each Frame has a Scan Time Factor parameter. The Frame’s actual scan period is calculated with this formula:

Frame Scan Period = Device Scan Time × Scan Time Factor

This feature allows slow-changing data to be scanned less frequently. For example, if Device Scan Time = 1000 ms:

FrameScan Time FactorActual PeriodUsage
Live measurements11 secCurrent, voltage, power
Status information55 secOperating mode, alarm status
Configuration601 minSetpoint, parameters

For detailed configuration information, go to the relevant protocol page: