-
Die vorliegende Erfindung betrifft ein Verfahren zum Ausführen heterogener Programmeinheiten eines Programms, insbesondere zum Ansteuern eines automatisierten Systems, sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.
-
Stand der Technik
-
In verschiedenen industriellen Anwendungen, wie etwa Bewegungssteuerungen, Maschinensteuerungen, Robotersteuerungen und anderen werden herkömmlich feste Programmabläufe zur Ansteuerung von Systemfunktionen verwendet. Dabei muss der gesamte Ablauf in einer Entwicklungsumgebung bzw. einer Programmiersprache vollständig entworfen, konfiguriert, und kompiliert werden. Das Kompilat wird dann auf die Laufzeitumgebung, z.B. eine Steuerung übertragen und dort als vollständiges Programm ausgeführt. Modifikationen des Programmablaufs oder der Ausführungsreihenfolge einzelner Abschnitte sind dann nicht mehr möglich. Ebenso können Programme unterschiedlicher Sprachen oder systemspezifische und anwenderspezifische, voneinander unabhängige Programmeinheiten nur schwer gemeinsam in einen Programmablauf integriert oder miteinander koordiniert werden.
-
Es ist daher wünschenswert, eine Möglichkeit zur dynamischen Anpassung und Koordination von Programmabläufen zu erlangen.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zur Ausführung heterogener Programmeinheiten eines Programms, insbesondere zum Ansteuern eines automatisierten Systems, sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Im Rahmen der Erfindung wird zunächst durch eine zentrale Verwaltungseinheit eine Ausführungseinheit (Task) gebildet, welche Programmsequenzen mit mehreren Instanzen von Programmeinheiten aufweist. Dabei werden die Programmeinheiten aus einer Menge von Programmeinheiten, welche an der zentralen Verwaltungseinheit registriert sind, gewählt. Dann werden die Instanzen der Programmeinheiten der Ausführungseinheit gemäß einer konfigurierten Reihenfolge ausgeführt. Auf diese Weise kann aus einem Pool registrierter, unabhängiger Programmeinheiten eine koordinierte Programmsequenz gebildet werden. Die Programmeinheiten sind somit frei funktionell programmierbar, und interne und externe Programmeinheiten sind gleichberechtigt kombinierbar.
-
Bevorzugt können dabei die Programmeinheiten in mindestens zwei unterschiedlichen Programmiersprachen verfasst sein, können aber grundsätzlich auch alle in derselben Sprache verfasst sein. Dabei können beliebige Sprachen verwendet werden, sofern eine geeignete Schnittstelle zur Kommunikation mit der Verwaltungseinheit möglich ist, beispielsweise domänenspezifische Sprachen (domain specific languages, DSL), welche jeweils für bestimmte spezifische Anwendungen vorgesehen sind, oder es kann sich auch um universelle Sprachen handeln. Beispielsweise könnten verschiedene Programmeinheiten in C, C++, Python, Sprachen für speicherprogrammierbare Steuerungen (z.B. Sprachen gemäß EN 61131-3) und weiteren verfasst sein. Dabei kann jede Programmeinheit dazu eingerichtet sein, auf Variablen in einer gemeinsamen Datenstruktur zuzugreifen, wobei die Variablen in der gemeinsamen Datenstruktur durch die zentrale Verwaltungseinheit angelegt sind.
-
In einer Ausführungsform kann das Verfahren weiter das Einfügen einer weiteren Programmeinheit in die gebildete Ausführungseinheit umfassen, wobei die konfigurierte Reihenfolge zum Ausführen der Instanzen der Programmeinheiten mit der eingefügten Programmeinheit angepasst werden kann. Durch eine derartige dynamische Einreihung einer Programmeinheit aus dem Ressourcenpool in eine Ausführungseinheit an beliebiger Stelle wird die Programmeinheit zur Laufzeit flexibel instanziiert.
-
Das Verfahren kann weiter das Empfangen von Variablen von einer registrierten Programmeinheit, und Erzeugen oder Löschen der Variablen in der gemeinsamen Datenstruktur umfassen. Damit ist durch die Verwaltungseinheit sichergestellt, dass einheitliche Variablen verwendet werden und jede der Programmeinheiten Zugriff auf diese Variablen haben kann.
-
In einer Ausführungsform kann eine Befehlsausführung in mehreren Programmeinheiten einer Ausführungseinheit koordiniert werden, indem ein Startkommando für einen Befehl an jede der mehreren Programmeinheiten zur Einleitung der Befehlsausführung gesendet wird, und die Befehlsausführung beendet wird, falls mindestens eine der beteiligten Programmeinheiten in Reaktion auf das Startkommando die Befehlsausführung ablehnt. Ein derartiges Startkommando ermöglicht den Programmeinheiten, auf eine bevorstehende Befehlsausführung positiv oder ablehnend zu reagieren.
-
Zusätzlich kann das Senden eines Ausführungskommandos für den Befehl an jede der mehreren Programmeinheiten vorgesehen sein, und ein zyklisches Wiederholen des Sendens des Ausführungskommandos, bis eine Bestätigungsnachricht über die Ausführung des Befehls von jeder der mehreren Programmeinheiten empfangen wurde. Auf diese Weise wird eine synchronisierte Ausführung des Befehls durch mehrere Programmeinheiten sichergestellt.
-
Schließlich kann ein Endkommando an jede der mehreren Programmeinheiten gesendet werden, falls die Befehlsausführung beendet wurde oder der Befehl erfolgreich ausgeführt wurde.
-
Befehle, die auf diese Weise ausgeführt werden können, können beispielsweise in der Verwaltungseinheit vordefiniert sein oder dort durch eine der Programmeinheiten registriert werden, so dass eine flexible Anpassung der vorhandenen Befehle und Abläufe im System möglich ist.
-
Eine erfindungsgemäße Recheneinheit, z.B. eine Steuerungseinheit einer Bearbeitungsmaschine oder einer Robotereinheit, ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Vorzugsweise ist die Recheneinheit in einer Steuerungseinheit einer industriellen Anlage ausgebildet. In der industriellen Automatisierungstechnik, beispielsweise zur Fabrikautomatisierung oder zur Prozessautomatisierung, verwendete Geräte können bspw. Teil von Maschinen oder Anlagen, wie Werkzeugmaschinen, Produktionsmaschinen und/oder Handlingsmaschinen, sein, die üblicherweise durch eine Steuerungseinheit gesteuert werden. Derartige Steuerungseinheiten sind beispielsweise als Computerized Numerical Control (CNC) oder als Speicherprogrammierbare Steuerung (SPS) oder als Motion Control (MC) ausgebildet. Sie verfügen über zahlreiche Ein- und Ausgänge (E/A), z.B. analoge und digitale, und sind mit Feldgeräten, beispielsweise mit Sensoren und Aktoren, sowie anderen Steuerungseinheiten der Maschine bzw. Anlage verbunden, beispielsweise über analoge, digitale und/oder Netzwerkverbindungen. Die Steuerungseinheit kann somit Daten, insbesondere Messwerte, von den Sensoren empfangen und die einzelnen Aktoren durch entsprechende Signale ansteuern. Für den Datenaustausch weisen die Steuereinheiten üblicherweise mehrere unterschiedliche Datenanschlüsse auf, insbesondere Ethernet (bzw. Industrial Ethernet (Feldbus)).
-
Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Es versteht sich, dass die vorstehend genannten und die nachfolgend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung ausführlich beschrieben.
-
Figurenliste
-
- 1 zeigt ein Blockschaltbild beteiligter Einheiten einer beispielhaften Ausführungsform;
- 2 zeigt ein Sequenzdiagramm zur Koordination mehrerer Programmeinheiten gemäß einer beispielhaften Ausführungsform; und
- 3 zeigt ein Sequenzdiagramm zur Koordination mehrerer Programmeinheiten gemäß einer weiteren beispielhaften Ausführungsform.
-
Detaillierte Beschreibung der Zeichnung
-
1 zeigt ein Blockschaltbild einer Ausführungsform der Erfindung. Die Koordination und Ablaufsteuerung einzelner Programmeinheiten 110a, 110b, 110c, 110d, die in gleichen oder unterschiedlichen Programmiersprachen verfasst sein können, wird von einer zentralen Verwaltungseinheit 100 übernommen. Zu diesem Zweck können sich einzelne Programmeinheiten über einen zugehörigen Adapter, der als Schnittstelle für jede der verwendeten Programmiersprachen vorliegt, zunächst an dieser Verwaltungseinheit 100 registrieren (Verbindungen 102) und so als verfügbare Programmressource definiert werden. Die Verwaltungseinheit 100 kann dann zusammen mit der Registrierung 102 der Programmeinheiten oder getrennt davon eine Anmeldung der erforderlichen gemeinsam genutzten Variablen oder Datenobjekte vornehmen. Dazu kann jede Programmeinheit 110a, 110b, 110c, 110d, beispielsweise nach Abfrage durch die Verwaltungseinheit oder in einer vorgegebenen Reihenfolge, ihre verwendeten Variablen an die Verwaltungseinheit 100 melden. Diese erzeugt (oder auch entfernt) (Verbindungen 104) dann in einem gemeinsam genutzten Datenspeicher 140 die jeweiligen Variablen und meldet allen registrierten Programmeinheiten die registrierten Variablen bzw. die Variablen und einen zugehörigen Bezeichner zurück, so dass die einzelnen Programmeinheiten 110a, 110b, 110c, 110d nun in der Lage sind, auf diese Variablen im gemeinsamen Datenspeicher 140 lesend und/oder schreibend zuzugreifen.
-
Nach einer derartigen Konfiguration können Programmeinheiten oder Sequenzen aus mehreren Programmeinheiten ausgeführt werden. Zu diesem Zweck kann in einer Ausführungsform die Verwaltungseinheit 100 direkt die Ausführung von einer oder mehreren Programmsequenzen ansteuern. Sie kann dabei auch Ausführungseinheiten 120, 130 bilden, welche jeweils eine Untermenge von Programmeinheiten sowie eine zugehörige, konfigurierbare Ausführungsreihenfolge beinhalten. Die verschiedenen Programmeinheiten können in gleichen oder verschiedenen Sprachen verfasst sein; ebenso kann es sich beispielsweise um benutzerspezifische oder systemspezifische Programmeinheiten handeln. Insbesondere können Programmeinheiten verwendet werden, die in domänenspezifischen Sprachen (DSL) verfasst sind und funktionell frei programmierbar sind. Eine Ausführungseinheit kann damit beispielsweise in einer Ansteuerung für den sequentiellen Abruf der darin definierten unterschiedlichen Programmeinheiten bzw. Instanzen von Programmeinheiten verantwortlich sein, wie etwa Bewegungssteuerung, Kinematik, Feldbustreiber und weitere.
-
Wie in 1 gezeigt, können beispielsweise in einer ersten Ausführungseinheit 120 mehrere Instanzen von Programmeinheiten in einer Sequenz nacheinander ausgeführt werden. Die verwendeten Einheiten können aus der Menge der registrierten Programmeinheiten gewählt und gemäß der konfigurierten Reihenfolge nacheinander ausgeführt werden. So wird beispielsweise zunächst eine Instanz der Programmeinheit 110d ausgeführt, und anschließend leitet die Ausführungseinheit die Ausführung einer weiteren Instanz der Einheit 110d ein, und anschließend wie gezeigt beispielsweise Instanzen der Programmeinheiten 110b, 110c und 110a. Dabei können auch weniger oder mehr Programminstanzen als hier gezeigt verwendet werden; die Ausführung gemäß der Sequenz wird durch die Ausführungseinheit 120 fortgesetzt, bis die letzte konfigurierte Programmeinheit (hier Einheit 110a) erreicht ist.
-
Es ist dabei möglich, sowohl die maximale Laufzeit der gesamten Ausführungseinheiten als auch die Laufzeiten einzelner Programmeinheiten durch die Verwaltungseinheit festzulegen. Optional ist es auch möglich, die vollständige Ausführung einer Programmeinheit innerhalb einer Sequenz bzw. Ausführungseinheit zu überwachen und bestimmte Maßnahmen zu ergreifen, falls die Programmeinheit nicht vollständig ausgeführt wurde, z.B. durch Wiederholen eines bestimmten Teils einer Sequenz oder Warten, bis die Ausführung erfolgreich war.
-
Das Ausführen von systemspezifischen Programmeinheiten wie Motion, Kinematik, Feldbustreiber usw. erfolgt über den Scheduler. Weiterhin werden alle anwenderspezifischen Programmeinheiten mittels des Schedulers ausgeführt. Zur Konfiguration und zur Visualisierung werden Dialoge in einer neu entwickelten Oberfläche entwickelt.
-
Weitere Programmeinheiten können auch dynamisch zur Laufzeit registriert 102 werden. Optional können neu registrierten Programmeinheiten auch direkt bei der Registrierung oder im Anschluss daran die gültigen Variablen und Bezeichner mitgeteilt werden, um einen Zugriff auf den gemeinsamen Datenspeicher 140 zu erlauben.
-
Ebenso können neue hinzugefügte oder bereits zuvor registrierte unabhängige Programmeinheiten dynamisch zur Laufzeit in eine neu erzeugte oder eine bereits bestehende Ausführungseinheit eingereiht werden. Es ist nur erforderlich, dass sie dazu vorher an der Verwaltungseinheit registriert werden und damit zur Verfügung stehen. Dabei kann beispielsweise durch die Verwaltungseinheit bereits eine Ausführungseinheit 130 mit zwei Instanzen von unterschiedlichen oder gleichen Programmeinheiten 110d definiert sein, deren Ausführung auch bereits gestartet worden sein kann. Bei Bedarf kann dann eine weitere Programmeinheit 110c zwischen die beiden schon definierten Einheiten eingefügt werden 132, was auch zur Laufzeit möglich ist. Diese Spezialisierung der Programmeinheit erfolgt über eine Parametrierung. Die Ausführungseinheit kann die konfigurierte Reihenfolge der Programmeinheiten entsprechend frei anpassen. Damit können die Ausführungseinheiten bzw. Programmsequenzen durch Verwendung der registrierten Programmeinheiten von der Verwaltungseinheit dynamisch abgeändert und ergänzt werden. Es versteht sich, dass das gewählte Beispiel nur das Prinzip verdeutlichen soll und dass beliebig viele Programminstanzen, auch z.B. zu unterschiedlichen Zeitpunkten oder in unterschiedlichen Ausführungseinheiten, eingereiht oder angefügt werden können.
-
Die instanziierten Programmeinheiten können in einer Ausführungsform zunächst unabhängig voneinander agieren, d.h. ein Fehler in einer Programmeinheit hat in dieser Variante keine Rückwirkung auf eine andere Programmeinheit. In weiteren Ausführungsformen ist es möglich, Gruppen aus mehreren Programmeinheiten zu bilden, die beispielsweise zusammen einen bestimmten Bewegungsablauf eines Aktors bilden. Dies bietet sich insbesondere an, wenn eine Anwendung zumindest teilweise Abhängigkeiten zwischen mehreren Programmeinheiten erforderlich macht und damit eine höhere Integrität der Programmeinheiten erreicht werden soll. Diese Gruppen können dann jeweils wieder wie eine einzelne Programmeinheit agieren.
-
In einer weiteren Ausführungsform können heterogene, unabhängige Programmeinheiten koordiniert werden, indem eine feste Kommandosequenz zur Koordination entworfen wird. Die zu koordinierenden Programmeinheiten können, wie vorstehend beschrieben, als zusammengehörige Gruppen definiert sein oder können dynamisch zur Koordination angesprochen werden. Eine Gruppe kann dabei wie eine homogene Programmeinheit agieren, d.h. ein Fehler in einer Programmeinheit kann als Fehler in der Gruppe interpretiert werden. Dabei kann eine Kommandosequenz aus einem Startkommando (begin), einem Ausführungskommando (execute) und einem Endkommando (end) gebildet werden, die zyklisch für mehrere zu koordinierende Programmeinheiten durchlaufen wird.
-
2 zeigt ein erstes Beispiel eines Sequenzdiagramms für einen Durchlauf, bei dem eine von drei zu koordinierenden Programmeinheiten die Ausführung eines Befehls ablehnt. Der Ablauf der gezeigten Sequenz ist zeitlich von oben nach unten zu verstehen. Zunächst wird durch die koordinierende Ausführungseinheit 200 ein Startkommando für den in dieser Sequenz auszuführenden Befehl, begin(command), an jede der Programmeinheiten 210, 220, 230 übermittelt. Der auszuführende Befehl kann beispielsweise als Argument des Startkommandos angegeben werden. Sobald eine Einheit das Startkommando erhalten hat, kann sie eine vorgegebene Antwort an die Ausführungseinheit (oder jede andere Einheit, welche den aktuellen Programmablauf koordiniert) zurücksenden. Das Startkommando ermöglicht somit den koordinierten Programmeinheiten, auf eine bevorstehende Ausführung eines Befehls positiv oder ablehnend zu reagieren.
-
Dabei können bevorzugt die Programmeinheiten sequentiell nacheinander angesprochen werden. Zunächst wird also das Startkommando an die erste Programmeinheit 210 gesendet, welche im vorliegenden Fall die Bereitschaft zur Ausführung durch eine entsprechende Bestätigungsnachricht okay() zurück signalisiert. Nach dem Empfang dieser Antwort wird das Startkommando durch die Ausführungseinheit 200 an die zweite beteiligte Programmeinheit 220 gesendet. Im vorliegenden Beispiel erfolgt eine Ablehnung der Ausführung durch diese zweite Programmeinheit 220, was durch das Zurücksenden einer entsprechenden Ablehnungsnachricht deny() signalisiert wird. Anschließend kann auch an die dritte beteiligte Programmeinheit 230 noch das Startkommando übermittelt werden und die entsprechende Antwort erhalten werden.
-
Die Ablehnung durch mindestens eine der zu koordinierenden Programmeinheiten kann dann dafür sorgen, dass die Befehlsausführung ohne weitere Schritte abgebrochen wird. Dies wird an alle beteiligten Programmeinheiten durch Übermittlung eines Endkommandos end(command) für den auszuführenden Befehl mitgeteilt. Eine Antwort auf das Endkommando ist nicht erforderlich, könnte aber optional vorgesehen sein. Damit ist die Ausführungssequenz für diesen Befehl beendet und ein weiterer Befehl kann eingeleitet werden.
-
3 zeigt ein beispielhaftes Sequenzdiagramm mit einer durch eine Programmeinheit ausgelösten Verzögerung. Dabei wird zunächst erneut durch ein Startkommando begin(command) unter Nennung des jeweiligen Befehls die geplante Befehlsausführung an alle beteiligten Programmeinheiten angekündigt. Nach jedem gesendeten Startkommando wird von der Programmeinheit eine der möglichen Antworten übertragen. Anders als im Beispiel aus 2 melden nun alle drei beteiligten Programmeinheiten die positive Bereitschaft zur Ausführung des Befehls durch eine Bestätigungsnachricht, okay().
-
Da keine Programmeinheit die Ausführung abgelehnt hat und von allen Einheiten die erforderliche Bestätigung vorliegt, folgt als nächstes ein Ausführungskommando execute(command) für den auszuführenden Befehl, der die tatsächliche Ausführung bzw. Bearbeitung des Befehls in den einzelnen Programmeinheiten 310, 320, 330 anweist. Auch hier wird von jeder Programmeinheit eine Antwort zurückgesendet. Im vorliegenden Beispiel führt die erste Programmeinheit den entsprechenden Befehl aus und sendet abschließend unmittelbar erneut eine Bestätigungsnachricht okayQ.
-
Die zweite Programmeinheit 320 in diesem Beispiel kann als Antwort eine Verzögerungsnachricht, delay() senden. Diese Nachricht kann angeben, dass für die antwortende Programmeinheit die Bearbeitung des Kommandos derzeit nicht oder nicht innerhalb einer vordefinierten Zeitspanne möglich ist. Auch an die dritte Programmeinheit 330 wird danach noch das Ausführungskommando execute gesendet und eine entsprechende Rückantwort erwartet.
-
Da also im vorherigen Schritt eine rechtzeitige Ausführung nicht für alle Programmeinheiten möglich war, wird dieser Schritt für alle Programmeinheiten 310, 320, 330 wiederholt, so dass erneut ein Ausführungskommando gesendet wird und jeweils die Antwort jeder Programmeinheit erhalten wird.
-
Das Ausführungskommando execute(command) kann dabei zyklisch solange aufgerufen werden, bis alle Programmeinheiten die Ausführung erfolgreich abgeschlossen haben. Anschließend kann wieder das Endkommando an alle Programmeinheiten gesendet werden. Dieses Endkommando wird bevorzugt immer ausgeführt und signalisiert das synchronisierte Beenden des Befehls für alle beteiligten Programmeinheiten.
-
Es ist optional auch denkbar, dass auch in Reaktion auf das Ausführungskommando neben einer Bestätigung oder einer Verzögerung des Befehls eine Ablehnung des Befehls gestattet wird, so dass bei einer entsprechenden Antwort einer Programmeinheit die Ausführung durch das Endkommando beendet wird.
-
Weiter könnte in beispielhaften Ausführungsformen die detaillierte Gestaltung der Kommandosequenz je nach auszuführendem Befehl unterschiedlich sein; beispielsweise könnten bestimmte Befehle vorgesehen sein, bei denen ein Abbruch bzw. eine Ablehnung in der Ausführungsphase gestattet ist, während bei einer anderen Gruppe von Befehlen kein Abbruch möglich ist, sondern die zyklische Wiederholung des Ausführungskommandos fortgesetzt wird, bis die Ausführung korrekt abgeschlossen ist. Weiter könnte beispielsweise die Zeitspanne, die zur Ausführung eines Befehls vorgesehen ist und die entscheidet, ob eine Programmeinheit mit einer Verzögerungsnachricht antwortet, für verschiedene Gruppen von Befehlen oder für jeden einzelnen Befehl separat definiert sein. In einer Variante könnte neben einzelnen Befehlen auch eine vordefinierte Gruppe von Befehlen als Argument der Kommandosequenz eingesetzt werden, so dass bei Aufruf durch das Startkommando die ganze Befehlsgruppe zur Ausführung initialisiert wird.
-
Für verschiedene Funktionalitäten können im System beispielsweise Befehle vordefiniert sein. Ebenso ist es auch möglich, dass die vorhandenen Befehle durch die Programmeinheiten erweitert sein können. Zu diesem Zweck kann jede an der Verwaltungseinheit registrierte Programmeinheit einen oder mehrere Befehle anmelden, indem sie eine entsprechende Anmeldung senden. Optional kann die Verwaltungseinheit, ähnlich wie bei der Anmeldung von Variablen, die neu angemeldeten Befehle allen registrierten Programmeinheiten mitteilen. Anschließend können die Programmeinheiten die Ausführung eines beliebigen Befehls über die Kommandosequenz wie in den 2 oder 3 beschrieben auslösen.
-
Eine Verriegelung der Befehle in der Programmeinheit ist nicht erforderlich, da die Befehle durch die Verwaltungseinheit bzw. Ausführungseinheiten sequentiell ausgeführt werden.
-
Die beschriebenen Ausführungsformen können zum Beispiel in den verschiedensten Steuerungen zur Anwendung kommen.
-
Beispielsweise kann eine erste Programmeinheit Feldbusdaten aus einer speziellen Hardware, z.B. einem FPGA, in den lokalen Speicher kopieren und die Daten so aufbereiten, dass sie von anderen Programmeinheiten verwendet werden können. Eine derartige Programmeinheit könnte typischerweise in C/C++ programmiert sein.
-
Eine zweite Programmeinheit kann nun auf Ein- und Ausgangsdaten der Feldbusgeräte zugreifen und beispielsweise prüfen, ob ein Eingang (z.B. Endschalter) gesetzt wurde, und gegebenenfalls einen Ausgang setzen, etwa eine Signalleuchte. Diese Programmeinheit kann typischerweise in SPS (IEC 61131-3) programmiert sein.
-
Eine dritte Programmeinheit kann nun auf die Daten komplexer Feldbusgeräte (bspw. Antriebe) zugreifen und diese für nachfolgende Programmeinheiten aufbereiten (z.B. Wichtung). Diese Programmeinheit kann typischerweise in C/C++ programmiert sein.
-
Weitere - instanziierte - Programmeinheiten können dann für ihren jeweiligen Datensatz (Antrieb) neue Sollwerte als Grundlage für die jeweilige weitere Bewegung berechnen, beispielsweise unter Verwendung komplexer Regelalgorithmen. Diese Programmeinheit kann auch durch dritte bereitgestellt werden und könnte beispielsweise in Matlab entworfen und nach C generiert worden sein. Diese Programmeinheiten können alle sowohl zu einer einzelnen Programmsequenz zusammengefasst werden, als auch in mehrere Programmsequenzen aufgeteilt werden. Selbstverständlich handelt es sich auch bei den hier genannten Programmiersprachen und Programmeinheiten nur um beispielhafte Varianten, die durch andere beliebig ersetzt werden können.