OPC UA services: Browse, Read, Write, Call and Subscriptions
What a client actually does: browsing, reading and writing attributes, calling methods, and how subscriptions with monitored items replace polling.
Service sets you use
| Service | What it does |
|---|---|
| Browse / BrowseNext | Follows references from a node to discover the address space |
| TranslateBrowsePathsToNodeIds | Resolves a path like Objects/Plant/Motor1/Speed to a NodeId |
| Read | Reads attributes (usually Value) of one or many nodes in one request |
| Write | Writes attributes; the server checks AccessLevel and data type |
| Call | Executes a Method with input arguments |
| CreateSubscription / CreateMonitoredItems | Asks the server to report changes |
| HistoryRead | Reads archived values if the node is historized |
Group reads and writes: one Read with 500 nodes is far cheaper than 500 separate requests.
Subscriptions
A subscription belongs to a session and has a publishing interval — how often the server may send a notification message. Inside it, monitored items watch individual nodes:
| Parameter | Meaning |
|---|---|
| Sampling interval | How often the server samples the source (can be faster than publishing) |
| Queue size | How many samples are kept between two publishes; 1 = latest value only |
| Discard oldest | Which value is dropped when the queue is full |
| Filter (DataChange) | Trigger on Status / Status+Value / Status+Value+Timestamp; deadband absolute or percent |
If nothing changes, the server sends keep-alive messages. A subscription is deleted when the client stops publishing requests for lifetime count × publishing interval.
Example: publishing 1000 ms, sampling 100 ms, queue 10 — the client receives up to 10 samples per second in one message, none lost.
Events
Event monitored items subscribe to an object's notifier (often Server) and deliver alarms and events with selected fields (Time, Severity, Message, SourceName). Alarms & Conditions add states such as Active, Acked and Confirmed.
Good practice
- Do not poll with Read every 100 ms from many clients — subscribe.
- Use deadbands for analog values to reduce traffic.
- Check the StatusCode of every value: a "value" with
Badstatus is not a measurement. - Respect
MinimumSamplingInterval: requesting 10 ms from a node that updates every 100 ms only creates duplicates.
Connections
Open in Knowledge Graph →Loading the map…
Sources
- OPC 10000-4 Part 4: Services (v1.05) — OPC Foundation
- OPC 10000-3 Part 3: Address Space Model (v1.05) — OPC Foundation
Updated 2026-10-02