DE102019217848A1 - Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten - Google Patents

Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten Download PDF

Info

Publication number
DE102019217848A1
DE102019217848A1 DE102019217848.0A DE102019217848A DE102019217848A1 DE 102019217848 A1 DE102019217848 A1 DE 102019217848A1 DE 102019217848 A DE102019217848 A DE 102019217848A DE 102019217848 A1 DE102019217848 A1 DE 102019217848A1
Authority
DE
Germany
Prior art keywords
program
unit
execution
command
program units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019217848.0A
Other languages
English (en)
Inventor
Jens Reckwell
Sebastian Stuermer
Sebastian Krauskopf
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102019217848.0A priority Critical patent/DE102019217848A1/de
Priority to CN202011303091.8A priority patent/CN112825034A/zh
Priority to US16/952,280 priority patent/US20210149722A1/en
Publication of DE102019217848A1 publication Critical patent/DE102019217848A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/041Function-oriented details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23389Modular program, each process has corresponding program module
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/26Pc applications
    • G05B2219/2609Process control
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/32Operator till task planning
    • G05B2219/32137Configure, connect, combine different program modules
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Ausführen heterogener Programmeinheiten (110, 210, 220, 230, 310, 320, 330) eines Programms, insbesondere zum Ansteuern eines automatisierten Systems,, umfassend das Bilden, durch eine zentrale Verwaltungseinheit (100), einer Ausführungseinheit (120, 130), welche Programmsequenzen mit mehreren Instanzen von Programmeinheiten (110a, 110b, 110c, 110d) umfasst, wobei die Programmeinheiten aus einer Menge von Programmeinheiten gewählt werden, welche an der zentralen Verwaltungseinheit (100) registriert sind; und das Ausführen der Instanzen der Programmeinheiten (110a, 110b, 110c, 110d) der Ausführungseinheit gemäß einer konfigurierten Reihenfolge.

Description

  • 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.

Claims (11)

  1. Verfahren zum Ausführen heterogener Programmeinheiten (110, 210, 220, 230, 310, 320, 330) eines Programms, insbesondere zum Ansteuern eines automatisierten Systems, umfassend: Bilden, durch eine zentrale Verwaltungseinheit (100), einer Ausführungseinheit (120, 130), welche Programmsequenzen mit mehreren Instanzen von Programmeinheiten (110a, 110b, 110c, 110d) umfasst, wobei die Programmeinheiten aus einer Menge von Programmeinheiten gewählt werden, welche an der zentralen Verwaltungseinheit (100) registriert sind; und Ausführen der Instanzen der Programmeinheiten (110a, 110b, 110c, 110d) der Ausführungseinheit gemäß einer konfigurierten Reihenfolge.
  2. Verfahren nach Anspruch 1, wobei die Programmeinheiten (110a, 110b, 110c, 110d, 210, 220, 230, 310, 320, 330) in mindestens zwei unterschiedlichen Programmiersprachen verfasst sind, und wobei jede Programmeinheit dazu eingerichtet ist, auf Variablen in einer gemeinsamen Datenstruktur (140) zuzugreifen, wobei die Variablen in der gemeinsamen Datenstruktur durch die zentrale Verwaltungseinheit angelegt (104) sind.
  3. Verfahren nach Anspruch 1 oder 2, weiter umfassend: Einfügen (132) einer weiteren Programmeinheit (110c) in die gebildete Ausführungseinheit (130), und Anpassen der konfigurierten Reihenfolge zum Ausführen der Instanzen der Programmeinheiten (110d, 110c) mit der eingefügten Programmeinheit.
  4. Verfahren nach einem der vorhergehenden Ansprüche, weiter umfassend: Empfangen von Variablen von einer registrierten Programmeinheit, und Erzeugen oder Löschen (104) der Variablen in der gemeinsamen Datenstruktur (140).
  5. Verfahren nach einem der vorhergehenden Ansprüche, weiter umfassend: Koordinieren einer Befehlsausführung in mehreren Programmeinheiten (210, 220, 230, 310, 320, 330) einer Ausführungseinheit durch Senden eines Startkommandos (begin(command)) für einen Befehl an jede der mehreren Programmeinheiten zur Einleitung der Befehlsausführung, und Beenden der Befehlsausführung, falls mindestens eine der beteiligten Programmeinheiten (220) die Befehlsausführung ablehnt (deny()).
  6. Verfahren nach Anspruch 5, weiter umfassend: Senden eines Ausführungskommandos (execute(command)) für den Befehl an jede der mehreren Programmeinheiten (310, 320, 330); und zyklisches Wiederholen des Sendens des Ausführungskommandos, bis eine Bestätigungsnachricht (okayQ) über die Ausführung des Befehls von jeder der mehreren Programmeinheiten (310, 320, 330) empfangen wurde.
  7. Verfahren nach Anspruch 5 oder 6, weiter umfassend: Senden eines Endkommandos (end(command)) an jede der mehreren Programmeinheiten (210, 220, 230; 310, 320, 330), falls die Befehlsausführung beendet wird oder der Befehl erfolgreich ausgeführt wurde.
  8. Verfahren nach einem der Ansprüche 5 bis 7, weiter umfassend: Registrieren eines auszuführenden Befehls durch mindestens eine Programmeinheit (110a, 110b, 110c, 110d, 210, 220, 230, 310, 320, 330) an der zentralen Verwaltungseinheit (100).
  9. Recheneinheit, die dazu eingerichtet ist, ein Verfahren nach einem der vorstehenden Ansprüche durchzuführen.
  10. Computerprogramm, das eine Recheneinheit veranlasst, ein Verfahren nach einem der Ansprüche 1 bis 8 durchzuführen, wenn es auf der Recheneinheit ausgeführt wird.
  11. Maschinenlesbares Speichermedium mit einem darauf gespeicherten Computerprogramm nach Anspruch 10.
