1. Library Components
OpenIEC61850 consists of the following library components:
-
openiec61850 (LGPLv2.1 or later) - is the core implementation of the OpenIEC61850 client and server library (depends on josistack).
-
josistack (LGPLv2.1 or later) - implements the Application Control Service Element (ACSE) protocol as defined by ISO 8650 or ITU X.217/X.227, the lower ISO Presentation Layer as defined by ISO 8823/ITU X226, and the ISO Session Layer as defined by 8327/ITU X.225. The library depends on jositransport.
-
jositransport (LGPLv2.1 or later) - implements RFC 1006 and the OSI Transport Service Layer. It is not part of the core library so it can be used separately by other projects.
-
openiec61850-sample (no license, free to use) - implements a sample client and server. This library/project only exists for demonstration purposes. It shows you how to create your own client and/or server applications that use OpenIEC61850.
-
openiec61850-clientgui (GPLv3) - is a graphical user interface for the client library. It can be used to connect to server browse the server device model and read and write data. (depends on openiec61850).
After extracting the distribution tar file the OpenIEC61850 libraries can be found in the build/libs folder. Besides the libraries mentioned above it contains the following external libraries:
-
jasn1-ber - a library from the jASN1 project doing some BER encoding/decoding (needed by the openiec61850 and josistack libraries), Copyright 2011-14 Fraunhofer ISE, Author: Stefan Feuerhahn, License: LGPLv2.1 or later, http://www.openmuc.org
-
slf4j-api - a popular logging API, License: MIT, http://www.slf4j.org
-
logback-core/logback-classic - an actual logger implementation of the slf4-api. openiec61850-sample uses it to output log information. It can be replaced by a logger of your choice that supports the slf4j API. License: EPLv1.0 and LGPLv2.1, http://logback.qos.ch
-
jcalendar - a calendar library needed by the client GUI. © 1999-2011 Kai Toedter, License: LGPLv3, http://toedter.com/jcalendar/
2. Sample Client & Server:
The easiest way to learn how OpenIEC61850 works is by getting the sample client and server applications running. Then you might want to look at the source code of the sample applications to get an understanding of how they work. There are two ways to get them running:
2.1. Run sample via command line:
-
To run the sample server go to the directory src/sample/sampleServer/ execute runSampleServer.sh (Unix) or runSampleServer.bat (Windows, you have to rename the file first)
-
To run the sample client go to the directory src/sample/sampleClient/ execute runSampleClient.sh (Unix) or runSampleClient.bat (Windows, you have to rename the file first)
2.2. Run sample via Eclipse:
You can import all the OpenIEC61850 projects into Eclipse and run the sample applications from within Eclipse. In order to generate the necessary Eclipse project files you will need the Gradle build tool installed. Installation of Gradle is explained here.
Afterwards you can generate the Eclipse project files by entering "gradle eclipse" in the OpenIEC61850 root folder. Next import these projects into Eclipse. There you can run the SampleServer and SampleClient by running openiec61850-sample/sampleServer/SampleServer.launch and openiec61850-sample/sampleClient/SampleClient.launch. (run them by right clicking →"run as" from within Eclipse)
3. Development:
The SampleClient and SampleServer can be used as a basis for you to code your individual client or server application. If you apply any changes to OpenIEC61850 you may recompile the libraries using the "gradle clean build" command. Please send us any code improvements so we can integrate them in our distribution.
You can find the javadoc online or in the build/javadoc folder of the distribution.
4. IEC 61850 Concepts:
4.1. Reporting:
Reporting allows a client to receive data reports from a the server. What is sent and the events that cause reports are configured through so called Report Control Blocks (RCB). RCBs are part of the server’s configuration (i.e. the server’s ICD/SCL file). They are therefor fixed and cannot be deleted or added at runtime. RCBs can only be used by one client at time. Usually an RCB is meant for a specific client only.
RCBs are always associated with a specific Data Set whose attributes are monitored for events that may cause reports to be sent. The associated Data Set can be dynamically changed by a client at run-time.
The following events can cause a server to send a report:
-
The client issues a general interrogation.
-
A data attribute that is part of the associated Data Set changes.
Whether on these events really causes a Report to be sent is configured through the RCB.