Global – October 29, 2026 -- Industrial historians should default to data-change subscriptions for continuously monitored OPC UA process variables and reserve polling for explicitly periodic records, according to collection guidance tied to TDengine TSDB-Enterprise.
Polling leaves a blind spot between reads
A polling client issues Read requests at a fixed interval, so a ten-second poll fetches the latest value every ten seconds whether or not it changed. If a motor status flips from 0 to 1 and back to 0 inside that window, both surrounding polls return 0. A shorter interval cuts the risk but raises load, and it never removes the gap between samples.
Polling fits periodic reporting, slow-changing values that need regular records, and servers with weak subscription support. A quality report requiring one temperature record per minute, including unchanged periods, is a polling case.
Subscriptions send fewer unchanged values but can overflow
A subscription groups monitored items, each with a sampling interval, optional filter and queue. A DataChangeFilter can apply a deadband where supported. The server may revise requested intervals or queue sizes, so clients must check the accepted settings. If a monitored-item queue fills, values are discarded per queue policy and OPC UA marks the overflow in status information. The client must also maintain the subscription lifetime.
Native alarms need an event stream, not a Boolean tag
Native OPC UA alarms and events use event notifier nodes and an EventFilter rather than a DataChangeFilter. Historians that must retain alarm identity, severity, acknowledgement and state transitions should collect the event stream instead of inferring the alarm lifecycle from a Boolean tag. The guidance recommends a mixed design: poll periodic records, subscribe to changing process values, and use OPC UA Alarms & Events for native event semantics.
Five checks before deployment
- Define tolerable loss, including the shortest event to capture and the longest acceptable delay.
- Verify the server's revised sampling interval, publishing interval, queue size and filter result.
- Preserve quality status, and do not treat a bad status as a usable measurement.
- Test overload and network interruption for overflow, gaps, duplicates and recovery.
- Compare source changes with collector input and historian rows, since a healthy session does not prove every value was stored.
TDengine offers subscribe, observe and event modes in its Enterprise edition
TDengine TSDB-Enterprise ingests OPC UA data through taosExplorer and taosX. Its connector documentation labels the feature Enterprise-only and states that TDengine TSDB-OSS does not include it. An agent is optional when taosX can reach the OPC UA server directly; otherwise taosX-Agent can run on a host with server access.
The three modes are subscribe for data-change reports from ordinary points, observe for scheduled reads, and event for native alarms and events. In observe mode the default interval is 10 seconds and applies to all ordinary points in a task, so points needing different poll periods belong in separate tasks.
Each point can take its TDengine timestamp from the OPC origin, request or received time. Received time gives consistent ingestion ordering, while origin time better preserves when the source recorded the measurement, provided source clock quality has been reviewed.