Monday, 21 December 2015

jDNP3

The Java DNP3 was created as a learning experience.  The DNP3 standard is an evolving beast.  While this is not a bad thing, it does mean that not all implementations are alike.  Acknowledging that not all DNP3 implementations are the same the stack was designed to be extensible.

The web based test utility uses the stack.  While the web interface may be used to control a pre-configured outstation, the real power lies in the JSON API.  The JSON API may be used to create, destroy and control data links and outstations.

This project was created with only learning in mind.  However, if you get some use of out of it, that is a bonus.  To download the project, please visit the sourceforge page.  Some installation instructions are included here.  However, the sourceforge wiki is still the definitive source for installation information.

That said, if you would like to buy me pizza or a beer, there is a donate button on the right.

Running the simulator

The Simulator is broken up into two parts.  There is a web utility that has a built-in stack.  There is also a remote control utility that contains python libraries and a sample script to demonstrate outstation remote control.  The remote control leverages the web utility JSON API for all the heavy lifting.  The python libraries were design with the Robot test framework in mind.


Web Utility

The Web Utility required Java 1.8 or above to run.  As it is a Java based application, it will run on Windows or Linux (and presumably Mac, Unix, Android, etc though I have not tested these).


The DNP3 stack is already built-in to the Web Utility executable.  Download and unzip the file from the sourceforge page.  In order to run the web utility, execute the following commands:


Windows:
java -cp ".;jdnp3-ui-web-outstation-.jar" net.sf.jdnp3.ui.web.outstation.main.App

Linux:
java -cp ".:jdnp3-ui-web-outstation-.jar" net.sf.jdnp3.ui.web.outstation.main.App

Using the default configuration, navigate to:
http://127.0.0.1:8080


Remote Control

The remote control requires python 2.7.x.  As it is a Python based application, it will run on Windows or Linux (and presumably Mac, Unix, Android, etc though I have not tested these).

The use the python modules, download the jdnp3-ui-web-remote package.  Unzip the package and copy the jdnp3 folder (include the folder, not just the files) to you python library directory or runtime path (your current working directory).  To run the main script, execute the following commands:


Windows/Linux:
python main.py

Please keep in mind, main.py is included as a sample only. Do not include it in your projects.