DE102019217848.0A 2019-11-20 2019-11-20 Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten Pending DE102019217848A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102019217848.0A DE102019217848A1 (de) 2019-11-20 2019-11-20 Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten
CN202011303091.8A CN112825034A (zh) 2019-11-20 2020-11-19 独立的异构程序单元的执行和动态协调
US16/952,280 US20210149722A1 (en) 2019-11-20 2020-11-19 Dynamic Coordination and Execution of Independent Heterogeneous Program Units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019217848.0A DE102019217848A1 (de) 2019-11-20 2019-11-20 Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten

Publications (1)

Publication Number Publication Date
DE102019217848A1 true DE102019217848A1 (de) 2021-05-20

Family

ID=75683610

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019217848.0A Pending DE102019217848A1 (de) 2019-11-20 2019-11-20 Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten

Country Status (3)

Country Link
US (1) US20210149722A1 (de)
CN (1) CN112825034A (de)
DE (1) DE102019217848A1 (de)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3529158B2 (ja) * 1994-05-18 2004-05-24 ファナック株式会社 ロボット動作プログラミング方法及びプログラミング装置
US9158512B1 (en) * 2013-03-08 2015-10-13 Ca, Inc. Systems, processes and computer program products for communicating among different programming languages that are hosted on a Java Virtual Machine (JVM)
US10915541B2 (en) * 2014-07-01 2021-02-09 Verizon Patent And Licensing Inc. Generic API
US10401816B2 (en) * 2017-07-20 2019-09-03 Honeywell International Inc. Legacy control functions in newgen controllers alongside newgen control functions
JP7067286B2 (ja) * 2018-06-06 2022-05-16 オムロン株式会社 制御システム、制御システムの制御方法、および制御システムのプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Benedettelli, D.: Creating Cool Mindstorm NXT Robots. Springer-Verlag, New York. 2008. S. 357, 358 *

Also Published As

Publication number Publication date
CN112825034A (zh) 2021-05-21
US20210149722A1 (en) 2021-05-20

Similar Documents

Publication Publication Date Title
DE60035651T2 (de) Steuerungssystem zum synchronen kooperativen Betreiben einer Mehrzahl von Robotern
DE60127908T2 (de) Robotersteuerung
WO2014111417A1 (de) Mikroprozessor-gesteuerte steuerungseinrichtung für eine spritzgiessanlage mit einem simulationsrechner
EP2098926A1 (de) Verfahren und Vorrichtung zum Programmieren und/oder Konfigurieren einer Sicherheitssteuerung
DE102017215508A1 (de) Automatisierungssystem mit mindestens einem Feldgerät und mindestens einer Steuereinheit
EP3444682A1 (de) Verfahren zum rechnergestützten koppeln eines verarbeitungsmoduls in ein modulares technisches system und modulares technisches system
EP2732347B1 (de) Verfahren und system zur dynamischen verteilung von programmfunktionen in verteilten steuerungssystemen
DE102016215742A1 (de) Gateway und Verfahren zur Anbindung eines Datenquellensystems an ein IT-System
DE102012205709A1 (de) Verfahren zum Betreiben eines elektrischen Antriebssystems und Antriebssystem
DE202008017893U1 (de) Vorrichtung zum Programmieren und/oder Konfigurieren einer Sicherheitssteuerung
EP3082001B1 (de) Verfahren zum erweitern einer automatisierungseinrichtung mittels einem virtuellen feldgerät sowie automatisierungseinrichtung
EP3067768B1 (de) Automatisierungseinrichtung und Operator-System
DE102019217848A1 (de) Dynamische Koordination und Ausführung unabhängiger heterogener Programmeinheiten
EP1292958B1 (de) Verfahren zur organisation des ablaufs elektronisch gesteuerter schaltvorgänge
EP2090948B1 (de) Verfahren zum Betrieb eines Automatisierungssystems
EP3548975B1 (de) Steuerung eines technischen prozesses auf einer mehr-rechenkern-anlage
DE102016220566A1 (de) Verfahren zum Starten einer Steuerungskomponente eines Automatisierungssystems, Steuerungskomponente und Automatisierungssystem
DE102019005787A1 (de) System und Verfahren zur Steuerung zumindest einer Maschine, insbesondere eines Kollektivs von Maschinen
DE102015200300A1 (de) Verfahren zum Simulieren einer Maschine
DE102019217847A1 (de) Verfahren zum Datenaustausch zwischen mehreren Programmeinheiten
DE102012108490B4 (de) Verfahren und Simulationsumgebung zur flexiblen automatisierten Verbindung von Teilmodellen
DE102022112606B3 (de) Computerimplementiertes Verfahren zur Kalibrierung eines technischen Systems
EP3948449B1 (de) Verfahren und engineering-system zur änderung eines programms einer industriellen automatisierungskomponente
EP3757688B1 (de) Verfahren zur konfiguration einer industriellen maschine
EP1199618A2 (de) Verfahren zur Organisation eines Prozesses mit wenigstens einer Prozesseinrichtung zur Durchführung eines vorgebbaren Teilprozesses

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed