Skip to main content
Version: 8.1

DNP3

DNP3 is a protocol used commonly in utilities like water and electric companies. It is commonly used to connect to one master station (device) that is then connected to several other devices. This creates a web of devices without taxing the network too much. DNP3 is similar to the Modbus protocol in that it is more device agnostic, but it's newer, more robust, and because of that, more complex. You can use it to connect to many modern devices, check your documentation to see whether your device supports DNP3.

note

The DNP3 driver does not support DNP3 Secure Authentication.

DNP3 Drivers​

Ignition supports two DNP3 drivers:

  • DNP3 Driver
  • Legacy DNP3 Driver

Drivers installed prior to 8.1.35 are now referred to as the Legacy DNP3 driver. In Ignition versions 8.1.35 and above, the DNP3 driver will be automatically selected on new Ignition installations with the Legacy DNP3 driver now available as an optional choice. The Legacy DNP3 driver will still function the same as before, but will no longer receive continued support.

Scripting Functions​

To avoid namespace conflicts, scripting functions for the DNP3 driver are under the system.dnp prefix, while the Legacy DNP3 driver scripting functions will remain unchanged and under the system.dnp3 prefix.

Supported Operating Systems​

Both the DNP3 and Legacy DNP3 drivers are compatible with the following operating systems:

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

The native libraries used by both the DNP3 and Legacy DNP3 drivers are not currently supported on macOS.

Upgrade from the Legacy DNP3 Driver to DNP3 Driver​

Those wishing to upgrade from the Legacy DNP3 driver may do so manually.

  1. Delete or rename the Legacy DNP3 device.
  2. Create a new device under the original name of the Legacy DNP3 device.
  3. Fix tag references as necessary.
note

It’s important to pay attention to the new settings that are available and understand that the DNP3 driver operates quite differently than the Legacy DNP3 driver.

Connecting to a Device​

Inductive University

Connection to DNP3 Devices

Watch the video

Ignition's DNP3 driver can connect directly to any devices that support Ethernet communication through the master station. It is important to make a new device connection for each of the outstations (remote devices), setting the source and destination addresses for each in Ignition's device connection.

  1. Go to the Config section of the Gateway Webpage.

  2. Scroll down and select OPC UA > Device Connections.

    Connecting to a Device Step 2

  3. On the Devices page, find the blue arrow and click on Create new Device.

  4. On the Add Device Step 1: Choose Type page, select DNP3 Driver, and click Next.

    Connecting to a Device Step 4

  5. On the New Device page, leave all the default values and type in the following fields:

    • Name: DNP3
    • Hostname: Enter IP address or hostname of the device.
  6. You can check the box for Show advanced properties? to see the additional settings, but you can keep all the defaults.

  7. Click Create New Device. The Devices page is displayed showing the DNP3 device is successfully created and added to Ignition. The Status will show as Disconnected and then Connected or Idle, depending on the status of the device.

Connection Settings​

General​

PropertyDescription
NameThe name of this DNP3 device connection.
DescriptionDevice connection description (optional). Can be used to provide any useful information/comments about this connection.
EnabledIf True (checked), the connection is enabled; if False ( unchecked), the connection is disabled.

Main​

PropertyDescription
HostnameThe IP Address of the device.
PortThe port to use when connecting to a DNP3 device. The default port is 20000.
Local Address​
New in 8.1.8
The local address to connect from when establishing a TCP connection. If left blank, then the driver will simply pick an available address.
Source AddressThe address of the master station, default is 3.
Destination AddressThe address of the outstation, default is 4.
Integrity Poll IntervalThe interval at which to perform an integrity poll, in millis, default is 3,600,000.
Direct Operate EnabledWhen true, the Direct-Operate function code is used on a write, otherwise Select-Operate is used, default is true.
Unsolicited Messages EnabledWhen true, the outstation may send unsolicited messages for Class 1, 2, and 3 data, default is false.

Advanced​

PropertyDescription
Message Fragment SizeThe maximum size of a message fragment in the application layer, default is 249.
Message TimeoutThe amount of time to wait for a message response from the outstation, default is 5,000.
RetriesThe number of retries on a message timeout, default is 0.
Time Synchronization Enabled​
New in 8.1.17
When true, automatically synchronizes the gateway time to the outstation when requested, default is true.
Link Layer ConfirmationWhen true, a link layer confirmation will be required from the outstation when sending messages, default is false.
Default Outstation Conformance levelThe default DNP3 Application Layer level subset to use when communicating with the outstation.

Default Value Types​

