Eclipse SCADA

The project has been created.

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