Glossary · Subscriptions

Sampling interval

The sampling interval is the rate at which a server samples one MonitoredItem's attribute and evaluates its filter. It is per item, not per subscription. Zero means as fast as the server can, minus one means inherit the subscription's publishing interval. It controls acquisition; the publishing interval controls delivery of what was acquired.

Per item, and negotiated twice over

You request a sampling interval per MonitoredItem and the server returns a revised value. It is bounded from below by the Variable's MinimumSamplingInterval attribute, which tells you the fastest that node can honestly be sampled, and by whatever discrete rates the server's internal scheduler supports. Read MinimumSamplingInterval before designing a fast collection: it is the server telling you the answer in advance.

The relationship with the publishing interval

Sampling faster than publishing produces several samples per cycle, and all of them are delivered only if the queue is large enough - size it as publishing divided by sampling, rounded up. Sampling slower than publishing means cycles with nothing new. Using -1 makes the item inherit the publishing interval, which is the right default for anything that does not need its own rate and keeps the configuration honest.

What the number really means on a PLC

Few device-embedded servers poll each item independently. They map monitored items onto an underlying scan, a device subscription or a change-detection mechanism, so the effective rate is the device's, and a requested 10 ms quietly becomes the PLC's task cycle. The revised value plus a measured notification cadence, not the requested value, is what tells you the real resolution of your data.

Example

Three items, one subscription, three sampling strategies

Subscription PublishingInterval 1000 ms

  item          SamplingInterval   samples/cycle   QueueSize needed
  Motor.Speed        100 ms             10              10
  Tank.Level        1000 ms              1               1
  Line.State          -1 (inherit)        1               1
  Vibration.RMS         0 (fastest)   server-defined   size generously, watch overflow

SamplingInterval 0 is not a promise of speed - it is a request. Read the revised value.
The mistake people make: Sampling faster than you publish while leaving QueueSize at 1. With DiscardOldest true you keep only the newest sample of each cycle and lose the rest, the overflow bit is set on the survivor, and its StatusCode still reads Good - so a client that only checks for Bad sees a clean, complete-looking data stream that is missing 90 percent of its samples.

Defined in: Part 4 - Services, CreateMonitoredItems; Part 3 - Address Space Model for the MinimumSamplingInterval attribute.

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