DNP3

Power SCADA Protocol

Definition

DNP3 (Distributed Network Protocol 3) is a widely used SCADA communication protocol in the power industry, supporting telemetry, remote signaling, remote control, remote adjustment, and timestamped events. It is suitable for communication between substations, distribution automation, RTU, and master stations. The Chinese power industry commonly uses IEC 104, while North America and some regions mostly adopt DNP3. SimtoLink RTU supports DNP3 protocol access to power dispatching systems.

Protocol Features

DNP3 uses a layered protocol stack and supports serial (RS232/RS485) and TCP/IP transmission. Data objects include: binary input (remote status), binary output (remote control), analog input (telemetry), analog output (remote adjustment), counters, timestamped events, and more. It supports multiple masters and multiple slaves, with capabilities such as data integrity verification, time synchronization, event buffering, and unsolicited reporting. It is suitable for industries with high reliability requirements, including power SCADA, distribution automation, water treatment, and oil & gas pipelines.

Comparison with IEC 104

IEC 104 is based on IEC 60870-5-104 and was the mainstream power dispatch protocol before IEC 61850, widely used in China and Europe; DNP3 dominates in North America and some Asia-Pacific regions. Both have similar functions and support all four remote operations, but their frame formats and object models differ. Selection should be based on the master station system and regional habits. Some RTUs support both DNP3 and IEC 104 to meet different project needs.

Use Cases

DNP3 is used for communication between substation RTUs and dispatch master stations; in distribution automation, FTUs and DTUs communicate with the master station; renewable energy plant monitoring; water treatment and oil & gas pipeline SCADA. Industrial gateways and protocol converters can convert DNP3 data to Modbus, OPC UA, etc., to connect to third-party monitoring platforms or cloud platforms.

Event buffers and unsolicited reports

DNP3 keeps static values and events apart. A static value is the current snapshot. An event is a change with a timestamp. If the master polls only static values, a switch that changes between polls is lost. If it relies only on unsolicited reports and never does an integrity poll, a master restart has no initial snapshot. Events are classed, and each class can have its own confirmation and buffer depth. What happens when the buffer fills has to be agreed in advance: overwrite the oldest event, or refuse the new one. Both leave a gap after an incident. Only the position of the gap differs. Time synchronization has to finish before events start arriving in volume. Otherwise the timestamp is the outstation's free-running clock, and the sequence cannot be lined up with other stations.

The conditions include matching point numbers, object groups, and variations between master and outstation, and matching link-layer confirmation and transport fragment length. Serial and network can both carry the protocol, but timeout and retry counts cannot be copied from one to the other. Unsolicited reporting needs the master's receive window open, and a limit on bursts, so many outstations do not push events at one master at the same time. A control should use select-before-operate. Direct operate is only for points whose misoperation has already been judged acceptable. If two masters can control the same output, decide which one holds control.

Point-class and timestamps

When the point map is off by one, communication still succeeds and a status point shows the neighboring bay. The wrong object variation changes the scaling and encoding of an analog, so the value grows or becomes negative while the quality bit still says good. Treating an event count as an engineering value, or a static point's relative time as an absolute timestamp, makes the history curve jump at the hour. After an outstation restart the event buffer is empty. If the master never receives the restart indication, it assumes there were no changes in that interval.

If an unsolicited response is lost on the link and the application layer never confirms it, the outstation sends it again. The master must drop duplicates by event sequence, or one alarm becomes several. If a frozen counter is not read on the billing period, energy has a gap after the outstation rolls over. With secure authentication on, an old master that sends no authentication is refused. The link comes up and the application has no data. Do not read that as an empty point map. When converting to another protocol, keep the quality bits and the timestamp. Converting only the number writes an invalid measurement as a normal value. After a new bay is added, change the master map and the outstation mapping together. Changing only one side produces frames with no points, or points with no frames.

Restart indication and duplicate removal

After an outstation restarts, its event buffer is empty. If the master never sees the restart indication, it assumes nothing changed in between. An integrity poll should run immediately after a restart and after communication returns, and the new snapshot should replace the old state held in memory. Retransmitted events are removed by sequence number. The same sequence arriving again may update an alarm once. It must not become several work orders. Handle sequence rollover by the width of the counter. A rule that a new sequence must simply be larger drops new events at the rollover.

Control between two masters has to be exclusive. If a maintenance master forgets to release control, the dispatch master's select fails, while the site sees both masters connected. Read frozen counters on the billing period. Reading too rarely leaves a gap at rollover. Forward the quality bits with the value. An invalid measurement must not be written as a normal value. Change the point map on the master and the outstation together, and keep the old point numbers read-only for a while, so a shift changeover does not point at the wrong bay.

No matter how short the static poll is, it cannot replace a change that has already overflowed the event buffer. After an overflow, leave a mark on the master that events may have been lost, rather than showing a quiet curve. State whether timestamps are local time or Coordinated Universal Time. Mixing them shifts the sequence across midnight. After a select times out, the outstation should reject a late operate, while the master may still be waiting. A deadband that is too wide means a slow excursion never creates an event, and the graphic jumps only when a static poll happens to catch it. A deadband that is too small lets noise fill the event buffer and push out a real switch change. Archive the point-map revision with the outstation program revision. Saving point numbers without the variation lets the scale change quietly after a device is replaced.

Related Terms

Return to hardware knowledge base