Introduction to the DNP3 standard

Introduction to the IEEE 1815 – DNP3 standard


The remote control of substations or power plants allows the utility to control locations separated long distances from a centralized control room optimizing the use of resources for that task. This is one of the objectives of DNP3 standard.

The definition of standardized remote control protocols makes it possible to integrate systems automated by different vendors with the utility control centre. This allows controlling the system without the need of protocol converters or adaptations.

When the communication options were limited due to the bandwidth available, the remote control protocols used serial communication through radio links or the telephone networks in most cases though private networks.

IEC defined the remote control protocol IEC 60870-5-101. However, as this standard did not fulfil all the requirements of the USA utilities, the company Harris, Distribute Automation Products develop the first version of the DNP3 standard. In 1993, DNP3 users group started to maintain and improve this protocol as an open automation solution.

Initially DNP3 used serial communications as IEC 60870-5-101, nowadays DNP3 allow using TCP/IP or UDP/IP communications over IP networks to improve the system communication response time.

DNP3 is a protocol based on numerical identification of the data objects. It is designed for monitoring and controlled remote stations called Outstation in the DNP3 specification. Its use can also be found in the automation of several processes as energy substation even for the communication of the protection devices with the local SCADA or GATEWAY.

In 2010 the DNP3 technical specification was normalized under the IEEE 1588 standard.


Specification defines 3 building blocks in any DNP3 implementation:

  • Application layer.
  • Transport function.
  • Link layer.
Introduction to the DNP3 standard building block

DNP3 building block

Basic data types

The information provided by a DNP3 device can be divided into 4 categories:

  • Binary input.
  • Binary output.
  • Analogue input.
  • Analogue output.

These basis types are extended with the use of

  • Counter
  • Double bit input. (Typical signal for breakers and switches with status information through two digital inputs).
Introduction to the DNP3 standard basic data types

DNP3 basic data types

Each data object in the DNP3 data base of an Outstation is called Point and it is identified by an Index.

The value that has the point is called its static value. When this value changes or a command is received an Event is generated.

The events can be stored in one of the three available categories defined in DNP3 (class 1, class 2 or class 3).


Introduction to the DNP3 standard static and event classes

DNP3 static and event classes

Three properties are used in order to identify a DNP3 point any protocol message sent:

  • Group: identifies the type of the information that is sent in the message. As an example, current value of the binary inputs.
  • Index: the address of the point in the database.
  • Variation: identifies the format of the information being sent detailing if the information uses quality and/or timestamp or for instance the format of the analogue value being sent between integer or floating point.

Application layer

The application layer defines the functions exchanged between the controlling station (Master) and the controlled station (Outstation).


The basic DNP3 functions are:

1: READ: read request for the static value or events stored.

2: WRITE: write request of attributes of the outstation.


The most common control functions are the following:

3: SELECT: control service to get access to a controllable point.

4: OPERATE: command sent after the selection of a controllable point.

5: DIRECT_OPERATE: direct command without previous selection.


The basic counter management functions are:

7: IMMED_FREEZE: request to freeze the specified counters.

9: FREEZE_CLEAR: request to freeze and reset to zero for the specified counters.


DNP3 also provides function to reboot the Outstation:

13: COLD_RESTART: total rest of the Outstation.

14: WARM_RESTART: reset of the application layer of the Outstation.


The functions to classify the event classes and to activate and deactivate the spontaneous event transmission are the following:


20: ENABLE_UNSOLICITED: this function enables the spontaneous event reporting.

21: DISABLE_UNSOLICITED: this function disables the spontaneous event reporting. If the spontaneous transmission is disabled the master can read periodically the events stored.

22: ASSIGN_CLASS: this function can assign an event class to the specified points. Generally the outstation can provide an event organization. This function can modify this organization to classify the events with the master required categorization.

DNP3 defines several other functions as the ones to manage Files.

The DNP3 application layer defines two data structures called Fragment: the Fragment Request and the Fragment Response. The difference between then is the inclusion of a extra field of 16 bits in the response that its called Internal Indications and it brings information about the state of the Outstation or indications of the result of the function requested.


A fragment can be built of different Object Sections. These Sections can include DNP3 Objects.


Figure-4-DNP3 fragment format

Figure-4-DNP3 fragment format

The Fragment header format is the following:

Figure-5-DNP3 fragment header

DNP3 fragment header

Transport function

