Skip to main content
Version: 8.1

DNP3 Driver

New in 8.1.36


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.

note

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​

This method serves as the primary approach to data acquisition for the DNP3 driver, but is not present in the Legacy DNP3 driver.

Within the DNP3 driver settings, each of the event classes (1, 2, and 3) can be configured with polling intervals. At these intervals, the driver polls each class for all events that have occurred since the previous class poll. If applicable, multiple events per point are preserved and processed in a sequential manner. OPC UA clients configured with MonitoredItems set to a sampling interval of 0, indicating an interest in report-by-exception or event-based changes, will receive the complete sequence of events for each point. The sampling interval requested by the client does not affect the class polling intervals.

Unsolicited Messaging​

Unsolicited messaging, also available in the Legacy DNP3 driver, shares similarities with event-based polling in its event-driven approach to data processing. However, instead of explicitly polling each class at configured intervals, the outstation reports events only when changes occur within the outstation. The client's sampling interval does not influence the outstation, but does affect OPC UA MonitoredItem and Subscription behavior. OPC UA clients with MonitoredItems set to a sampling interval of 0 will receive the entire reported sequence of events for each point. This can be configured for each class. It's important to note that not all outstations support unsolicited messaging.

Explicit Reads​

Explicit reads, the primary method used in the Legacy DNP3 driver, represent the method where points are explicitly read using the DNP3 Read function code, providing only the static or current value of each point at each poll. Events are neither read nor processed in this method of data acquisition. Explicit reads are employed when data points are addressed using the group/variation/index (gvi) syntax. For MonitoredItems, points are polled at the sampling interval requested by the client, using the DNP3 Read function. The Legacy DNP3 driver's behavior can be approximated by using gvi addressed tags.

Connecting to a Device​

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.
  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.
  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. 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 or comments about this connection.
EnabledIf True (checked), the connection is enabled; if False (unchecked), the connection is disabled.

Connectivity​

PropertyDescription
HostnameThe hostname or IP address component of the outstation endpoint.
PortThe port component of the outstation endpoint. Default is 20000.
Source AddressThe local (master) DNP3 data link address. Default is 3.
Destination AddressThe remote (outstation) DNP3 data link address. Default is 4.
Response Timeout (ms)The response timeout duration. Default is 5,000.
Keep Alive Timeout (ms)The inactivity interval that will trigger a link-layer keep-alive message. Default is 3,600,000.

Data Acquisition​

PropertyDescription
Integrity Poll Period (ms)The period at which to issue an integrity (Class 1/2/3/0) poll; disabled if 0. Default is 3,600,000.
Class 1 Poll Period (ms)The period at which to issue a poll for Class 1 events; disabled if 0. Default is 10,000.
class 2 Poll Period (ms)The period at which to issue a poll for Class 2 events; disabled if 0. Default is 10,000.
Class 3 Poll Period (ms)The period at which to issue a poll for Class 3 events; disabled if 0. Default is 10,000.
Unsolicited Event ClassesThe event classes describing which data classes are enabled or disabled for unsolicited messaging. Leave blank if unsolicited messaging is not to be used. Default is blank.

Advanced Properties​

Analog Operation​

PropertyDescription
Command ModeThe command mode to use when issuing commands for analog outputs; DIRECT_OPERATE or SELECT_BEFORE_OPERATE. Default is DIRECT_OPERATE.
Read After OperateWhether an explicit read should be issued after operating analog outputs. Useful when an outstation does not support generating analog output events or assigning them to a class. Default is false.
Read After Operate Delay (ms)Delay, in milliseconds, the read operation after operating to the Analog outputs. Default is 0.

Binary Operation​

PropertyDescription
Command ModeThe command mode to use when issuing commands for binary outputs; DIRECT_OPERATE or SELECT_BEFORE_OPERATE. Default is DIRECT_OPERATE.
Read After OperateWhether an explicit read should be issued after operating binary outputs. Useful when an outstation does not support generating binary output events or assigning them to a class. Default is false.
Read After Operate Delay (ms)Delay, in milliseconds, the read operation after operating to the Binary outputs. Default is 0.
Trip Close CodeThe trip close code to use when issuing commands for binary outputs; NUL, CLOSE, or TRIP. Default is NUL.
Op TypeThe operation type to use when issuing commands for binary outputs; LATCH or PULSE. Default is LATCH.
CountThe count to use when issuing commands for binary outputs. Default is 1.
On Time (ms)The on-time to use when issuing commands for binary outputs. Default is 0.
Off Time (ms)f-time to use when issuing commands for binary outputs. Default is 0.

Advanced​

PropertyDescription
Auto Time Sync​
New in 8.1.39
Enable automatic time synchronization when an outstation signals that it needs a time update by setting the NEED_TIME indicator bit. Default is true.

Logging​

PropertyDescription
Application Layer Debug LoggingWhether to enable debug logging for the DNP3 application layer. Default is false.
Physical Layer Debug LoggingWhether to enable 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: This should be increased to the maximum anticipated number of queued events for the configured polling durations or anticipated communication outages. The amount of memory available to Ignition is likely to far exceed that of any outstation, and many of them will have small fixed-size buffers. The exact size will depend on the outstation implementation and must be derived from available technical documentation.
  • OPC UA Sampling Interval: This setting should be set to 0. In OPC UA, a Sampling Interval of 0 means the server may use event-based reporting for a MonitoredItem, rather than sample-based. This must be enabled to allow multiple events that occur closer together in time than a non-zero sampling interval allows to be reported to the client while maintaining OPC UA compliant behavior in the server.