Eclipse SCADA
The Eclipse SCADA project is a proposed open source project under the Technology Container Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.
Background
In 2006 we started a series of projects which would at first require some sort of connectivity to process control hardware and software. It was obvious that with the upcoming projects more SCADA like functionality would be required. The target platform had to be 64bit Linux and a JEE environment. Since there was no room for a full blown SCADA system and also existing solutions on the market did not seem to fit (or were to expensive), development of a custom SCADA system was started in these projects. It was clear from the beginning that it would be hard to place this custom built solution as a commercial product on the market. Therefore it was decided to create it as a an open source project from the start. It is currently hosted at http://openscada.org.
Scope
EclipseSCADA provides a state of the art open source SCADA system, including:
- A communication system
- An internal communication bus
- A framework for implementing driver modules/device adapters
- A set of out-of-the-box drivers modules/device adapters
- A monitoring system, evaluating gathered data, storing generated events
- A data archive, storing gathered data
- Create a reference implementation
- A graphical user interface for gathered data, alarms & events from the monitoring system, archived value data
- A system to configure and document the system
Not part of the this project are:
- An embedded systems platform (like PLCs or embedded control systems)
- A communication system that transports arbitrary complex data structures
Description
Definition from wikipedia: https://en.wikipedia.org/wiki/SCADA
SCADA (supervisory control and data acquisition) is a type of industrial control system (ICS). Industrial control systems are computer controlled systems that monitor and control industrial processes that exist in the physical world. SCADA systems historically distinguish themselves from other ICS systems by being large scale processes that can include multiple sites, and large distances.
Simply speaking the primary target of Eclipse SCADA is a way to connect different industrial devices to a common communication system and post-process as well as visualize the data to operating personnel.
Since this scheme will also work with non-industrial devices and devices do become more complex and tend to become software solutions themselves the term “device” should be more considered as an “other system”.
The idea of a SCADA system is to provide mostly scalar values instead of complex data structures. Where necessary data structures are split up into multiple scalar values. This is done in order to process the data more quickly and allow common processing of data.
For example a meteo station is providing current weather information. It can provide temperature and solar radiation. These are two floating point values which are processed independently. Still the same alarming schema (high level alarm) can be applied to both values. The values can both be assigned a quality/alarm information (alarm state) which can then be shown using the same user interface element and the same visualization scheme (alarm is displayed with red background). This way many different scalar values can be processed exactly the same way.
Why Eclipse?
First of all this project uses several Eclipse technologies like OSGi, RCP, EMF and a few more. This is the reason why the existing openSCADA project is technologically already quite close to the Eclipse project set. Also a lot of code already exists which could be used by other projects in the Eclipse Foundation.
We hope that bringing openSCADA into Eclipse as Eclipse SCADA will increase the visibility of the open source SCADA system and attract other contributors and companies to an open source SCADA solution. An open source SCADA communication stack could be used by system integrators and device manufactures to provide a default way of communicating with devices, in an open source ecosystem. Due to the connected nature of a SCADA system it is important to have an open connection infrastructure. As ibh SYSTEMS GmbH we are not in the position to provide an industry standard way, as an Eclipse project it would be possible to set a standard together with other industrial projects in that area. We also do not begin from scratch, since we already have a working solution.
We as ibh SYSTEMS GmbH of course hope to assist in realizing such solutions and enhance Eclipse SCADA in future projects as we did with openSCADA up to now. Yet the Eclipse Foundation provides a much broader audience.
openSCADA already has a small community and several users. It has an open communication channel (google group), a wiki and bug tracker at Atlassian, three publicly accessible git repositories. This is why we don't see any additional value in migrating to Eclipse Labs.
Initial Contribution
As base for Eclipse SCADA we want to use the existing openSCADA project source code. The code is currently hosted by ibh SYSTEMS GmbH. The copyright owners are the proposed committers which already worked as freelancer on the project as well the companies TH4 SYSTEMS GmbH (formerly inavare GmbH) and ibh SYSTEMS GmbH.
The source code was originally managed in several subversion repositories which were converted to git repositories some time ago. The openSCADA project itself is grouped into different sub-projects in order to modularize it.
- External
- Contains all external libraries (except j-interop). This project will not be contributed. Eclipse Orbit will be used instead.
- Aurora
- Holds non-user interface utility components
- Utgard
- The OPC driver implementation, based on j-interop
- Oxygen
- Implementations of some protocols, mostly openSCADA internal
- Atlantis
- Non-user interface components of the openSCADA system. Including driver modules, alarming, archiving.
- Orilla
- User interface components of the openSCADA system.
- Infinity
- An SWT based time series chart widget.
- Dakara
- The Draw2D based vector graphics visualization
- Othala
-
An Eclipse RCP project build which provides the
OSTC
an admin/test client for use with openSCADA. - Orion
- Some additional user interface components used within the Eclipse IDE
- Tau'ri
- Some example projects and setups for demoing openSCADA
- Contrib
- Some source code that can be used with openSCADA but does not fit into the release version of openSCADA due to the lack of use, testing or license issues.
The initial contribution of Eclipse SCADA would be the openSCADA Git repositories which are currently replicated to:
The initial components we want to contribute are:
- Aurora
- Oxgyen
- Utgard (as the j-interop dependencies are resolved)
- Atlantis
- Orilla
- Infinity
- Othala
- Dakara
- Deploy
- Orion
Note that the Orion component will renamed to avoid confusion with the Eclipse Orion project.
The following external libraries are used by openSCADA at the moment:
Library | License | |
---|---|---|
Apache Mina 2.0.7 | Apache License, Version 2.0 | |
SLF4J 1.6.4 | MIT license | |
Logback 1.0.0 | EPL v1.0 & LGPL 2.1 | |
jzlib 1.1.1 | BSD-style | |
guava 10.0.1 | Apache License, Version 2.0 | |
antlr 3.1.3 | BSD License, | |
commons-daemon 1.0.10 | Apache License, Version 2.0 | |
commons-dbcp 1.4 | Apache License, Version 2.0 | |
commons-io 2.3 | Apache License, Version 2.0 | |
commons-pool 1.6 | Apache License, Version 2.0 | |
javax.transaction 1.1.1 | Apache License, Version 2.0 | |
commons-beanutils 1.8.0 | Apache License, Version 2.0 | |
commons-collections 3.2.0 | Apache License, Version 2.0 | |
commons-lang 2.6.0 | Apache License, Version 2.0 | |
tomcat-apr 5.5.23 | Apache License, Version 2.0 | |
Apache Xerces 2.9.0 | Apache License, Version 2.0 | |
J-Interop | LGPLv3 | Need to check dependencies |
JCIFS 1.2.25 | LGPLv2.1 | Required for j-interop |
GNU Crypto | GPLv2+ | Required for j-interop, could be replaced with bouncycastle |
jarapac | LGPLv3 | Required for j-interop |
JTDS JDBC Driver | LGPLv2.1 | Required for j-interop |
iWombat | iWombat License | Required for j-interop, Could be replaced by own implementation, check with Hudson |
Apache XML Beans | - | Will be removed before contributing |
Apache ODFDOM | Apache License, Version 2.0 | |
Apache POI | Apache License, Version 2.0 |
Legal Issues
The openSCADA project, which will be the source base for Eclipse SCADA, is developed by the named contributors (see below). At the moment the license is LGPLv3, but all contributors have agreed to change the license to the EPL license for contributing the project openSCADA to the Eclipse Foundation.
There however several external libraries which openSCADA requires at the moment which are not EPL. In order to reduce issues with the upcoming contribution to Eclipse, dependencies were removed or replaced with versions from the Eclipse Orbit repository. The plan is to complete this transition for all required libraries for the openSCADA release 1.2, which is planned to be the initial version contributed to Eclipse (also see below).
One special case remaining is the library j-interop
. This
library and its dependencies are required for one important driver
(OPC driver) of the openSCADA System. Although the system can work
without this driver module, it is a very useful component. Also is
this library used by the Eclipse Project Hudson
for the
DCOM/Windows Slave plugin. Possible solutions are: either to remove
the module from Eclipse SCADA and leave it with the openSCADA contrib
repository, or to import j-interop (if not already done) into the
Eclipse Foundation in some way. Since the author of the j-interop
library (Vikram Roopchand) and us worked together in the past and also
contributed to the library, it should be an interesting contribution
to Eclipse in any way. j-interop includes some code from other
libraries (iWombat and GNU Crypto) with incompatible licensing, but
this is easily resolvable with a custom implementation and the use of
bouncycastle (which is licensed under a variant of the MIT X11
License, http://www.bouncycastle.org/licence.html).
Committers
The following individuals are proposed as initial committers to the project:
- Jens Reimann, ibh SYSTEMS GmbH (Project lead)
- Jens Reimann is a commiter on the openSCADA project where he has made significant contributions over many years.
- Jürgen Rose, ibh SYSTEMS GmbH
- Jürgen Rose is a commiter on the openSCADA project where he has made significant contributions over many years.
We welcome additional committers and contributions.
Mentors
The following Architecture Council members will mentor this project:
- Achim Loerke
- Martin Oberhuber
Interested Parties
The following individuals, organisations, companies and projects have expressed interest in this project:
- OMV Solutions, User of openSCADA
- E.ON CR, User of openSCADA
- XION AT, Integrator
- eTrice, Eclipse Project
- ScadaBR, another open source SCADA which uses parts of openSCADA
- 4DIAC, an open source framework from fortiss GmbH for distributed industrial automation and control
- Werner Keil, Eclipse UOMo Project lead
- Holger Siegel, HST GmbH Technische Entwicklungen
Project Scheduling
The project will be started by contributing the openSCADA source code to the Eclipse Foundation. At the moment openSCADA is released as version 1.1 and the version 1.2 is planned withing the next view months. The idea is to clean up some parts and dependencies from 1.1 to 1.2 before contributing version 1.2 to the Eclipse Foundation.
Changes to this Document
Date | Change |
---|---|
28-May-2013 | Document created |