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.
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.