Distributed Control System - DOME

The Distributed Object Model Environment – DOME – is an approach to connect objects, located on different computers, with each other.

Besides the concept itself, DOME includes also a portable runtime environment. DOME might be run on Unix-based operating systems, as well as on Windows. DOME has been developed for the use in automation technology plants and therefore can be run on diverse computer platforms – also with realtime constraints.

For engineering, graphic tools are available with which on the one hand the object code can be implemented in a programming language like for example C++, as well as the connection of the objects and their distribution on computers can be managed.

As an option, the application might be designed with the help of state machines.


Object oriented programming in automation is based on the concept of Function Blocks. With those, algorithms can be processed easily and encapsulated, however the exact time, the Function Block is executed, cannot directly be seen in the Function Block Diagram and varies depending on the control system which normally processes the Function Blocks in cyclical order.

However, this paradigm complicates the collaboration between equally important components, e.g. between the control systems, To solve this problem, additional engineering hours have to be planned, since these connections have to be modelled explicitly.

Event-oriented activation of the Function Blocks might solve this problem, however it has to be considered to plan the flow of data and the flow of events independently. Interoperability of control components of different vendors can however not be granted.

The engineering of cooperating components can be simplified by including facets of distributed systems in the automation. Integration ability of all components will be increased significantly.

The design of the application can be drawn completely independent of hardware restrictions. It can be tested in advance by simplified simulation models and can be commissioned virtually. In a second step implementation e.g. the allocation of one automation function to a hardware component can be processed.


  • Simplicity of Applicationen
  • Flexibility by means of late binding ⇒ Basis for Plug & Play
  • Type safe Data- and Information flow
  • Portability & Efficiency
  • Object-oriented Approach
  • Support of Real-time Features of Hard- and Firmware
  • Introspection / Browsing the Application / Controller
  • Reuse of Function Block Paradigm  ⇒ Modularization and Scalability of the Automation System
  • Clock Synchronisation by means of  IEEE 1588 (PTP), also for Microsoft Windows
  • Distributed Exception-Handling

DOME – Distributed Object Model Environment – describes the model of a distributed system especially designed for automation. Besides the distribution aspect, the focus lies on the object oriented design of the application, thus achieving a high reusability performance of the algorithms used on a high level of abstraction.

A DOME-application consists of a network of objects, connected by explicit interfaces via ports. Ports offering services are so-called Service-Ports, ports using services via interfaces are so-called Required-Ports.

In the application design, the Link-Objects are initially set as placeholders and are only instantiated automatically during the runtime of the application, thus granting that the automation objects can be placed almost arbitrarily on the hardware-components.

Another feature of DOME is the part-application´s introspection on every hardware node. Thus the structure of all distributed applications, i.e. all objects and their connections, can be observed.

In a hardware-node, objects are handled in one or more processes, whereby they are connected among each other according to the automation's requirements.

The following kind of connections are possible:

Process locally

  • synchronous (the calling port blocks; the responses can be evaluated)
  • asynchronous (the calling port does not wait)

Interprocess (also across nodes)

  • synchrous
  • asynchronous


To engineer a DOME application there is a difference between setting up / programming an automation object (in analogy to a function block) and the application per se. The automation object is written in the language DOME-L, based on object-oriented languages such as C++ or Java and considering only special features like the definition of the ports, the documentation for users and so on. Therefore, for the commissioning and the diagnosis of errors, basic tools can be used.

A DOME application only consists of automation objects and the connections among them.

Therefore, describing a DOME application is very easy and a configuration language called DOME-C might be used. For each process in a distributed application configuration data are created by the engineering system or might be edited manually.

The DOME manager is another important component, which is running on every hardware node. All DOME processes register and unregister at this manager. Furthermore, this DOME manager is the first point for introspection and for the establishment of the communication between processes of a distributed application.


The commissioning and any access to a DOME application may be done based on public interfaces. There is a tool called ‘reperio’. It is able to connect with a DOME manager at any node in a network. By means of the DOME manager the ‘reperio’ requests all information about the running DOME process and offers the option to inspect the whole node. Thus all link objects and automation objects can be displayed graphically.

A complete engineering development environment (IDE) is also available. The IDE is dedicated to develop algorithms of the automation objects and to configure the nodes, executing the distributed application. This IDE is called ‘DOME Engineering’ and is avalibale for Microsoft operating systems only. It includes cross compilers for the target nodes. In addition the application development may be done by using State Machines and to distribute them to the dedicated nodes.