Skip to main content
Version: 8.3 Beta 🚧

DNP3

DNP3 is a communication protocol commonly used in water and electric utilities. It connects a central master station to multiple remote devices, known as outstations, creating a distributed network without overwhelming the communication infrastructure. This page covers connection details and general protocol requirements for using DNP3.

Compared to Modbus, DNP3 is a newer and more robust protocol. It supports a wider range of features but is also more complex. Always consult your device documentation to confirm whether DNP3 is supported.

note

The DNP3 drivers do not support DNP3 Secure Authentication.

DNP3 Drivers​

Ignition provides two DNP3 drivers:

The DNP3 driver is installed by default on new Ignition installations. The DNP3 Driver (Legacy) remains available as an optional module but no longer receives updates or ongoing support.

Scripting Functions​

The DNP3 Driver and DNP3 Driver (Legacy) use the following syntax for their respective scripting functions to avoid namespace conflicts:

  • The DNP3 Driver uses the system.dnp scripting namespace.
  • The DNP3 Driver (Legacy) uses the system.dnp3 namespace.

See the scripting functions appendix for details.

Supported Operating Systems​

Both DNP3 drivers are supported on:

  • Windows x64
  • Linux x64
  • Linux arm32
  • Linux arm64
note

The native libraries for both drivers are not currently supported on macOS.

Upgrading from DNP3 Driver (Legacy)​

To migrate from the DNP3 Driver (Legacy):

  1. Delete or rename the existing Legacy device.
  2. Create a new DNP3 Driver device and in the name field, use the old DNP3 Driver (Legacy) name.
  3. Update any tag references as needed.
tip

Review the new driver’s settings carefully, since its configuration and polling model differ from the Legacy driver.

Internal Indicators​

Each response from an outstation includes an Internal Indication (IIN) bit field. This field reports various states or error conditions within the device. These IIN bits are exposed as read-only points. Refer to the table below for descriptions of what the exposed IIN bits indicate.

IndicatorDescription
BroadcastA broadcast message was received.
Class 1 EventsAdditional Class 1 event data is available.
Class 2 EventsAdditional Class 2 event data is available.
Class 3 EventsAdditional Class 3 event data is available.
Need TimeThe outstation requires time synchronization.
Local ControlOne or more outputs are in local (manual) control mode.
Device TroubleAn abnormal condition exists within the device.
Device RestartThe outstation has restarted.
No Func Code SupportThe requested function code is not implemented.
Object UnknownThe requested object is unknown or unsupported.
Parameter ErrorThere was an error with one or more request parameters.
Event Buffer OverflowThe outstation’s event buffer has overflowed.
Already ExecutingA previously requested operation is still executing.
Config CorruptThe outstation's configuration is corrupted.

Terminology​

TermDefinition
Unsolicited ResponseA message sent from the outstation to the master without a direct request. This behavior is enabled when the master allows unsolicited reporting of points.
Integrity PollA request from the master that gathers all current event data (Classes 1–3), followed by the static data (Class 0) for each configured point.
DNP3TIMEA timestamp format in UTC, measured as the number of milliseconds elapsed since January 1, 1970. As of 2008, this format is the required time base for all DNP3 timestamps.

Aliased Points​

Aliased points let you assign meaningful names and folder paths to DNP3 points. They are especially useful for addressing points that were not returned during the initial integrity poll.

PropertyDescription
Point AddressThe group, variation, and index that fully describe a point. A full address includes:
  • An integer prefixed with g for group (e.g., g40)
  • An integer prefixed with v for variation (e.g., v2)
  • An integer prefixed with i for index (e.g., i5)
Example: g30v1i20
Browse PathA / separated folder path where the point should appear.
Example: Facility1/Voltage
DescriptionA user-defined description of the point. [Optional]
note

If you change a point address after creating tags, you must update the OPC Item Path for those tags.

Buffered Events​

Buffered events allow missed events to be preserved and replayed after a disconnect. This feature can be enabled by setting the Queue Size property on the corresponding Tag Group to a value greater than 1.

The Queue Size determines how many events the driver will buffer per tag. The driver retains only the most recent events, dropping older ones when the buffer is full. For example, if the Queue Size is set to 20 and 30 value changes occur while the device is disconnected, the 10 oldest events will be dropped.

When the connection is restored, the driver plays back buffered events in order from oldest to newest. This updates the corresponding Ignition tag for each event, which can trigger value changes in systems such as:

  • Alarms and Alarm Journals
  • Tag History (in On Change mode)
  • Tag Event Scripts

Once playback completes, the tag resumes showing live values.

tip

This Buffered Events feature can only be used by devices that support Sequence of Events (SoE). The SoE data type may differ from the standard data type returned by subscriptions. This may be due to a configuration on the Default Variation property in the device.

Browsing DNP3 Points​

When the driver connects to an outstation, it performs an integrity poll to map available points to the OPC UA server with group, variation, and index addressing. You can review these mapped points in the Designer under the Connected Devices window.

Inductive University

About DNP3 Addressing

Watch the video

Point Types​

Type NameGroupSupported Variations
SingleBitBinaryInput11 - Packed format
2 - With flags
DoubleBitBinaryInput31 - Packed Format
2 - With flags
Binary Output101 - Packed Format
2 - With flags
Counter201 - 32-bit with flags
2 - 16-bit with flags
5 - 32-bit
6 - 16-bit
FrozenCounter211 - 32-bit with flags
2 - 16-bit with flags
5 - 32-bit with flags and time
6 - 16-bit with flags and time
8 - 32-bit
10 - 16-bit
AnalogInput301 - 32-bit with flags
2 - 16-bit with flags
3 - 32-bit
4 - 16-bit
5 - Float with flags
6 - Double with flags
FrozenAnalogInput311 - 32-bit with flags
2 - 16-bit with flags
3 - 32-bit with time of freeze
4 - 16-bit with time of freeze
5 - 32-bit
6 - 16-bit
7 - Float with flags
8 - Double with flags
AnalogOutput401 - 32-bit with flags
2 - 16-bit with flags
3 - Float with flags
4 - Double with flags
OctetString1100 - 225

For variation details, consult your device’s documentation.