So before the weekend I posted and put up screenshots detailing how to get DNP3 configured on SCADAPack to report up to a ClearSCADA SCADA host server. What follows is the matching ClearSCADA configuration to complete the loop. These screenshots were taken with the latest ClearSCADA 2017, but should also work fine in older (back to 2010) versions of ClearSCADA.
ClearSCADA DNP3 Config
The biggest thing here is you need to ensure the DNP3 driver is installed. Its a default in the installer so nearly every CS install should have this driver enabled unless you de-selected it intentionally.
Outside of having the driver installed I did not change any of ClearSCADA’s default, back end server configuration to make this work.
In my testing it seems apparent that the RTU, when configured for TCP, talks back on the same open connection that ClearSCADA makes. So all you should need is communications out to the RTU on the port number you specified for DNP3 in the outstation. In my case I need outbound port 20000. My firewall appears to properly handle the return port created by the TCP handshake/connection.
It might be worth noting that if the RTU is regularly disconnected and has to first open a port to talk you may want to test its functionality in a mock-up of your environment before deploying to the field. It is frustrating and painful to be figuring out network ports and firewalls when you are on the clock in the field.
DNP3 Channel Settings
We need three main objects to define our communications path to the field. A Direct DNP3 Channel, a Direct DNP3 Set and a Generic Direct Outstation. We are going to start with the channel.
** DO NOT PICK THE SCADAPACK E-SERIES DRIVER!! This driver is not intended for use with non-E SCADAPacks as it supports a much more complex level of DNP3 than the non-E SCADAPack.
On the Channel Tab you must pick the correct Time Zone. DNP3 requires a proper time zone to be set here. My recommendation is that you set your RTU’s to UTC time all the time. ClearSCADA and the SCADAPack keep incredibly tight time sync, so even if a field tech sets the clock wrong it will be set to whatever is referenced in the DNP3 Channel. Choose your local time zone if you know what you are doing and all your RTUs are in the same time zone as the SCADA host. See the rest of my blog for rants about time zones, time change and time sync.
Next we have the Connection tab. If you have used the Advanced Modbus driver before you will see some familiar settings. Cell modems and Ethernet connected SCADAPacks are likely going to be Type: Network and TCP/IP Type: TCP. Merge Connections if you know what you are doing.
Last thing in the Channel we have the Scan Parameters tab. I tweaked the Line Speed (CS needs this to calculate round-trip delays) and checked the Standard Reply Delay for proper settings. There are some DNP3 specific settings lower on this tab, but I left my setup at default. Scan Groups here work just like Scan Groups in Modbus. At least that is what I understand anyway… haven’t tested it yet.
DNP3 Set Configuration
ClearSCADA has these Set objects that group ‘sets’ of RTUs together to a single Channel. This is next. Luckily there is only ONE setting you need to change. Make sure you give ClearSCADA a proper and unique master address. This master address MUST match the one you configure in the RTU. Otherwise the RTU will not be able to send unsolicited messages to your SCADA host.
DNP3 Outstation Settings
Lastly we have the DNP3 Direct Outstation (Generic DNP3 driver only!). There are a TON of settings on the tabs of the Outstation object. Do not fret. Not many settings need to be changed to get this thing working!
First off lets get this Outstation connected to our Outstation Set we just configured. I left everything else on this tab default.
Now we are into the nitty gritty. Configure an Address. Set up Integrity and Class Polling. These settings tell ClearSCADA if, how often and when to poll the various classes of data from the RTU (get event data). Enable Unsolicited messages for the different classes if you know you will need it. Otherwise ClearSCADA ignores/throws out the unsolicited message if one comes in (I think… still testing).
Scroll down a page and there are some more settings to tweak. On startup you can start communications with the RTU by doing a communication round trip delay measurement or by setting the clock. Then down below you can specify who initiates the clock set and how it is done. DNP3 is different than ROC/Modbus because RTUs can request a clock sync remotely. In production I might check some boxes and tighten the deadband on the clock drift.
Last page of the DNP3 tab… I left all these settings at default. Partly because I don’t think the SCADAPack supports most of them (it is only a level 2 device) and partly because it is working even without tweaking any configuration here.
Not done yet… there are a few more tabs to go. Security… default. SCADAPack non-E series doesn’t support the advanced DNP3 security settings (at least I haven’t found where to turn the encryption on yet in the SCADAPack…).
On the Direct Tab we have the all important Ethernet Keep Alive Poll. This is a short message that pings the SCADAPack and keeps the various TCP connections alive and working. My setup is test bench and hard wired so I went with a quick keep alive. If you were doing satellite you might not want to use this. 🙂
Skip the PSTN tab… with cell modem technology I think PSTN and dial-up will soon become a thing of the past.
Last tab is the network tab. Input the IP address of the SCADAPack and the port number for DNP3 on that SCADAPack.
So now go through the three objects and turn them on by enabling the “In Service” check box and saving the objects. You should now have a SCADAPack talking DNP3 to ClearSCADA. Next step is configuring points, which I will go into more detail about in a later article.