As the application fragments can be bigger that the maximum size of the data link layer frame (249 bytes), the transport function chops the fragments in the sender and rebuild their content in the receiver.


At the transport function level, each block is called Segment.

Figure-6- Fragment segmentation

Fragment segmentation

Each segment carries a subset of the bytes the fragment and a transport function header. This header only uses one byte with the following format:


Figure-7- Transport function header

Transport function header

  • FIR bit: indicates that this segment is the first one of a fragment.
  • FIN bit: indicates that this segment is the last one of a fragment.
  • SEQ: incremental counter to check that no segment is lost or duplicated when the intermediate segments are sent.

If one Fragment can be send inside one Segment, this segment sets the FIR and FIN bits.

Link layer

The link layer is in charge of the addressing and error detection (CRC – Cyclic Redundancy Check)

The use of serial communication used confirmation messages to validate the reception of each frame sent.  With the use of TCP/IP connections, most of the link layer functionality is not used any more as TCP/IP guarantees the correct data transport.


The link layer frame format is the following:

Figure-8- Link layer frame

Link layer frame

  • Len: indicates the frame length. Its maximum value is 255 that indicates a maximum of 249 bytes of application layer data)
  • Ctrl: identifies the link layer service in use
  • Destination y Source: link layer addresses (only used with serial point to multipoint communications).
  • User data: a segment provided by the transport function.
  • CRC: the header and each 16 data bytes block include 2 extra bytes with a CRC to check that the message content is correct.

Object library

DNP3 defines different group to provide the current values, the events stored in the Outstation or to modify its parameters or controllable points.

The groups are organized by information type.

Figure-9- Information object groups

Information object groups

For each Object Group in DNP3, the specification describes the available Variations and their format.


DNP3 defines different functions and configuration parameters. For each object group there are several variations and also the DNP3 fragments can be sent using different formats.

The subset of available options is defined in the device interoperability profile document.

This document can be provided in paper with information included in the standard tables.


Introduction to the DNP3 standard Text format interoperability document

Text format interoperability document

Optionally a vendor can provide this information in a XML format called Dnp3DeviceProfile that has been included in the latest versions of the DNP3 specification.


Introduction to the DNP3 standard Dnp3DeviceProfile XML document

Dnp3DeviceProfile XML document

The XML format can be converted in a text version using a provided XSLT (XML transform) file.

DNP3 Implementation levels

As the protocol functions and variations are quite longer than the options available in other protocols as IEC 60870-5-101/104. DNP3 users group has defined 4 implementation levels, being the level 1 the less demanding and the level 4 the more complex.

Each higher level requires the implementation of more application functions and variations in the DNP3 object groups.

Test specification

For each DNP3 implementation level, the DNP3 users group specifies the test procedures to validate the products. Nowadays the level 1 and 2 are available and the users group is working to provide test procedures for the levels 3 and 4.

DNP3 to IEC 61850 gateway

The technical specification IEEE 1815.1 identifies how to translate the data provided by an IEC 16850 system to a control centre through a DNP3 gateway.

Security extensions

Since 2010 the DNP3 specification includes secure authentication. The initial security specification called DNP3 SAv2 uses the same principles as IEC 62351-5.

In 2012, the security extensions have been updated to the version DNP3 SAv5. DNP3 Users Group provides the test procedures to validate the DNP3 secure implementations and promotes the use of the secure features.

DNP3 COMMON TERMS                                                                  

  • ASDU – Application Service Data Unit. Data structure that holds application layer information to exchange between a control centre and a remote terminal unit.
  • DNP3 – Distributed Network Protocol version 3. Protocol used for automation and remote control communication with serial and TCP-IP capabilities that is used in substation automation and the communication with control centers.
  • IEC – International Electrotechnical Commission – International organization that develops standards related to the energy sector.
  • IEC 60870-5-101/104 Protocol serial or TCP/IP to exchange data from a substation to the control centre.
  • IED – Intelligent Electronic Device – Any equipment with communication capabilities used to automate a system.
  • RTU – Remote Terminal Unit – Device that gather the information of a whole system and send it to the control centre using protocols as DNP3 or IEC 60870-5-101/104.

ENSOTEST is a company that develops test automation tools for DNP3 protocol. DNP Users Group.

Fill the form to receive a free copy of this article in pdf

    Categories: Energy system automation, Smart grids, Ethernet, Substation, Remote control