PropertyDescription
Analog Input PointsThe default value type to use when reading an analog input point. Default is INTEGER.
Analog Input Frozen PointsThe default value type to use when reading a frozen analog input point. Default is INTEGER.
Analog Output PointsThe default value type to use when reading/writing an analog output point. Default is INTEGER.
Counter PointsThe default value type to use when reading a counter point. Default is INTEGER.
Counter Frozen PointsThe default value type to use when reading a frozen counter point. Default is INTEGER.
Binary Input PointsThe default value type to use when reading a binary input point. Default is WITH_FLAGS.
Double-Bit Binary Input PointsThe default value type to use when reading a double-bit binary input point. Default is WITH_FLAGS.
Binary Output PointsThe default value type to use when reading a binary output point. Default is WITH_FLAGS.
note
  • Source Address and Destination Address: These addresses are assigned to the computers and should be the same across all settings, because of this the settings in Ignition and the settings in the device are the opposite of each other. For example, if the device is configured with an address of 4 and Ignition has an address of 3:
    • The settings in Ignition should have the Source Address set to 3 and the Destination Address set to 4.
    • The settings in the Device should have the Source Address set to 4 and the Destination Address set to 3.
  • Unsolicited Messages Enabled property: Setting this property to True (checking the box) allows the outstation to send unsolicited messages to Ignition. This means that Ignition will connect to the outstation, but not request any data from it. Ignition waits for the outstation to send data. Not all devices support this option; those that do need to be configured to use it. Please refer to your device's documentation for more information.

Internal Indicators​

Each response received from a connected outstation will contain an Internal Indication (IIN) bit field. This field indicates certain states or error conditions in the outstation. IINs are mapped to read-only points, indicating the following:

  • Broadcast message received (Broadcast)
  • Additional Class 1, 2, or 3 event data is available (Class 1 Events, Class 2 Events, Class 3 Events)
  • Time synchronization required in the outstation (Need Time)
  • Some output points are in local mode (Local Control)
  • An abnormal condition exists (Device Trouble)
  • The outstation device has restarted (Device Restart)
  • Function code not implemented (No Func Code Support)
  • Object Unknown (Object Unknown)
  • Request parameter error (Parameter Error)
  • Outstation event buffer overflow (Event Buffer Overflow)
  • An operation is already executing (Already Executing)
  • Configuration corrupt (Config Corrupt)

Terminology​

  • Unsolicited Response: An Application Layer message from an outstation to a master for which no explicit request was received. The request is implied by the act of a master enabling unsolicited reporting of various points within an outstation.
  • Integrity Poll: Requests all event data, followed by the static data of all points assigned to one of the four classes (static Class 0 or event Class 1, 2, or 3).
  • DNP3TIME: Universal Coordinated Time (UTC) time expressed as the number of milliseconds since the start of January 1, 1970. The effective date for using the UTC time base is January 1, 2008. Prior to this, DNP3 did not require a specific time reference.

Aliased Points​

Aliased points allow the user to assign meaningful names and descriptions to DNP3 points. They are also useful for addressing any points that were not returned by the initial integrity-poll on connection.

PropertyDescription
Point AddressThe group, variation, and index that fully describe a point. A full address consists of all three parts:
  • Group – An integer prefixed with g. For example, g40
  • Variation – An integer prefixed with v. For example, v2
  • Index – An integer prefixed with i. For example, i5
Example: g30v1i20
Browse PathA β€œ/” separated folder hierarchy in which to create the aliased point.
Example: Facility1/Voltage
DescriptionA user-defined description of the point mapping.
note

Tags that have been created based on these aliases may need to have their OPC Item Path adjusted if the Point Address from the _Aliased Points_ configuration is modified.

Buffered Events​

Buffered events can be enabled by setting the Queue Size property on the corresponding Tag Group to a number greater than 1. See Queue Size on the Tag Groups page for more information. The Queue Size property value represents the number of buffer events that will be handled by the driver. The queue always keeps the most recent events, dropping older events. For example, if Queue Size is set to 20, and 30 value changes occur on the device while disconnected, then the 10 oldest events would be ignored by the driver.

After recovering from a disconnect, the driver will playback missed events from the driver, and update the value on the corresponding Ignition Tags by cycling through each event quickly, from oldest event in the buffer to the most recent. This value change will trigger value changes in certain systems. Specifically:

  • Alarms events (recent events as well as alarm journal records)
  • Tag History records (when the History Sample Mode is set to "On Change")
  • Tag Events Scripts

Once finished cycling through the buffered values, the tag will resume showing the live value.

Support of this Feature​

This Buffered Events feature can only be used by devices that support Sequence of Events (SoE), and have the option enabled for points Ignition is subscribed to. Note that the data type for SoE may differ from the data type that is received by normal subscription. This is generally due to a configuration on the Default Variation property in the device.

Browsing DNP3 Points​

Inductive University

About DNP3 Addressing

Watch the video

When the driver (master) connects to a device (outstation), an integrity poll is performed. Any DNP3 objects returned in the response that fall under the Point Type categories listed in the table on the right are mapped to the OPC server with the appropriate index. (For example, g40v1i2 corresponds to an AnalogOutput point, variation 1, index 2.)

To see the points mapped, you can go to the Designer, and open the Connected Devices window.

Point Types​

Type NameGroupSupported Variations
SingleBitBinaryInput11 - Packed format2 - With flags
DoubleBitBinaryInput31 - Packed Format2 - With flags
Binary Output101 - Packed Format2 - 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