NEED_TIME never clears: 9,705 DNP3 time writes in 10 minutes
IIN1.4 NEED_TIME is how a DNP3 outstation asks to be synced. The master writes the time, the outstation applies it and clears the flag. When the outstation does not clear it, a master that syncs on every NEED_TIME it sees, without a limit, turns one request into a loop.
The setup
RTU 51 sets NEED_TIME and keeps it set whatever the master writes: in the field this is an RTU whose time comes from GPS or IRIG-B and which ignores DNP3 time writes, or a firmware bug. The master writes the time whenever it sees the flag. Ten minutes of capture.
What the capture shows
| 10 minutes | Value |
|---|---|
| Responses from the RTU | 10,011 |
| Responses with NEED_TIME set | 10,011 |
| Time writes (WRITE g50) from the master | 9,705, about 16 a second |
| Normal data polls | 304 |
| Writes rejected by the RTU | 0 |
- Every write is answered with SUCCESS. The request was accepted; the flag says it was not applied, or not enough to satisfy the outstation.
- The master spends 97% of its requests on this RTU writing the time. On a multidrop line or a shared gateway, every other outstation waits behind it.
- Over a full hour the same pattern produced more than 58,000 writes, and each of them left NEED_TIME set.
What to change
- On the master: limit time syncs per outstation (for example, at most one a minute) and raise an alarm when NEED_TIME survives a write. A sync that does not clear the flag is a fault to report, not a reason to try again at once.
- On the outstation: decide which time source has priority. If GPS or IRIG-B owns the clock, configure the RTU not to request DNP3 time, as in the GPS case.
- Check after every sync that the flag actually clears: the response to the write, and the next poll.
Try it on your own capture
ComputingSphere DNP3 counts time syncs per outstation and per hour, and reports the syncs after which NEED_TIME was still set. 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.