Das Distributed Object Model Environment – DOME – ist ein Konzept, Objekte über Rechnergrenzen hinweg miteinander zu verbinden.
Zu DOME gehört neben dem Konzept natürlich auch eine portable Laufzeitumgebung. Neben Unix-artigen Betriebssystemen kann DOME auch unter Windows ausgeführt werden. DOME wurde für den Einsatz in automatisierungstechnischen Anlagen konzipiert und läuft daher auf einer Vielzahl von Rechnerplattformen – auch mit Realtime Anforderungen.
Für das Engineering steht ein graphisches Werkzeug zur Verfügung, in dem sowohl der Objekt-Code in einer Hochsprache, zum Beispiel C++, implementiert als auch die Verschaltung der Objekte und deren Verteilung auf die Rechner vorgenommen werden können.
Optional kann der Applikationsentwurf auch mit Hilfe von Zustandsmaschinen vorgenommen werden.
Die Einführung erster Ansätze objektorientierter Programmierung in der Automatisierung geht auf das Funktionsblock-Konzept zurück. Damit lassen sich Algorithmen sehr gut kapseln, jedoch ist der Zeitpunkt der Codeabarbeitung aus dem Funktionsblockdiagramm nicht direkt ersichtlich und variiert von Steuerungssystem zu Steuerungssystem, das in der Regel die Funktionsblöcke zyklisch abarbeitet. Dieses Paradigma erschwert jedoch die Zusammenarbeit mit gleichrangigen Komponente, z.B. zwischen den Steuerungen. Hierfür muss meistens zusätzlicher Engineeringaufwand eingeplant werden, da diese Beziehungen explizit modelliert werden müssen.
Steuerungssystem für unterschiedliche Aufgaben
Verteilte Systeme für die Automatisierung von morgen
Abhilfe schaffen Ansätze der ereignisorientierten Aktivierung der Funktionsblöcke, jedoch werden hier Daten und Ereignisfluss weitgehend getrennt geplant. Eine Interoperabilität von Steuerungskomponenten verschiedener Hersteller ist damit allerdings auch noch nicht gegeben.
Das Engineering kooperierender Komponenten kann wesentlich vereinfacht werden, wenn Aspekte verteilter Systeme in die Automation einfließen. Dadurch wird die Integrationsfähigkeit aller beteiligten Komponenten entscheidend verbessert.
Der Applikationsentwurf kann zudem auch vollkommen losgelöst von Hardwarerestriktionen erfolgen und vorab durch vereinfachte Simulationsmodelle überprüft und anschließend virtuell in Betrieb genommen werden. In einem zweiten Schritt kann dann eine Instrumentierung, d.h. eine Zuordnung der Automatisierungsfunktion zu einer Hardwarekomponente, erfolgen.
Eigenschaften
- Einfachheit der Applikationen
- Flexibilität durch späte Bindung ⇒ Voraussetzung für Plug & Play
- Typsicherer Daten- und Informationsfluss
- Portabilität & Effizienz
- Verschiedene Kopplungsgrade zwischen den applikativen Objekten
- Objektorientierter Ansatz
- Unterstützung von Echtzeiteigenschaften der Hard- und Firmware
- Introspektion / Browsen der Applikation / Steuerungen
- Anwendbarkeit des Funktionsblock-Ansatzes, d.h. von Modularisierung Skalierbarkeit des Gesamtsystems
- Uhrzeitsynchronisation mittels IEEE 1588 (PTP) auch unter Microsoft Windows
- Verteiltes Exception-Handling
- …
Der Ansatz DOME – Distributed Object Model Environment – beschreibt ein Modell für ein verteiltes System, das speziell auf die Belange der Automation ausgerichtet ist. Neben dem Verteilungsaspekt wird eine Objektorientierung der Applikation verfolgt, wodurch ein hoher Grad an Wiederverwendbarkeit der umgesetzten Algorithmen auf einem hohen Abstraktionsniveau ermöglicht wird.
Eine DOME-Applikation besteht aus einem Netzwerk von Objekten, die über explizite Schnittstellen in Form von Ports verfügen. Ein Objekt bietet Dienste über sogenannte Service-Ports an; Dienst-nutzende Schnittstellen werden als Required-Ports bezeichnet.
Objekte werden über Ports miteinander verbunden
Die Link-Objekte werden im Applikationsentwurf zunächst als Platzhalter eingesetzt und erst zur Laufzeit der Applikation automatisch instantiiert. Dadurch wird gewährleistet, dass die Automations-Objekte nahezu beliebig auf den beteiligten Hardware-Komponenten platziert werden können.
Ein weiteres Merkmal des DOME-Ansatzes ist die Introspektion der Teil-Applikation auf jedem Hardware-Knoten. Dadurch kann die Struktur der gesamten verteilten Applikation, d.h. alle Objekte und deren Verbindungen, ergründet werden.
Die Objekte werden auf einem Hardware-Knoten in einem oder mehreren Rechenprozessen abgearbeitet, wobei sie untereinander entsprechend der automatisierungstechnischen Bedürfnisse verbunden werden. Folgende Kopplungsgrade werden unterstützt:
- Prozess-lokal
- Synchron (aufrufender Port blockiert, Rückgabewerte auswertbar)
- Asynchron (aufrufender Port wartet nicht)
- Interprozess (auch über Knoten hinweg)
- Synchron
- Asynchron
Das Engineering einer DOME-Applikation unterscheidet die Erstellung eines Automations-Objekts (analog zu einem Funktionsblock) und der eigentlichen Applikation. Ein Automations-Objekt wird in einer Sprache DOME-L geschrieben, die auf objektorientierten Sprachen wie C++ oder Java basiert und lediglich die Besonderheiten wie die Portdefinitionen, Nutzerdokumentation etc. verarbeitet. Zur Inbetriebnahme und ggf. Fehlerdiagnose können daher Standardwerkzeuge eingesetzt werden.
Eine DOME-Applikation besteht nur aus Automations-Objekten und deren Verbindungen untereinander.
Daher ist die Beschreibung einer DOME-Applikation auch sehr einfach und lässt sich mit einer DOME-C genannten Konfigurationssprache hinreichend genau ausdrücken. Je beteiligtem Prozess an einer verteilten Applikation wird eine solche Konfigurationsdatei aus dem Engineeringsystem heraus erzeugt bzw. kann manuell editiert werden.
Eine weitere wichtige Komponente stellt der DOME-Manager dar, der auf jedem Hardware-Knoten ausgeführt wird. An diesem Manager melden sich alle DOME-Prozesse an bzw. wieder ab. Er ist weiterhin der erste Anlaufpunkt bei der Introspektion bzw. für die Etablierung der Kommunikation zwischen den Prozessen, die eine Applikation bilden.
Informationsaustausch zwischen lokalen und entfernten Objekten
Die Inbetriebnahme und der Zugriff auf eine DOME-Applikation können vollständig auf Basis der offengelegten Schnittstellen erfolgen. Hilfreich hierfür ist das Werkzeug ‚reperio’, das sich auf den verschiedenen Hardware-Knoten zunächst mit dem DOME-Manager verbindet und mit Hilfe dieser Informationen alle DOME-Prozesse inspizieren kann. Es lassen sich z.B. alle Link-Objekte und die dadurch verbundenen Automations-Objekte graphisch darstellen.
Eine komplette Engineeringumgebung (IDE), die neben der Entwicklung der Algorithmen der Automations-Objekte auch eine Konfiguration der Steuerungen, auf denen die Applikation abgearbeitet wird, vornehmen kann, steht ebenfalls zur Verfügung. Dieses Werkzeug ‘DOME Engineering’ arbeitet allerdings nur unter Microsoft Windows und enthält Cross-Compiler für die Zielsteuerungen. Zudem erlaubt die IDE, Applikationen in Form von State Machines zu entwickeln und anschließend auf die Steuerungen zu verteilen.
Distributed application by means of DOME. Following pages describe the concept more in detail.
The figure alongside illustrates a distributed application consisting of 5 objects running on 3 nodes or devices.
What is DOME?
At first DOME is a concept to create distributed automation applications based on objects. These objects may be executed on the node with best fitting characteristics. Secondly, DOME is a high efficient runtime available for several platforms.
This means, DOME is portable to different operation systems and also portable on different hardware architectures. Besides the distribution and portability, object orientation and re-usability of the application is one important design objective.
A DOME application consists of a network of objects connected by means of dedicated connection points, so called ports. By means of such ports, objects offer services or use services from other objects.
In addition there are link-objects connecting the ports. Link-objects are defined during engineering. The runtime is responsible to establish the connections. This is done dynamically, thus applications may be redesigned at runtime.
Furthermore DOME offers introspection. Each node running DOME may be inspected in detail. This means, running applications, objects, their links, object properties etc. can be seen at runtime. No special debugging tools are required for this.
Why DOME?
DOME is a ideal platform to implement Industrial Cyber Physical Systems (CPS). It allows to load these parts of the overall application on a dedicated node needing access to the physical process to control. Also for small IoT application DOME can be used, because the footprint is so small.
Performance
DOME runtime is performant, because it is developed in C++. Thus no interpreter or just in time compiler influence the performance. Also the objects building the application will be executed in the machine code of the dedicated hardware architecture. Also the footprint for scheduling the port invocation is very small.
DOME uses an optimized communication protocol. This can be mapped e.g. on different Ethernet based protocols like UDP or TCP and does not imply an protocol overhead like HTML or Web Services.
Portability
As mentioned above DOME runtime is portable. There is a operation system and hardware abstraction, but this abstraction layer is less as possible. DOME is running from small platforms like Raspberry PI up to powerful Industrial PCs (IPC).
DOME requires an operating system (32 or 64 bits), offering basic services. At the moment, DOME is running on different Linux distributions, NetBSD, FreeBSD or Windows systems.
Integrability
DOME is designed to run on shop floor. Vertical data integration is supported by means of provided client functionality e.g. implemented in .Net or also natively in C++.
Clock synchronization
Basis requirement in distributed systems is a synchronized time base on all involved nodes. DOME runtime has integrated a clock synchronization functionality based on Precision Time Protocol (PTP), defined in IEEE 1588 and IEC 61588. Depending on available hardware and network topology this concept allows a synchronization lower than 1ms between the nodes.
Realizable control concepts
Different control concepts can be realized with DOME. Main classification may be open- or closed-loop control. In automation especially closed-loop control is of special interest. Feedback can given to the controller object(s) in two principle ways:
- synchronous, blocked invocation of a port –> feedback can be the return value or output parameters (this represents in principle the client-server paradigm of method invocations or remote function invocations)
- asynchronous, non-blocked invocation of a port –> the caller does not wait for the result, feedback is provided by means of a second non-blocking port
This page is explaining who to get and setup DOME onto your computer or embedded hardware .
Install the runtime
Windows
Download the setup for the DOME runtime for Windows and execute the setup program.
Note:
The DOME runtime for Windows is installed implicitly during installation of the DOME Studio engineering tool. Thus, if you want to use the PC also as engineering platform, separate runtime installation is not necessary.
Linux
Debian based distributions
The Debian package will be provided on demand. After receiving the package install it:
sudo apt-get install dome_runtime.deb
Raspberry Pi
For this platform we provide a specific boot image. Download this image and copy it in documented way on a SDRAM-Card for the Raspberry Pi. To do this, you have to prepare the Raspberry Pi at first. Independent of the following instructions please have a look into the HowTo provided in each zip archive for newest updates:
- Download the image from the download tab
- Extract image(as .img) from the .zip archive
- Install the image onto a SD or MicroSD card (min 4GB)
- Please refer to https://www.raspberrypi.org/documentation/installation/installing-images/ and use the image formerly extracted!
- Insert sd card into your Raspberry Pi (1 or 2 or 3)
- Power on the Raspberry Pi
- The static IP 192.168.239.25 is preconfigured in the image.
How to use Sample Project
- Install Compiler Toolchain for CrossCompiling on Windows (for link see below, eg. raspberry-gcc4.9.2-r2.exe)
- Install DOME Studio
- Make sure one of the engineering computer’s network interfaces is in the same subnet as the Raspberry Pi (for the preconfigured Raspberry Pi: e.g. [192.168.239.x subnet 255.255.255.0])
a) Remember the IP address of the engineering computer’s network interface (in same subnet as the Raspberry Pi) as aaa.bbb.ccc.ddd
b) Append the following lines onto this file: C:\ProgramData\ifak\DOME\dome.ini (change aaa.bbb.ccc.ddd accordingly):[InetPortManager] Nodename=aaa.bbb.ccc.ddd
c) Change this line every time your engineering machines IP is changed; delete those two lines, if the used network interface gets it IP-address from a DHCP-Server with DNS (needed)
- Reboot Windows to enable the update of the PATH variable for all programs
- Open DOME Studio
- Goto File→Help→Help to open the short documentation of the DOME Studio
- Be aware some questions could be answered here.
- Open ExemplatoryRaspberryPiProject from the zip file by
File→Open Project→Browse→$unzippath\ExemplaryRaspberryPiProject\ExemplaryRaspberryPiProject.eep - Click on Node Management
a) Make sure the ip configured for TestNode as Node Address is the same as the Raspberry Pi’s; click save after changes. - Press Build and Run and accept the changes for the firewall configuration
- The Raspberry Pi DOME processes should also send logging data to the DOME Studio ⇒ check the info tab in the bottom half for several “struct{….” fields
- Connect with putty.exe onto the Raspberry Pi (please maximise putty.exe)
IP/Hostname: 192.168.239.25
User: root
Password: raspberry
and check if the current time is appended onto the /opt/ifak/tmp/domedate file:# cat /opt/ifak/tmp/domedate
It should show several timestamps, confirming that the DOME processes are running.
Changing the IP Address of the DOME-node (if needed, eg for more than one Raspberry Pi)
- Make sure one of the engineering computer’s network interfaces is in the same subnet as the Raspberry Pi (for the preconfigured Raspberry Pi: e.g. [192.168.239.x subnet 255.255.255.0])
- Connect via ssh to your Raspberry Pi; use putty.exe on Windows (please maximise putty.exe after connect); IP/Hostname: 192.168.239.25
User: root
Password: raspberry - a) Change IPin /etc/network/interfaces with the nano editor:
# nano /etc/network/interfaces
⇒ change line address to your prefered IP address
⇒ press ctrl+x to exit and after this press Y to save
b) Change Nodename in /etc/dome.ini with the nano editor:
⇒ change line Nodename to your prefered IP address(same as above)
⇒ press ctrl+x to exit and after this press Y to save - reboot
# reboot
- Close putty.exe and reopen a connection with a new putty.exe session and the new IP (see step 2)
- Make sure your computer is in the same subnet as configured, to get a connection.
- Change or insert the device in DOME Studio ⇒ Node Management
Useful links
putty.exe for getting a console connection to the raspberrypi
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Compiler Toolchain for crosscompiling on Windows, please take at least version 4.9 on jessie
http://gnutoolchains.com/raspberry/
Install DOME Studio Engineering Tool
In order to install the engineering tool follow the instructions below and notice all of its prerequisites:
Prerequisites
- Windows 7 – 10 with latest updates
- Install Visual C++ 2015 Build Tools (http://landinghub.visualstudio.com/
visual-cpp-build-tools) or Visual Studio 2015 with C++ support - (State charts add-on / optional) Rhapsody 7.5 System Designer
Action
- Start “DOME Studio Setup.exe”
If not installed, a recent version of DOME runtime will be automatically installed when DOME Studio starts.
The DOME Studio may be used in order to create Automation Objects and DOME application in a comfortable way. For instance the instantiation of Automation Objects, setting of node address etc. is very convenient. After the design of the application, the code can be downloaded to the involved nodes.
A more detailed information how to use the development environment can be found in provided user guide, installed during setup.
Helpers
DOME reperio
The commissioning, maintenance and supervision of DOME applications may be done completely by means of the provided interfaces. Nevertheless there is a small tool called reperio for the introspection of DOME nodes.
You can connect with one of the detected DOME nodes in the network and browse all running DOME processes on this node. Furthermore it is possible to create, start, stop, or destroy DOME processes by means with this tool.
Inside a DOME process, instantiated objects, their ports and their connections can be observed in graphic way. In addition to this relatively static information reperio allows also to log transmitted data for selected ports.
DOME-Debugger
Recently, DOME Debugger is available for Linux based operation systems only. The description will be reworked, when the tool is also ported to Windows.