DNP3 Driver
The DNP3 driver uses the DNP3 protocol for event-based polling, unsolicited messaging, and explicit reads to acquire data. For the previous driver, see Legacy DNP3 Driver.
The DNP3 driver does not support DNP3 Secure Authentication.
Data Acquisition Methods​
The DNP3 driver offers three distinct methods for acquiring data: event-based polling, unsolicited messaging, and explicit reads.
Event-Based Polling​
Event-based polling is the primary method of data acquisition for the DNP3 driver. Each event class (1, 2, and 3) can be configured with polling intervals. At each interval, the driver polls for all events that occurred since the previous poll. If multiple events exist for a point, they are preserved and processed sequentially. OPC UA clients with MonitoredItems set to a sampling interval of 0 will receive the full sequence of events without sampling delay. The sampling interval does not affect the class polling intervals.
Unsolicited Messaging​
Unsolicited messaging is an event-driven method of acquiring data in the DNP3 driver. Instead of polling each event class at configured intervals, the outstation automatically reports event updates whenever changes occur. The client’s sampling interval does not influence the outstation, but it does affect OPC UA MonitoredItem and Subscription behavior. OPC UA clients with MonitoredItems configured with a sampling interval of 0 will receive the full reported sequence of events for each point. Unsolicited messaging must be configured for each event class in the driver settings. Not all outstations support unsolicited messaging, so review your device’s capabilities before enabling it.
Explicit Reads​
Explicit reads allow points to be read directly using the DNP3 Read function code, returning the static or current value of each point at each poll. Events are not read or processed when using explicit reads. This method is typically used for points addressed by group/variation/index (gvi) syntax. When MonitoredItems are configured, points are polled at the client’s requested sampling interval.
Connecting to a Device​
This module requires the OPC UA module to be installed and enabled. If the OPC UA module is not installed or is disabled, this module will fault with a warning in the logs and display the state as "Faulted Missing Dependency" on the Config > Modules page.
The DNP3 driver connects to devices that support Ethernet communication through a master station. Create a separate device connection for each outstation (remote device) by setting the source and destination addresses in the device connection settings.
Go to the Config section of the Gateway Webpage.
Select OPC UA > Device Connections.
Click Create new Device.
Choose DNP3 Driver, then click Next.
On the New Device page, leave all the default values and type in the following fields:
- Name: DNP3
- Hostname: IP address or hostname of the device.
(Optional) Click Show advanced properties to see additional settings.
Click Create New Device.
The Status will change from Disconnected to Connected or Idle.
Connection Settings​
General​
Property | Description |
---|---|
Name | The name of this DNP3 device connection. |
Description | An optional description for the connection. You can use this field to add any helpful comments about the connection. |
Enabled | If checked (True), the connection is enabled. If unchecked (False), the connection is disabled. |
Connectivity​
Property | Description |
---|---|
Hostname | The hostname or IP address of the outstation device. |
Port | The TCP port used to connect to the outstation. Default is 20000. |
Source Address | The DNP3 data link address of the local (master) device. Default is 3. |
Destination Address | The DNP3 data link address of the remote (outstation) device. Default is 4. |
Response Timeout (ms) | The time to wait for a response from the outstation, in milliseconds. Default is 5000. |
Keep Alive Timeout (ms) | The maximum inactivity time, in milliseconds, before a link-layer keep-alive message is sent. Default is 3,600,000. |
Data Acquisition​
Property | Description |
---|---|
Integrity Poll Period (ms) | How often to perform an integrity poll (requesting Class 1/2/3/0 data). Disabled if set to 0. Default is 3,600,000. |
Class 1 Poll Period (ms) | How often to poll Class 1 event data. Disabled if set to 0. Default is 10,000. |
Class 2 Poll Period (ms) | How often to poll Class 2 event data. Disabled if set to 0. Default is 10,000. |
Class 3 Poll Period (ms) | How often to poll Class 3 event data. Disabled if set to 0. Default is 10,000. |
Unsolicited Event Classes | Specifies which event classes are enabled for unsolicited reporting. Leave blank if unsolicited messaging is not being used. Default is blank. |
Analog Operation​
Property | Description |
---|---|
Command Mode | The command mode for analog outputs. DIRECT_OPERATE or SELECT_BEFORE_OPERATE. Default is DIRECT_OPERATE. |
Read After Operate | If enabled, issues an explicit read after operating analog outputs. Useful if the outstation does not generate analog output events. Default is false. |
Read After Operate Delay (ms) | The delay between operating an analog output and reading it back, in milliseconds. Default is 0. |
Binary Operation​
Property | Description |
---|---|
Command Mode | The command mode for binary outputs. DIRECT_OPERATE or SELECT_BEFORE_OPERATE. Default is DIRECT_OPERATE. |
Read After Operate | If enabled, issues an explicit read after operating binary outputs. Useful if the outstation does not generate binary output events. Default is false. |
Read After Operate Delay (ms) | The delay between operating a binary output and reading it back, in milliseconds. Default is 0. |
Trip Close Code | Specifies the trip/close action for binary outputs: NUL, CLOSE, or TRIP. Default is NUL. |
Op Type | The type of operation for binary outputs. LATCH or PULSE. Default is LATCH. |
Count | The number of operations to perform for binary outputs. Default is 1. |
On Time (ms) | The amount of time the output remains active (on), in milliseconds. Default is 0. |
Off Time (ms) | The amount of time the output remains inactive (off), in milliseconds. Default is 0. |
Advanced​
Property | Description |
---|---|
Auto Time Sync | New in 8.1.39 Automatically synchronizes the Gateway's time with the outstation when the NEED_TIME indication is set. Default is true. |
Octet Strings Are Strings | New in 8.1.44 When enabled, Octet String points are delivered as String types instead of ByteString types. Default is false. |
Logging​
Property | Description |
---|---|
Application Layer Debug Logging | Enables debug logging for the DNP3 application layer. Default is false. |
Physical Layer Debug Logging | Enables debug logging for the DNP3 physical layer. Default is false. |
Sequence of Events​
Sequence of events can be preserved using both event-based polling and unsolicited messaging. It’s recommended to use a dedicated Tag Group with the following non-default settings:
- OPC UA Queue Size: Increase this value based on the maximum number of queued events you expect during normal polling intervals or communication outages. Ignition typically has far more memory available than most outstations, which often have small, fixed-size buffers. The ideal queue size depends on your outstation's capabilities and should be determined from its technical documentation.
- OPC UA Sampling Interval: Set the Sampling Interval to 0 to enable event-based reporting for MonitoredItems instead of sample-based updates. This allows multiple rapid events to be reported accurately while maintaining OPC UA compliance.
If sequence preservation is critical, ensure your device supports Sequence of Events (SoE) reporting.