Open-source runtime system for component-based implementation of automation solutions with Java

Download Elbfisch

Elbfisch functions

Elbfisch offers a runtime environment and a canon of basic functions that enable the team-based development of object-orientated automation applications when used in conjunction with common open-source products (such as the integrated development environments ‘Netbeans’ and ‘Eclipse’), Linux as operating system and ‘git’ as distributed version management system. Java is used for the programming.


The Elbfisch concept is based on the principle that an automation application needs to represent a copy of the process that it controls. A process (a system) is made up of aggregates that interact with each other and may themselves be made up of subordinate aggregates. Elbfisch modules can be used to represent this hierarchy of aggregates. Modules can be implemented independently, have defined interfaces with no side-effects and, when implemented universally, can be re-used in any implementations.


Like the aggregates that have to interact in a system that is being automated, the representative Elbfisch modules must also exchange information with one another. To make this possible, Elbfisch uses the concept of signals. A module receives information from other modules via signals and uses signals to send information to other modules.

Process events

One of Elbfisch’s main features is the modules’ ability to react to process events and process them. The range of possible process events is unlimited. For example, possible events include: the end of a set time period, a signal change at an input terminal, an analogue value being exceeded, combined events, an event not taking place within a set time frame, emergency stop situations, a system being shut down. Modules can explicitly wait for events to occur, at which point they are activated by Elbfisch.

Synchronous design

Elbfisch uses a time-slicing process (a cycle) to control an application’s modules, occurring events and the exchange of signals. For example, a module will wait until the next cycle to forward a signal change to all consuming modules. This allows all input signals for all modules to remain unchanged and consistent in any given cycle. This in turn ensures that the module workflow allows freedom for interaction. The modules can run in any order within a cycle, and even interrupt each other. The signals that are exchanged remain consistent in all cases.

About Elbfisch

Embedded PC systems are increasingly being implemented in automation technology, encouraging the design of object-orientated software development processes, a step which is long overdue. To assist with this, Elbfisch offers a runtime environment and a canon of basic functions that allow complex automation tasks to be implemented on inexpensive hardware platforms in Java.

We are now handing over our project to the open-source community. We are doing this with gratitude to the many people and businesses who have been sharing their knowledge and products with others for years. We have been using open-source products ourselves for many years. The time has now come for us to make a large part of our knowledge available to the community. We hope that others find this useful – and that it contributes to peace in the world. The latter much less through the content, but more through the way in which people work together on this project – with mutual respect, with the necessary regard for the perspectives of others and with recognition of every person’s wish to use their work to make the world a better place – each providing according to their ability, with the dedication they are individually prepared to invest, regardless of their background or religion. Elbfisch has emerged from our professional work on a variety of projects and covers a range of functions that we consider useful for our particular purposes. We hope that Elbfisch will now grow beyond this scope, enriched by new perspectives, with added functions that will broaden its range of applications.

Bernd Schuster
MSK Gesellschaft für Automatisierung mbH

For companies

We can develop customised Elbfisch-based solutions for you, from libraries/drivers for your hardware products to complete automation applications for your projects. Get in touch:

For developers

There is a lot that needs doing. Take a look at the Elbfisch wiki. The roadmap for the development of the project can be found there. Or do you have concrete ideas yourself? Please share them with us.

For users

Follow the simple examples given in the Elbfisch wiki. Before you know it, you will have written your first Elbfisch application.