← ComputingSphere

Reading room · Case study · 30 October 2026

Clock drift you can measure from DNP3 events: 1 second an hour on an RTU nobody syncs

Every RTU clock drifts. A typical crystal is good to 20 to 100 ppm; a poor one, or one out of its temperature range, can be 300 ppm or worse, about a second an hour. Regular syncs hide it. An RTU that is never synced shows it, slowly, in every event it sends.

The setup

Two outstations, 51 and 52, on the same connection, for 6 hours. The master syncs RTU 51 every 30 minutes. RTU 52 was left out of the sync plan by a configuration slip, and its clock runs 300 ppm slow. RTU 52 never raises NEED_TIME, so nothing on the SCADA complains.

What the capture shows

6 hoursRTU 51 (synced)RTU 52 (never synced)
Events reported205205
Event delay, median1.2 s4.5 s
Event delay, max2.1 s8.2 s
Drift measured from the events--1.05 s per hour
Time syncs120
  • The delay of RTU 52's events is not noise around a value, it is a slope: a little longer every hour. The slope is the drift, measured here as -1.05 s/h, against 1.08 s/h for 300 ppm.
  • Nothing reads RTU 52's clock in the capture. The drift comes entirely from comparing event timestamps with arrival times, anchored on RTU 51's syncs on the same connection.
  • Over a month without a sync, the same RTU would stamp its events about 13 minutes off.

What to check

  • Every outstation should appear in the sync plan, or have another time source. A capture of a few hours lists the ones that never get a sync.
  • Plot event delay against time per outstation. Flat is healthy; a slope is drift; a step is a jump.
  • From the drift, choose the sync interval: at 1 s/h, a 30-minute sync keeps the error under half a second.

Try it on your own capture

ComputingSphere DNP3 measures each outstation's clock drift from how its event delays change over the capture, in seconds per hour, even for an outstation that is never synced. It only reads what already went over the wire. This capture is among the examples of every free account, to reproduce every number here; or upload your own: the Free plan covers 1,000 messages a month.

More cases