Global – October 27, 2026 -- A successful OPC UA connection check shows only that a client can reach the endpoint. It does not prove the intended nodes are readable, monitored, mapped or written to the historian, according to a five-step troubleshooting workflow for industrial data pipelines.
The method starts with one known, changing point, traced from the OPC UA server to one expected historian table. Large tag lists hide the first failure.
Independent client read isolates the source value first
An independent OPC UA client, using the same endpoint and user identity as the collector, should read one variable's Value attribute until a real change appears. Four DataValue fields need recording: value, status code, source timestamp and server timestamp. A Bad result is not a usable measurement, and an Uncertain result needs an explicit quality policy. If the value never changes, the fault may sit with a non-live node or the upstream PLC scan, because a server cannot report a change it never receives.
Wrong NodeId, namespace or service account blocks reads on live sessions
An active session does not guarantee read rights. Read operations can return Bad_NodeIdUnknown, Bad_NotReadable, Bad_UserAccessDenied or Bad_SecurityModeInsufficient. Namespace indexes can change between sessions, so robust integrations should resolve the namespace URI instead of a fixed numeric index. Root-node, node-class and regular-expression filters can return zero variables while the endpoint stays reachable. An administrator account in a desktop client does not validate the production service account.
Quiet subscriptions can reflect deadbands, expired items or queue overflow
For polling, interval and timeout should be compared with the time needed to read the point set, then scope increased in measured batches. For subscriptions, monitored items must be created successfully and be in Reporting mode, with the server's revised sampling interval, queue size and filter result checked. A stable value or a deadband can legitimately produce no notifications. If a direct read works but the subscription does not, attention shifts to monitored-item status, filters, publishing, queues and permissions. When a monitored-item queue fills, values can be discarded and the overflow bit set.
Timestamp and mapping errors mimic missing data
Teams must establish whether source, server, request or receipt time becomes the historian timestamp. Clock drift can place rows hours in the future or past, outside a dashboard's default range, so queries should cover a wide window and check minimum and maximum timestamps. A NodeId transformed into a table name can also route a point to an unexpected child table.
Read and write counters locate the fault boundary
If the read count rises while the write count does not, the fault lies downstream of OPC UA: schema mismatch, rejected rows, target authentication, unavailable storage or batch errors. If neither rises, point selection and collection mode need review. If both rise but a dashboard is empty, the target table should be queried directly.
TDengine health states separate source errors from sink errors
The OPC UA connector is an Enterprise feature of TDengine TSDB-Enterprise; TDengine TSDB-OSS does not include it. A task showing Running can carry finer health states. Idle means no data entered the pipeline during the health-check period, and Pending means the source is healthy but the writer has no messages. SourceError points to reading or reconnecting problems, SinkError to the target write side, and Bounce to write errors crossing the configured threshold.
For no-data cases, operators should preview selected points and confirm database, supertable expression, subtable expression, value column and timestamp choice. The connector supports origin_ts, request_ts and received_ts, and its CSV mapping requires a unique point_id plus a target supertable and subtable per row. The subscribe mode writes reported changes, while observe polls the latest value at a default 10-second interval. If observe writes rows but subscribe stays silent during a confirmed change, the evidence points to subscription creation, reporting or filtering.
When data arrives faster than TDengine can accept it, an optional Cache Realtime Data setting persists OPC UA messages to local files for later draining. It is disabled by default and requires a plan for disk location, capacity, monitoring and recovery testing.