New DNP3 Driver Beta

The beta module for the new DNP3 driver is available here.

It requires Ignition 8.1.33. It installs along side the existing DNP3 driver - it does not replace it, and it will not replace it in the future.

If you're familiar with DNP3 already there shouldn't be much of a learning curve here. The basic configuration settings look the same. The primary difference between this driver and the old driver is that it acquires data using class-based polling by default, as opposed to explicit READ function calls. This means you should be either dragging tags in from the "Points" folder, or manually addressing them using their generic point+index NodeIds, e.g. AnalogInput1.

The "gvi" syntax is also supported, e.g. g30v2i0, but any tag addressed in this manner will be read explicitly using the DNP3 READ function call.

The polling rate can be configured on a per-class basis. Unsolicited messaging is still supported, and can be enable on a per-class basis instead of all-or-nothing like the old driver.

Sequence of events can be maintained using either class-based polling or unsolicited messaging. Like the old driver, it requires some configuration in the Tag Groups as well. Make sure that under the OPC UA extended properties for the group:

  • Queue Size is set to some appropriate size (i.e. 100 and not 1)
  • Sampling Interval is set to 0 (in OPC UA this means the server can report by exception for an item rather than adhere to the sampling rules)

It's usually best to make a dedicated tag group for your DNP3 SoE tags.

Other things of note:

  • the scripting functions for this driver are located under system.dnp, not system.dnp3.
  • there is a new scripting function to issue a "Demand Poll"
  • the parameters used when operating an analog or binary output in response to a tag write are now configurable
  • whatever link layer confirmations the outstation decides to use should be supported
  • many other little bugs should be fixed
10 Likes

This is great news. I've been waiting for this functionality for a long time. Thank you!

Kevin, I am still having issues pulling the events back with the new DNP3 driver. Is there any additional configuration I need to adjust in the tag group besides the "Queue Size" and "Sampling Interval"?

No, that's it, and if you're getting any data at all from the default points you're getting them via events.

Do you mean to say you're having some kind of trouble with tag history? Can you explain the issue you're having?

When I install it, it only runs in trial mode. Is there separate licensing for the new driver?

It has a different module ID, so it will eventually require a license update.

For now, there's nothing that actually happens when the trial expires.

I am getting the live value when ignition polls the class but I am not getting the events that are stored between the polls. These events are building up on the RTU and will eventually cause the RTU to run out of memory. Let me know what additional information you will need.
Here is a screen shot of the "Floating Points Events" building up in the SCADAPack 470:

I do not getting any of the events when communications drops out briefly to the RTU:

Can you get a Wireshark capture and a screenshot of what tags you’re subscribed to?

Ah, wait. I see your issue. You have manually addressed the tag.

OPC Item Path: g30v5i1. This means the tag is being explicitly polled with the READ function.

You bet, I will send it over email.

Kevin,

I now have the following two points looking at the same address:

OPC Item Path

AI1: ns=1;s=[SCADAPack_DNP]g30v5i1

AnalogInput1: ns=1;s=[SCADAPack_DNP]AnalogInput1

First thing I noticed is the AnalogInput1 tag will only update on the initial poll, it’s currently not changing:

51 _ x Tag Browser Q C SCADA Tags Tag SCADAPack_DNP _Diagnostics_ All @ Analoglnputl Binarylnputl BinaryInput2 SCADAPack_Modbus LJDT Definitions Value 6624 18.59 36.13 28.42 38.83

I have also attached the Wireshark export for your reference.

I will connect a RTAC DNP3 device and see if I’m having the same issue.

Thanks

~WRD0004.jpg

DNP Wireshark 0748.pcapng (915 KB)

If you disable the manually addressed tag(s) (those using gvi syntax) it will make the capture less noisy.

In this capture, I can see the periodic poll to read class 1/2/3 events and the response from the outstation is empty.

You may not have actually assigned any points to any classes in the outstation.

I have disabled everything except “AnalogInput1”

AnalogInput1 is assigned to DNP Class 2:

I have enabled Value Deviation Type to Percentage of Span for testing, that way it will create some events:

image001.png

~WRD0004.jpg

DNP Wireshark 0804.pcapng (17.3 KB)

I don't know how to help you troubleshoot the outstation software/config.

All of the class poll responses are empty:

@ggross may have some idea, he did the configuration of one of our Schneider test devices, though I don't know if it was the same model.

@ggross I am testing it on SCADAPack 470 if that helps. I will do some testing with Kepware to see if I am having the same issue, then I can rule if it's a outstation issue or not.

If you see different results get a Wireshark capture so we can see what's different.

Ours is a 570.