Glossary · PubSub

Delta frame

In OPC UA PubSub, a delta frame is a DataSetMessage that carries only the fields whose values changed since the previous message, each tagged with its field index. It saves bandwidth on datasets where most values are static, and it is meaningless to any subscriber that does not already hold a complete key frame.

How a delta frame identifies its fields

Instead of the full ordered field list, the message carries a count and then pairs of field index and value, indexing into the FieldMetaData list in the DataSetMetaData. The DataSetMessage sequence number lets a subscriber detect that it missed something. Note what this implies: the field indexes are positional, so any change to the publisher's field order invalidates every delta frame, which is exactly why the ConfigurationVersion exists.

The saving is real, the state is the price

On a dataset of eighty fields where three change per cycle, delta frames cut the payload by an order of magnitude. In exchange the subscriber becomes stateful: it must hold the last complete value of every field, and a dropped datagram on UDP multicast leaves specific fields holding stale values until the next key frame. Over MQTT with QoS 1 the loss risk drops, but MQTT plus JSON is where delta frames save least and confuse most.

When to use them and when not to

Use delta frames for large, mostly-static datasets on a bandwidth-constrained or heavily loaded link, and pair them with a KeyFrameCount low enough that a resynchronisation costs less than a second or two. Do not use them for deterministic Ethernet or TSN traffic, where a constant frame size is the point, and do not use them for a Unified Namespace feed, where every consumer would need to reimplement the state machine you just pushed onto it.

Example

The same dataset as a key frame and as a delta frame

KEY FRAME    fieldCount = 3
   [0] Force        812.4
   [1] Position      41.0
   [2] CycleCount   90211

DELTA FRAME  fieldCount = 1
   [0] index 0 -> Force  813.1        # Position and CycleCount are simply absent

# A subscriber with no key frame sees index 0 = 813.1 and cannot name or place it.
The mistake people make: Running delta frames with a high KeyFrameCount on lossy UDP multicast. One dropped frame and a handful of fields freeze at old values while the rest of the dataset keeps moving - with Good status and advancing timestamps - so the data looks alive and is quietly wrong until the next key frame lands.

Defined in: Part 14 - PubSub, DataSetMessage types.

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Server Acceptance Test Pack
A 40-check acceptance test you run against a vendor's server before commissioning sign-off. Weighted scoring, three hard gates, and a one-page verdict for the supplier meeting.
Get the free test pack →
Free, no course, no login