Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR DATA PROCESSING AND PROGRAMMABLE LOGIC CONTROLLER
Document Type and Number:
WIPO Patent Application WO/2020/074650
Kind Code:
A1
Abstract:
The invention relates to a method for optimizing data processing in a programmable logic controller (PLC). The PLC has a control task, which comprises a plurality of executable programs. At least two programs of the control task each have at least one parallel processing portion having a work package having a plurality of sub-tasks. The parallel processing portions in the respective programs are assigned a priority having a specified priority level. The particular priority levels are inserted into a data structure as soon as execution of the program has reached the parallel processing portion. At least one parallel processor core checks if there are entries in the data structure and, if there are entries, said parallel processor core completes sub-tasks from the work package of the program that has a priority level in the first position of the entries in the data structure. During a program cycle, an expected computing throughput of the control task is continually evaluated and at least one of the priority levels of the parallel processing portions of the respective programs is dynamically modified if the computing throughput of the control task is increased thereby.

Inventors:
VOGT ROBIN (DE)
Application Number:
PCT/EP2019/077497
Publication Date:
April 16, 2020
Filing Date:
October 10, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BECKHOFF AUTOMATION GMBH (DE)
International Classes:
G06F9/50; G06F9/48
Foreign References:
EP0935194A21999-08-11
Attorney, Agent or Firm:
PATENTANWALTSKANZLEI WILHELM & BECK (DE)
Download PDF:
Claims:
Patentansprüche

1. Verfahren zum Optimieren einer Datenverarbeitung (300) auf einer speicherprogrammierbaren Steuerung (100), die wenigstens einen Parallelprozessorkern (113, 114) um fasst,

wobei eine Steuerungsaufgabe mehrere ausführbare Pro gramme umfasst,

wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsab schnitt (303) mit einem Arbeitspaket (305, 310) aufwei sen, und das Arbeitspaket (305, 310) mehrere Teilaufga ben (321-324, 331-333) umfasst,

wobei den parallelen Bearbeitungsabschnitten (303) in den jeweiligen Programmen eine Priorität mit einer vor gegebenen Prioritätsstufe (340, 345) zugewiesen ist, wobei die jeweiligen Prioritätsstufen (340, 345) in ei ne Datenstruktur (355) eingefügt werden, sobald ein Ausführen des Programms an dem parallelen Bearbeitungs abschnitt (303) angelangt ist,

wobei der wenigstens eine Parallelprozessorkern (113, 114) prüft, ob in der Datenstruktur (355) Einträge vor handen sind und wobei, sofern Einträge vorhanden sind, Teilaufgaben (321-324, 331-333) aus dem Arbeitspaket (305, 310) des Programms, dessen Prioritätsstufe (340, 345) an erster Stelle der Einträge in der Datenstruktur (355) steht, von dem wenigstens einen Parallelpro zessorkern (113, 114) abgearbeitet werden,

wobei während eines Programmzyklus ein zu erwartender Rechendurchsatz der Steuerungsaufgabe laufend bewertet wird, und

wobei wenigstens eine der Prioritätsstufen (340, 345) der parallelen Bearbeitungsabschnitte (340, 345) der jeweiligen Programme dynamisch angepasst wird, wenn sich der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht .

2. Verfahren nach Anspruch 1, wobei die Anpassung der wenigstens einen Prioritätsstu fe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme bei einer Unterbrechung (366) der Abarbeitung der Teilaufgaben (321-324, 331- 333) des Programms erfolgt.

3. Verfahren nach Anspruch 2,

wobei die Anpassung der wenigstens einen Prioritätsstu fe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme erfolgt, wenn die Teil aufgaben (321-324, 331-333) des Programms aufgrund von anderen Teilaufgaben eines weiteren Programms (321-324, 331-333) mit höherer Prioritätsstufe (340, 345) des pa rallelen Bearbeitungsabschnitts (303) auf dem wenigs tens einen Parallelprozessorkern (113, 114) unterbro chen werden.

4. Verfahren nach Anspruch 1 bis 3,

wobei bei der Anpassung der wenigstens einen Priori tätsstufe (340, 345) der parallelen Bearbeitungsab schnitte (303) der jeweiligen Programme eine zusätzli che Bedingung, insbesondere eine Echtzeitbedingung der Steuerungsaufgabe, berücksichtigt wird.

5. Verfahren nach Anspruch 3 oder 4,

wobei die wenigstens eine Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme um einen Faktor reduziert wird, wenn die Teilaufgaben (321-324, 331-333) des Programms auf grund von anderen Teilaufgaben (321-324, 331-333) eines weiteren Programms mit höherer Prioritätsstufe (340, 345) des parallelen Bearbeitungsabschnitts (303) auf dem wenigstens einen Parallelprozessorkern (113, 114) unterbrochen werden.

6. Verfahren nach einem der Ansprüche 3 bis 5, wobei die wenigstens eine Prioritätsstufe (113, 114) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme auf einen minimalen Wert gesetzt wird, wenn die Teilaufgaben (321-324, 331-333) der Programme sequentiell (365) in den entsprechenden Programmen aus führbar sind.

7. Verfahren nach Anspruch 1 bis 6,

wobei die wenigstens eine Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme zu Beginn eines neuen Programmzyklus auf den vorgegebenen Wert zurückgesetzt wird.

8. Verfahren nach Anspruch 6,

wobei die wenigstens eine Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme zu Beginn eines neuen Programmzyklus erhöht wird, wenn die Teilaufgaben (321-324, 331-333) vorher sequentiell (365) in den zugeordneten Programmen ausgeführt wurden.

9. Speicherprogrammierbare Steuerung (100), umfassend:

eine Kommunikationsschnittstelle (130), zum Einlesen von Sensordaten und zum Ausgeben von Aktordaten, eine Datenverarbeitungseinrichtung (110), die wenigs tens einen Parallelprozessorkern (113, 114) zum Ausfüh ren einer Steuerungsaufgabe umfasst, um aus den Sensor daten Aktordaten zu erzeugen,

eine Steuerungseinrichtung (120), die einen Datenstruk turspeicher zum Speichern einer Datenstruktur (355) mit Prioritätsstufen (340, 345) und einen Prioritätenver walter (350) zum Verwalten der Prioritätsstufen (340, 345) in der Datenstruktur (355) aufweist,

wobei die Steuerungseinrichtung (120) einen Zwischener gebnisspeicher umfasst, auf dem Zwischenergebnisse von Berechnungen gesichert werden, wobei die Steuerungsaufgabe mehrere ausführbare Pro gramme umfasst,

wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsab schnitt (303) mit einem Arbeitspaket (305, 310) aufwei sen, und das Arbeitspaket (305, 310) mehrere Teilaufga ben (321-324, 331-333) umfasst,

wobei den parallelen Bearbeitungsabschnitten (303) in den jeweiligen Programmen eine Priorität mit der vorge gebenen Prioritätsstufe (340, 345) zugewiesen ist, wobei der Prioritätenverwalter (350) ausgebildet ist, die jeweiligen Prioritätsstufen (340, 345) in die Da tenstruktur (355) im Datenstrukturspeicher einzufügen, sobald ein Ausführen des Programms an dem parallelen Bearbeitungsabschnitt (303) angelangt ist und dabei den Eintrag mit der höchsten Prioritätsstufe (340, 345) an die erste Stelle der Einträge in der Datenstruktur (355) zu setzen,

wobei der wenigstens eine Parallelprozessorkern (113, 114) ausgebildet ist, die Datenstruktur (355) im Daten strukturspeicher auf Einträge der Prioritätsstufen (340, 345) zu prüfen, und sofern Einträge vorhanden sind, Teilaufgaben (321-324, 331-333) aus dem Arbeits paket (305, 310) des entsprechenden Programms abzuar beiten, dessen Prioritätsstufe (340, 345) an erster Stelle der Einträge in der Datenstruktur (355) steht, wobei die Steuerungseinrichtung (120) ausgebildet ist, während eines Programmzyklus einen zu erwartenden Re chendurchsatz der Steuerungsaufgabe laufend zu bewer ten, und

wobei der Prioritätenverwalter (350) ausgelegt ist, we nigstens eine der Prioritätsstufen (340, 345) der pa rallelen Bearbeitungsabschnitte (303) der jeweiligen Programme dynamisch anzupassen, wenn sich der Rechen durchsatz der Steuerungsaufgabe dadurch erhöht.

10. Speicherprogrammierbare Steuerung nach Anspruch 9, wobei der Prioritätenverwalter ausgebildet ist, die An passung der wenigstens einen Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jewei ligen Programme bei einer Unterbrechung (366) der Abar beitung der Teilaufgaben (321-324, 331-333) des Pro gramms vorzunehmen.

11. Speicherprogrammierbare Steuerung nach Anspruch 10, wobei der Prioritätenverwalter (350) ausgelegt ist, die Anpassung der wenigstens einen Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme vorzunehmen, wenn die Teilaufgaben (321-324, 331-333) aufgrund von anderen Teilaufgaben (321-324, 331-333) eines weiteren Programms mit höherer Prioritätsstufe (340, 345) auf dem wenigstens einen Pa rallelprozessorkern (113, 114) unterbrochen werden.

12. Speicherprogrammierbare Steuerung nach Anspruch 9 bis

11,

wobei der Prioritätenverwalter (350) ausgebildet ist, bei der Anpassung der wenigstens einen Prioritätsstufe (340, 345) der parallelen Bearbeitungsabschnitte (303) der jeweiligen Programme eine zusätzliche Bedingung, insbesondere eine Echtzeitbedingung der Steuerungsauf gabe, zu berücksichtigen.

13. Speicherprogrammierbare Steuerung nach Anspruch 10 bis

12,

wobei der Prioritätenverwalter (350) ausgebildet ist, die wenigstens eine Prioritätsstufe (340, 345) der pa rallelen Bearbeitungsabschnitte (303) der jeweiligen Programme um einen Faktor zu reduzieren, wenn die Teil aufgaben (321-324, 331-333) des Programms aufgrund von anderen Teilaufgaben (321-324, 331-333) eines weiteren Programms mit höherer Prioritätsstufe (340, 345) auf dem wenigstens einen Parallelprozessorkern (113, 114) unterbrochen werden.

14. Speicherprogrammierbare Steuerung nach Anspruch 10 bis

13,

wobei der Prioritätenverwalter (350) ausgelegt ist, die wenigstens eine Prioritätsstufe (340, 345) der paralle len Bearbeitungsabschnitte (303) der jeweiligen Pro gramme auf einen minimalen Wert zu setzen, wenn die Teilaufgaben (321-324, 331-333) der Programme sequenti ell (365) in den entsprechenden Programmen ausführbar sind .

15. Speicherprogrammierbare Steuerung nach Anspruch 9 bis

14,

wobei der Prioritätenverwalter (350) ausgebildet ist, die wenigstens eine Prioritätsstufe (340, 345) der pa rallelen Bearbeitungsabschnitte (303) der jeweiligen Programme zu Beginn eines neuen Programmzyklus auf den vorgegebenen Wert zurückzusetzen.

16. Speicherprogrammierbare Steuerung nach Anspruch 14, wobei der Prioritätenverwalter (350) ausgelegt ist, die wenigstens eine Prioritätsstufe (340, 345) der paralle len Bearbeitungsabschnitte (303) der jeweiligen Pro gramme zu Beginn eines neuen Programmzyklus zu erhöhen, wenn die Teilaufgaben (321-324, 331-333) der Programme vorher sequentiell (365) in den zugeordneten Programmen ausgeführt wurden.

17. Speicherprogrammierbare Steuerung nach Anspruch 9 bis 16,

wobei der Prioritätenverwalter (350) ausgebildet ist, den Eintrag der Prioritätsstufe (340, 345) in der Da tenstruktur (350) im Datenstrukturspeicher gemäß der vorgenommenen Anpassung der wenigstens einen Priori tätsstufe (340, 345) abzuändern, und

wobei der Prioritätenverwalter (350) ausgebildet ist den wenigstens einen Parallelprozessorkern (113, 114) über die Änderung des Eintrags der Prioritätsstufe (340, 345) in der Datenstruktur (355) zu informieren.

18. Speicherprogrammierbare Steuerung nach Anspruch 9 bis 17,

wobei der Prioritätenverwalter (350) ausgebildet ist, auf mehreren Programmen der Steuerungsaufgabe verteilt ausführbar zu sein.

Description:
Beschreibung

Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung

Die vorliegende Erfindung betrifft ein Verfahren zur Daten verarbeitung auf einer speicherprogrammierbaren Steuerung (SPS) . Die Erfindung betrifft des Weiteren eine speicherpro grammierbare Steuerung, die insbesondere zur Regelung oder Steuerung einer Maschine oder einer Anlage eingesetzt wird.

Maschinen oder Anlagen eines Automatisierungssystems werden häufig mithilfe speicherprogrammierbarer Steuerungen (SPS) gesteuert. Die SPS steuert oder regelt die Aktoren und Senso ren der Maschine oder der Anlage per Kommunikationsschnitt stelle. Diese kann beispielsweise als Feldbussystem verwirk licht sein, wobei die Aktoren und Sensoren der Maschine oder der Anlage über das Feldbussystem vernetzt sein können.

Durch das Auslesen der Messdaten der Sensoren und/oder der aktuellen Ist-Daten der Aktoren, die mit den Eingängen der speicherprogrammierbaren Steuerung verbunden sind, erhält die SPS eine Information über den Status der Maschine oder der Anlage. Die Aktoren sind an die Ausgänge der speicherprogram mierbaren Steuerung angeschlossen und ermöglichen die Steue rung der Maschine oder der Anlage. Zur dynamischen Ansteue rung der Aktoren generiert die SPS auf Basis der Ist-Daten und/oder auf Basis der Messdaten der Sensoren die Ausgabeda ten für die Aktoren, wobei es sich bei den genannten Daten um einzelne Werte oder Wertegruppen handeln kann. Ebenso kann die Ansteuerung der Aktoren aufgrund von Vorgaben, zum Bei spiel anhand von Bewegungsprofilen erfolgen. Um die gewünsch te Betriebsweise der Maschine bzw. der Anlage bereitstellen zu können, legt die Steuerungsaufgabe der SPS fest, welche seitens der SPS, in Abhängigkeit von entsprechenden Eingangs daten, erzeugte Ausgangsdaten den Aktoren zugeführt werden. Die Verarbeitung der Daten durch die SPS erfolgt meist zyk- lisch und umfasst drei Schritte: Bereitstellen von aktuellen Eingabedaten (beispielsweise Ist-Daten der Aktoren und/oder Messdaten der Sensoren) , Verarbeitung der Eingabedaten zu Ausgabedaten, und Ausgabe der Ausgabedaten für die Bewegungs steuerung (beispielsweise Zielpositionen, etc. ) .

Für die Steuerung des Automatisierungssystems ist es zwingend erforderlich, dass die Verarbeitung der Eingabedaten spätes tens zu dem Zeitpunkt beendet ist, zu dem die Ausgabedaten für die Aktoren benötigt werden. Dieser Zeitpunkt bezeichnet die Deadline und entspricht gewöhnlich dem Ende eines Pro grammzyklus der SPS. Für die speicherprogrammierbare Steue rung wird in der Regel eine harte Echtzeitfähigkeit gefor dert, was bedeutet, dass Deadlines konsequent eingehalten und niemals überschritten werden dürfen. Zusätzlich muss zum Zeitpunkt der Deadline ein valides Ergebnis für die Aktoren vorliegen. Dies ist vor allem dann relevant, wenn das Über schreiten der Deadline zu Personen- oder Sachschäden führen kann, beispielsweise wenn ein Roboterarm nicht rechtzeitig abgebremst wird.

Die Programmausführung der SPS ist beispielsweise in der Norm IEC 61131-3 festgelegt. Die SPS besitzt eine Steuerungsaufga be und diese setzt sich meist aus einem oder mehreren im All gemeinen zyklisch auszuführenden Programmen mit Aufgaben, den sogenannten „Tasks" zusammen. Im einfachsten Fall weist die speicherprogrammierbare Steuerung nur einen einzelnen Prozes sorkern für mehrere unabhängige Programme mit Aufgaben

(Tasks) auf. Deshalb muss die verfügbare Rechenzeit derart aufgeteilt werden, dass alle Programme mit entsprechenden Aufgaben ihre Deadlines einhalten können. Die verschiedenen Programmzyklus-Zeiten in der SPS können sich beispielsweise je nach Anwendung in einem Bereich von 100 ys bis 20 ms oder bei komplexen Aufgaben in einem Bereich von 50 ms bis 100 ms befinden. Aufgrund der verschiedenen Programmzyklus-Zeiten gilt es zu verhindern, dass Programme mit Aufgaben mit einer längeren Zykluszeit den Start von Programmen mit Aufgaben mit einer kürzeren Zykluszeit verzögern, so dass diese ihre Dead lines nicht mehr einhalten können. Häufig kann dies nur er reicht werden, wenn die Ausführung eines solchen langsamen Programms unterbrochen und später fortgesetzt wird.

Aus diesem Grund wird jedem Programm mit entsprechenden Auf gaben gewöhnlich eine vorgegebene Prioritätsstufe zugeteilt. Diese kann aus der Deadline und/oder den Abhängigkeiten der jeweiligen Programme zu den anderen Programmen ermittelt wer den, wenn die Programme beispielsweise auf die Ergebnisse der anderen Programme angewiesen sind. Die Prioritätsstufe kann ferner einem ganzzahligen Wert entsprechen.

Da viele SPS Prozessoren mit mehreren Prozessorkernen

und/oder mehrere Prozessoren umfassen, kann die SPS Programme mit entsprechenden Aufgaben auf mehrere Prozessorkerne oder Prozessoren aufteilen, um die Gesamtverarbeitungszeit der Programme mit den entsprechenden Aufgaben durch eine zumin dest teilweise parallele Ausführung der entsprechenden Aufga ben zu reduzieren. Dabei kann sich ein sogenannter Rechen durchsatz der Steuerungsaufgabe aus einer zeitlichen Unter brechungsdauer der Programme, einer Anzahl an Unterbrechungen der Programme bzw. einer Rechenzeit der jeweiligen Programme ergeben. Ferner kann der Rechendurchsatz der Steuerungsaufga be von einer Auslastung der Prozessorkerne abhängen . Werden die Programme und Aufgaben auf mehrere Prozessorkerne aufge teilt, so kann es aufgrund der zugeordneten Prioritätsstufen V orkommen, dass Aufgaben, die gerade parallel ausgeführt wer den von anderen Aufgaben, die mit einer höheren Prioritäts stufe im entsprechenden Programm verknüpft sind, auf den pa rallel arbeitenden Prozessorkernen unterbrochen werden. Un terbrechungen von Aufgaben erhöhen den sogenannten Verwal tungsaufwand und können zeitlich voneinander variieren. Der Verwaltungsaufwand umfasst die Aktivitäten, die beim Unter brechen der Abarbeitung der Aufgaben in den Programmen erfor derlich sind. Die Aktivitäten können beispielsweise im Über geben und Sichern von Zwischenergebnissen der unterbrochenen Aufgaben liegen - andernfalls müssen die Aufgaben der Pro- gramme wieder von Neuem abgearbeitet werden. Folglich kann der Rechendurchsatz bei einem hohen Verwaltungsaufwand sin ken, da während der Unterbrechungsdauer der Programme in der Regel keine Berechnungen durchgeführt werden. Ebenso kann die Rechenzeit der Programme einen Einfluss auf den Rechendurch satz nehmen, da Programme mit kurzer Programmzyklus-Zeit ge gebenenfalls ohne Parallelisierung schneller rein sequentiell ausgeführt werden können, als auf den parallel arbeitenden Prozessorkernen. Denn die Programme auf den parallel arbei tenden Prozessorkernen können unter Umständen durch höher priorisierte andere Programme unterbrochen werden, wodurch sich die Gesamtausführungszeit der Programme verlängern kann. Werden die Prozessorkerne nicht vollständig ausgelastet, z.B. indem die Programme sequentiell ausgeführt werden, statt pa rallel von den dafür vorgesehenen Prozessorkernen, so ist es möglich, dass die Rechenleistung der für die Parallelisierung vorgesehenen Prozessorkerne nicht vollständig ausgenutzt wird. Dies kann den Rechendurchsatz der Steuerungsaufgabe ebenfalls reduzieren.

Die Aufgabe der vorliegenden Erfindung besteht darin ein Ver fahren zum Optimieren einer Datenverarbeitung anzugeben, das die vorhandenen Ressourcen bestmöglich nutzt. Es ist weiter hin Aufgabe der Erfindung, eine verbesserte speicherprogram mierbare Steuerung anzugeben.

Diese Aufgabe wird durch die Merkmale der unabhängigen An sprüche gelöst. Weitere vorteilhafte Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen angegeben.

Erfindungsgemäß wird ein Verfahren zum Optimieren einer Da tenverarbeitung auf einer speicherprogrammierbaren Steuerung (SPS) vorgeschlagen, wobei die SPS wenigstens einen Parallel prozessorkern umfasst. Die SPS weist ferner eine Steuerungs aufgabe auf, die mehrere ausführbare Programme umfasst. We nigstens zwei Programme der Steuerungsaufgabe weisen jeweils wenigstens einen parallelen Bearbeitungsabschnitt mit einem Arbeitspaket auf, und das Arbeitspaket umfasst mehrere Teil aufgaben. Den parallelen Bearbeitungsabschnitten in den je weiligen Programmen ist eine Priorität mit einer vorgegebenen Prioritätsstufe zugewiesen, wobei die jeweiligen Prioritäts stufen in eine Datenstruktur eingefügt werden, sobald ein Ausführen des Programms an dem parallelen Bearbeitungsab schnitt angelangt ist. Der wenigstens eine Parallelprozessor kern prüft, ob in der Datenstruktur Einträge vorhanden sind und sofern Einträge vorhanden sind, arbeitet der wenigstens eine Parallelprozessorkern Teilaufgaben aus dem Arbeitspaket des Programms ab, dessen Prioritätsstufe an erster Stelle der Einträge in der Datenstruktur steht. Während eines Programm zyklus wird ein zu erwartender Rechendurchsatz der Steue rungsaufgabe laufend bewertet und wenigstens eine der Priori tätsstufen der parallelen Bearbeitungsabschnitte der jeweili gen Programme dynamisch angepasst, wenn sich der Rechendurch satz der Steuerungsaufgabe dadurch erhöht.

Ein Parallelprozessorkern bezeichnet einen Prozessorkern der SPS, der für die parallele Abarbeitung von Teilaufgaben vor gesehen ist. Zusätzlich kann die SPS weitere Prozessorkerne, sogenannte Hauptprozessorkerne, aufweisen. Die Hauptpro zessorkerne können jeweils ein oder mehrere Programme der Steuerungsaufgabe ausführen. Die mehreren Programme der Steu erungsaufgabe können Programme aufweisen, die rein sequenti ell ausgeführt werden, wobei wenigstens zwei Programme der Steuerungsaufgabe wenigstens einen parallelen Bearbeitungsab schnitt umfassen. Diese parallelen Bearbeitungsabschnitte der Programme können mit der Unterstützung der Parallelprozessor kerne ausgeführt werden.

Der Rechendurchsatz der Steuerungsaufgabe kann über die zeit liche Unterbrechungsdauer und die Anzahl der Unterbrechungen der parallelen Bearbeitungsabschnitte der Programme bewertet werden. Denn während der Unterbrechungsdauer der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsabschnitte der Programme werden keine Berechnungen durchgeführt, sondern Zwischenergebnisse übergeben und gesichert, die Einträge der Prioritätsstufen in der Datenstruktur werden neu sortiert, der wenigstens eine Parallelprozessorkern muss vor der Abar beitung der Teilaufgaben des Arbeitspakets eines weiteren Programms mit parallelem Bearbeitungsabschnitt erst nach freien Teilaufgaben für die Abarbeitung anfragen oder bei der Wiederaufnahme der Abarbeitung der unterbrochenen Teilaufga ben zunächst auf den Zwischenergebnisspeicher zugreifen, um die bereits berechneten Zwischenergebnisse als Ausgangspunkt für die weitere Abarbeitung der unterbrochenen Teilaufgaben nutzen zu können. Insofern wirken sich die zeitliche Unter brechungsdauer, sowie die Anzahl der Unterbrechungen der Pro gramme mit parallelen Bearbeitungsabschnitten auf den Rechen durchsatz der Steuerungsaufgabe aus, da sie die Gesamtausfüh rungszeit der Programme verlängern. Demnach könnte ein maxi maler Rechendurchsatz der Steuerungsaufgabe ohne Unterbre chungen der Programme mit parallelen Bearbeitungsabschnitten erzielt werden.

Die Anzahl der Unterbrechungen der Programme mit parallelen Bearbeitungsabschnitten kann mithilfe der dynamischen Anpas sung des Werts der wenigstens einen Prioritätsstufe des pa rallelen Bearbeitungsabschnitts der Programme reduziert wer den, da der Wert der wenigstens einen Prioritätsstufe gezielt an die jeweilige Situation angepasst werden kann, um den Ver waltungsaufwand der Steuerungsaufgabe zu reduzieren. Werden Teilaufgaben eines Arbeitspakets gerade parallel ausgeführt und von anderen Teilaufgaben eines weiteren Arbeitspakets mit höherer Prioritätsstufe des entsprechenden parallelen Bear beitungsabschnitts des jeweiligen Programms unterbrochen, so kann der Wert der wenigstens einen Prioritätsstufe der Teil aufgaben direkt innerhalb des Programmzyklus verändert wer den, um eine weitere Unterbrechung der Teilaufgaben der ent sprechenden parallelen Bearbeitungsabschnitte und zusätzli chen Verwaltungsaufwand zu vermeiden. Die Anpassung des Werts der wenigstens einen Prioritätsstufe kann ebenso für einen neuen Programmzyklus erfolgen, in dem das jeweilige Programm wieder von Anfang an ausgeführt wird.

Damit der Wert der wenigstens einen Prioritätsstufe nicht für jeden Programmzyklus verringert wird, kann über eine zusätz liche Bedingung, zum Beispiel in der Form, dass der Wert der wenigstens einen Prioritätsstufe für den neuen Programmzyklus mindestens dem halben Wert der vorgegebenen wenigstens einen Prioritätsstufe entsprechen muss, sichergestellt werden, dass der Wert der wenigstens einen Prioritätsstufe der Programme nicht ungewollt auf einen minimalen Wert gesetzt wird. Denn der minimale Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme bedeutet, dass das jeweilige Programm sequentiell auf dem entsprechen den Hauptprozessorkern ausgeführt wird. Auf diese Weise kann die Rechenleistung des wenigstens einen Parallelprozessor kerns gegebenenfalls nicht vollständig ausgenutzt sein, wobei die nicht genutzte Rechenleistung den Rechendurchsatz der Steuerungsaufgabe reduziert. Demnach kann die Auslastung der Prozessorkerne vorteilhaft über die genannte zusätzliche Be dingung der Untergrenze für die Anpassung des Werts der we nigstens einen Prioritätsstufe des parallelen Bearbeitungsab schnitts der Programme berücksichtigt werden.

Des Weiteren kann der Rechendurchsatz der Steuerungsaufgabe mithilfe der Rechenzeit der parallelen Bearbeitungsabschnitte bewertet werden. Programme mit Teilaufgaben, die eine kurze Programmzyklus-Zeit aufweisen, beispielsweise 1 ms, können zwar durchaus in dem parallelen Bearbeitungsabschnitt des Programms auf den wenigstens einen Parallelprozessorkern zur parallelen Abarbeitung der Teilaufgaben verteilt werden. Dies kann gegebenenfalls aber dazu führen, dass der parallele Be arbeitungsabschnitt des Programms mit den jeweiligen Teilauf gaben für einen anderen parallelen Bearbeitungsabschnitt mit höherer Prioritätsstufe unterbrochen wird. In dem erläuterten Beispiel kann die Parallelisierung des Programms mit kurzer Programmzyklus-Zeit dazu führen, dass der Verwaltungsaufwand erhöht wird und die Rechenzeit für den parallelen Bearbei tungsabschnitt dadurch ansteigt. Die gesamte Ausführungszeit des Programms kann aufgrund der Parallelisierung langsamer sein, als für den Fall, in dem das Programm rein sequentiell und unterbrechungsfrei ausgeführt wird. Da die sequentielle Rechenzeit des Programms mit kurzer Programmzyklus-Zeit gege benenfalls kürzer sein kann, als die Rechenzeit des paralle len Bearbeitungsabschnitts, ist es vorteilhaft, die jeweilige benötigte Rechenzeit für die Ausführung des Programms bei der Bewertung des Rechendurchsatzes (neben der zeitlichen Dauer und der Anzahl der Unterbrechungen der parallelen Bearbei tungsabschnitte sowie der Auslastung der Prozessorkerne) mit zu berücksichtigen, um den Rechendurchsatz der Steuerungsauf gabe zu verbessern.

Die dynamische Anpassung des Werts der wenigstens einen Prio ritätsstufe des parallelen Bearbeitungsabschnitts der Pro gramme erfolgt während der Programmlaufzeit, wenn der Rechen durchsatz der Steuerungsaufgabe dadurch erhöht werden kann. Ohne die dynamische Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts in den entsprechenden Programmen, kann es sonst passieren, dass die gesamte Ausführungszeit der jeweiligen Programme aufgrund der Unterbrechungsdauer und des damit verbundenen zusätzlichen Verwaltungsaufwands steigt und die Programme der Steuerungs aufgabe insgesamt langsamer sind, als für den Fall, in dem die Aufgaben der Programme ohne Unterbrechung rein sequenti ell in den zugeordneten Programmen abgearbeitet werden.

Neben der dynamischen Anpassung des Werts der wenigstens ei nen Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme während der Programmlaufzeit, ist es ferner denk bar, den bestmöglichen Wert der wenigstens einen Prioritäts stufe der parallelen Bearbeitungsabschnitte der Programme mithilfe einer Simulation vor dem Programmstart der Steue rungsaufgabe der SPS zu ermitteln. Der auf diese Weise erhal tene optimale Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme kann als Startwert für die Programmausführung genutzt werden, wenn sich mehrere Programme der Steuerungsaufgabe der SPS einen Hauptprozessorkern teilen bzw. auch für den Fall, dass auf einem Hauptprozessorkern jeweils nur ein Programm ausgeführt wird .

In einer weiteren Ausführungsform erfolgt die Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbeitungs abschnitte der jeweiligen Programme bei einer Unterbrechung der Abarbeitung der Teilaufgaben des Programms. Der Rechen durchsatz der Steuerungsaufgabe ist von der zeitlichen Unter brechungsdauer der Abarbeitung der Teilaufgaben abhängig, da in dieser Zeit keine Teilaufgaben der parallelen Bearbei tungsabschnitte der Programme abgearbeitet werden, sondern Zwischenergebnisse der Berechnungen der Teilaufgaben gegebe nenfalls übergeben und gesichert werden. Zudem kann sich jede Unterbrechung zeitlich unterscheiden. Die Unterbrechungsdauer kann folglich die Gesamtausführungszeit der Programme verlän gern, da die zeitliche Unterbrechungsdauer zusätzlich zur Re chenzeit der Programme berücksichtigt werden muss. Es ist ferner ersichtlich, dass häufige Unterbrechungen der Abarbei tung der Teilaufgaben der parallelen Bearbeitungsabschnitte zu einer Verminderung des Rechendurchsatzes führen, da mit der Häufigkeit der Unterbrechungen der Berechnungen auch der Verwaltungsaufwand durch das vermehrte Übergeben und Sichern der Zwischenergebnisse der Berechnungen der Teilaufgaben steigt. Daher sollen die Anzahl und die Dauer der Unterbre chungen möglichst gering gehalten werden, um auf diese Weise einen hohen Rechendurchsatz der Steuerungsaufgabe erzielen zu können. Dies kann mithilfe der dynamischen Anpassung der we nigstens einen Prioritätsstufe der parallelen Bearbeitungsab schnitte der Programme bei der Unterbrechung der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsabschnitte der Programme umgesetzt werden. Eine weitere Ausführungsform sieht vor, dass die Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbei tungsabschnitte der jeweiligen Programme erfolgt, wenn die Teilaufgaben des Programms aufgrund von anderen Teilaufgaben eines weiteren Programms mit höherer Prioritätsstufe des pa rallelen Bearbeitungsabschnitts auf dem wenigstens einen Pa rallelprozessorkern unterbrochen werden. Werden die Teilauf gaben eines Arbeitspakets aufgrund von anderen Teilaufgaben eines weiteren Arbeitspakets, das mit einem höheren Wert der Prioritätsstufe des parallelen Bearbeitungsabschnitts im zu geordneten Programm verknüpft ist, auf dem wenigstens einen Parallelprozessorkern unterbrochen, so kann der Wert der we nigstens einen Prioritätsstufe der unterbrochenen Teilaufga ben direkt innerhalb des Programmzyklus verändert werden, um möglichst wenig Verwaltungsaufwand für die noch ausstehenden Teilaufgaben zu erzeugen.

Darüber hinaus, ist es ebenfalls möglich, den Wert der we nigstens einen Prioritätsstufe der unterbrochenen Teilaufga ben des parallelen Bearbeitungsabschnitts des jeweiligen Pro gramms für den nächsten Programmzyklus entsprechend anzupas sen, wie oben bereits beschrieben wurde. Auch kann mit der oben genannten, zusätzlichen Bedingung für den Startwert der wenigstens einen Prioritätsstufe, für den nächsten Programm zyklus sichergestellt werden, dass der Wert der wenigstens einen Prioritätsstufe nicht ungewollt unterhalb einer Unter grenze sinkt.

Der Rechendurchsatz der Steuerungsaufgabe ergibt sich aus der Dauer und der Anzahl der Unterbrechungen der Programme mit Aufgaben, also dem Verwaltungsaufwand. Der Rechendurchsatz kann erhöht werden, indem der Verwaltungsaufwand, das heißt die Anzahl der Unterbrechungen der Programme reduziert wird. Weiterhin ist es möglich den Rechendurchsatz zu erhöhen, in dem die Rechenzeit der jeweiligen Programme berücksichtigt wird. Kann ein Programm mit Teilaufgaben mit kurzer Programm zyklus-Zeit rein sequentiell schneller, das heißt mit kürze- rer sequentieller Rechenzeit unterbrechungsfrei ausgeführt werden, als dies im parallelen Bearbeitungsabschnitt des Pro gramms gegebenenfalls mit Unterbrechungen möglich ist, so kann der Rechendurchsatz der Steuerungsaufgabe durch eine Be rücksichtigung der entsprechenden Rechenzeit im Programm ebenfalls erhöht werden. Auch kann der Rechendurchsatz der Steuerungsaufgabe erhöht werden, indem die Rechenleistung des wenigstens einen Parallelprozessorkerns vollständig ausge nutzt und dafür gesorgt wird, dass parallel abzuarbeitende Teilaufgaben des parallelen Bearbeitungsabschnitts des jewei ligen Programms von dem wenigstens einen Parallelprozessor kern abgearbeitet werden, wobei sequentiell auszuführende Programme auf dem jeweiligen Hauptprozessorkern ausgeführt werden. Ein erhöhter Rechendurchsatz kann ferner dazu beitra gen, dass die Gesamtausführungszeit der Programme und Teil aufgaben reduziert wird, da die Steuerungsaufgabe auf diese Weise mehr Rechenzeit erhält.

In einer weiteren Ausführungsform wird bei der Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbeitungs abschnitte der jeweiligen Programme eine zusätzliche Bedin gung, insbesondere eine Echtzeitbedingung der Steuerungsauf gabe, berücksichtigt. Die dynamische Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungs abschnitts der jeweiligen Programme während der Programmlauf zeit kann weiterhin eine Echtzeitfähigkeit des Automatisie rungssystems garantieren. Die Deadlines der Programme können durch die Anpassung des Werts der Prioritätsstufe in jedem Fall eingehalten werden. Für die Anpassung der wenigstens ei nen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme kann neben der Echtzeitbedingung noch die oben ge nannte mögliche Bedingung der Untergrenze für den Wert der wenigstens einen Prioritätsstufe berücksichtigt werden.

In einer weiteren Ausführungsform wird die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der je weiligen Programme um einen Faktor reduziert, wenn die Teil- aufgaben des Programms aufgrund von anderen Teilaufgaben ei nes weiteren Programms mit höherer Prioritätsstufe des paral lelen Bearbeitungsabschnitts auf dem wenigstens einen Paral lelprozessorkern unterbrochen werden. Eine Reduktion des Werts der wenigstens einen Prioritätsstufe der parallelen Be arbeitungsabschnitte der jeweiligen Programme um einen Faktor kann dazu beitragen, dass der Verwaltungsaufwand reduziert wird. Denn der Wert der wenigstens einen Prioritätsstufe des jeweiligen parallelen Bearbeitungsabschnitts im entsprechen den Programm, der mit den Teilaufgaben verbunden ist, die un terbrochen worden sind, kann zur Vermeidung einer weiteren Unterbrechung der parallelen Bearbeitungsabschnitte mit den Teilaufgaben direkt innerhalb des Programmzyklus herabgesetzt werden. Bei der Unterbrechung der Berechnungen der Teilaufga ben in den parallelen Bearbeitungsabschnitten der Programme kann es zudem V orkommen, dass aktuelle Zwischenergebnisse übergeben und Daten gesichert werden müssen. Häufige Unter brechungen der Teilaufgaben können daher einen enormen Auf wand erzeugen, den es zu minimieren gilt. Die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Be arbeitungsabschnitts des jeweiligen Programms erfolgt stets unter der Bedingung, dass die Echtzeitfähigkeit des Automati sierungssystems gewährleistet werden kann, das heißt, dass die Verarbeitung der Eingabedaten spätestens zu dem Zeitpunkt beendet sein muss, zu dem die Ausgabedaten für die Aktoren benötigt werden. Folglich muss garantiert werden können, dass die Deadlines der Programme trotz einer Reduktion des Werts der wenigstens einen Prioritätsstufe der parallelen Bearbei tungsabschnitte der entsprechenden Programme weiterhin einge halten werden können.

Des Weiteren kann der Wert der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts des Programms der unterbrochenen Teilaufgaben unmittelbar nach der Unterbre chung der Abarbeitung der Teilaufgaben erhöht werden. Die Er höhung des Werts der wenigstens einen Prioritätsstufe des pa rallelen Bearbeitungsabschnitts der Programme kann dazu bei- tragen, dass die zugeordneten Teilaufgaben nicht mehr von dem anderen parallelen Bearbeitungsabschnitt des weiteren Pro gramms unterbrochen werden. Neben der dynamischen Anpassung des Werts der wenigstens einen Prioritätsstufe der unterbro chenen Teilaufgaben der parallelen Bearbeitungsabschnitte der Programme ist es weiterhin denkbar, den Wert der Prioritäts stufe des Programms anzupassen, dass die Unterbrechung der Abarbeitung der Teilaufgaben des parallelen Bearbeitungsab schnitts des anderen Programms verursacht hat. So kann ver mieden werden, dass die aktuell abgearbeiteten Teilaufgaben des parallelen Bearbeitungsabschnitts des einen Programms nicht erneut von dem anderen parallelen Bearbeitungsabschnitt des anderen Programms unterbrochen werden.

Alternativ zur Reduktion der Dauer und der Anzahl der Unter brechungen des parallelen Bearbeitungsabschnitts in dem je weiligen Programm durch die Anpassung des Werts der wenigs tens einen Prioritätsstufe des parallelen Bearbeitungsab schnitts ist es ferner denkbar, die Rechenzeit des parallelen Bearbeitungsabschnitts des jeweiligen Programms bei der Be wertung des Rechendurchsatzes mit zu berücksichtigen. Das heißt es kann individuell entschieden werden, ob der Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungs abschnitts des jeweiligen Programms angepasst und/oder die Teilaufgaben des Programms gegebenenfalls rein sequentiell abgearbeitet werden sollen, falls die sequentielle Rechenzeit für die Teilaufgaben des jeweiligen Programms kürzer ist, als die Rechenzeit des parallelen Bearbeitungsabschnitts des je weiligen Programms. Dies gilt für die nachfolgenden Ausfüh rungsformen in gleicher Weise, daher wird diese alternative Möglichkeit für die nachfolgenden Ausführungsformen nicht mehr wiederholt.

Eine weitere Ausführungsform sieht vor, dass die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme auf einen minimalen Wert gesetzt wird, wenn die Teilaufgaben der Programme sequentiell in den entsprechenden Programmen ausführbar sind. Im Extremfall ist es möglich, den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der mehreren Programme der Steuerungsaufgabe auf einen minimalen Wert zu setzen. Insbe sondere ist diese Ausgestaltung denkbar, wenn die Teilaufga ben keine zwingende parallele Ausführung erfordern, sondern ebenfalls sequentiell in dem zugeordneten Programm abgearbei tet werden können.

In einer weiteren Ausführungsform wird die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der je weiligen Programme zu Beginn eines neuen Programmzyklus auf den vorgegebenen Wert zurückgesetzt. Von Vorteil bei der An passung des Werts der Prioritätsstufe der parallelen Bearbei tungsabschnitte der jeweiligen Programme ist, dass diese vo rübergehend erfolgen kann. Die dynamische Anpassung des Werts der wenigstens einen Prioritätsstufe kann direkt innerhalb der Programmlaufzeit erfolgen und muss nicht für die gesamte Laufzeit des Programms in gleicher Weise stattfinden. Der Wert der Prioritätsstufe kann beispielsweise für einen neuen Programmzyklus wieder auf den vorgegebenen Wert zurückgesetzt werden und kann während des Programmzyklus und/oder für einen weiteren Programmzyklus erneut abgeändert werden.

Eine weitere Ausführungsform sieht vor, dass die wenigstens eine Prioritätsstufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme zu Beginn eines neuen Programmzyklus erhöht wird, wenn die Teilaufgaben vorher sequentiell in den zugeordneten Programmen ausgeführt wurden. Statt der Redukti on des Werts der wenigstens einen Prioritätsstufe der paral lelen Bearbeitungsabschnitte der jeweiligen Programme kann der Wert der wenigstens einen Prioritätsstufe auch erhöht werden. Beispielsweise kann die Anpassung des Werts der we nigstens einen Prioritätsstufe zu Beginn des neuen Programm zyklus erfolgen. Diese Ausgestaltung ist denkbar, wenn die Teilaufgaben mit entsprechender Prioritätsstufe in einem vor herigen Programmzyklus rein sequentiell in dem zugeordneten Programm abgearbeitet wurden. Mithilfe dieser Ausgestaltung kann vermieden werden, dass zu viele Programme der Steue rungsaufgabe irgendwann einen minimalen Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme haben und die Programme rein sequentiell ausge führt werden. Werden die Programme rein sequentiell auf den Hauptprozessorkernen ausgeführt, kann dies gegebenenfalls zur Folge haben, dass die verfügbare Rechenleistung der Parallel prozessorkerne nicht mehr vollständig ausgenutzt wird, was dann in einem verminderten gesamten Rechendurchsatz der Steu erungsaufgabe resultiert.

Erfindungsgemäß wird des Weiteren eine speicherprogrammierba re Steuerung (SPS) vorgeschlagen. Die SPS umfasst eine Kommu nikationsschnittstelle, zum Einlesen von Sensordaten und zum Ausgeben von Aktordaten. Ferner umfasst die SPS eine Daten verarbeitungseinrichtung, die wenigstens einen Parallelpro zessorkern zum Ausführen einer Steuerungsaufgabe umfasst, um aus den Sensordaten Aktordaten zu erzeugen, sowie eine Steue rungseinrichtung, die einen Datenstrukturspeicher zum Spei chern einer Datenstruktur mit Prioritätsstufen und einen Pri oritätenverwalter zum Verwalten der Prioritätsstufen in der Datenstruktur aufweist. Die Steuerungseinrichtung umfasst ei nen Zwischenergebnisspeicher, auf dem Zwischenergebnisse von Berechnungen gesichert werden. Die Steuerungsaufgabe umfasst weiterhin mehrere ausführbare Programme, wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils wenigstens einen parallelen Bearbeitungsabschnitt mit einem Arbeitspaket auf weisen, und das Arbeitspaket mehrere Teilaufgaben umfasst.

Den parallelen Bearbeitungsabschnitten in den jeweiligen Pro grammen ist eine Priorität mit der vorgegebenen Prioritäts stufe zugewiesen. Der Prioritätenverwalter ist ausgebildet, die jeweiligen Prioritätsstufen in die Datenstruktur im Da tenstrukturspeicher einzufügen, sobald ein Ausführen des Pro gramms an dem parallelen Bearbeitungsabschnitt angelangt ist und dabei den Eintrag mit der höchsten Prioritätsstufe an die erste Stelle der Einträge in der Datenstruktur zu setzen. Der wenigstens eine Parallelprozessorkern ist ausgebildet, die Datenstruktur im Datenstrukturspeicher auf Einträge der Prio ritätsstufen zu prüfen, und sofern Einträge vorhanden sind, Teilaufgaben aus dem Arbeitspaket des entsprechenden Pro gramms abzuarbeiten, dessen Prioritätsstufe an erster Stelle der Einträge in der Datenstruktur steht. Die Steuerungsein richtung ist ausgebildet, während eines Programmzyklus einen zu erwartenden Rechendurchsatz der Steuerungsaufgabe laufend zu bewerten. Ferner ist der Prioritätenverwalter ausgelegt, wenigstens eine der Prioritätsstufen der parallelen Bearbei tungsabschnitte der jeweiligen Programme dynamisch anzupas sen, wenn sich der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht.

Speicherprogrammierbare Steuerungen bilden häufig die Grund lage eines Automatisierungssystems und verfügen derzeit über komplexe Rechen- und Regelfunktionen, die eine leistungsstar ke Hardware und effiziente Software zur Umsetzung erfordern. Die hohe Rechenleistung kann dabei auf der gleichzeitigen Nutzung von mehreren Prozessorkernen basieren, um das System effizient zu betreiben und die vorhandenen Ressourcen best möglich auszulasten. Die so konzipierte SPS ermöglicht die Deadlines der Programme einzuhalten und kann ferner die Echt- zeitdatenverarbeitung gewähren. Das Verfahren zur Optimierung der Datenverarbeitung auf einer SPS kann eine solche effizi ente Software für die SPS darstellen, um die Rechenleistung der vorhandenen Prozessorkerne bestmöglich auszunutzen, in dem die Programme der Steuerungsaufgabe auf mehrere Pro zessorkerne verteilt ausgeführt werden können. Werden die Programme parallelisiert auf dem wenigstens einen Parallel prozessorkern ausgeführt, so kann es aufgrund der den jewei ligen parallelen Bearbeitungsabschnitten der Programme zuge ordneten Prioritätsstufen V orkommen, dass die Programme von anderen Programmen mit höherer Prioritätsstufe des parallelen Bearbeitungsabschnitts unterbrochen werden. Unterbrechungen der Programme der Steuerungsaufgabe der SPS sind in der Regel nicht gewünscht, da sie den Rechendurchsatz der Steuerungs- aufgabe reduzieren. Sie verlängern zudem die Gesamtausfüh- rungszeit der Programme, da sich die zeitliche Unterbre chungsdauer der Programme additiv auf die reine Rechenzeit der Programme auswirkt. Insofern ist es günstig, den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungs abschnitts des Programms vom Prioritätenverwalter der Steue rungseinrichtung der SPS dynamisch während des Programmzyklus bei einer Unterbrechung des Programms mit parallelem Bearbei tungsabschnitts anpassen zu können. Dabei dient die Steue rungseinrichtung der SPS zur Ermittlung und Bewertung des zu erwartenden Rechendurchsatzes der Steuerungsaufgabe. Die Steuerungseinrichtung kann den Prioritätenverwalter der SPS zudem zur Anpassung des Werts der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des jeweili gen Programms anstoßen, wenn sich der Rechendurchsatz durch die mögliche Anpassung des Werts der wenigstens einen Priori tätsstufe der parallelen Bearbeitungsabschnitte der Programme auf diese Weise erhöht. Gegebenenfalls kann die Steuerungs einrichtung der SPS bei einer kurzen Programmzyklus-Zeit ent scheiden, dass die Teilaufgaben des Programms rein sequenti ell ausgeführt werden sollen, statt in dem parallelen Bear beitungsabschnitt des Programms, der unter Umständen mit Un terbrechungen der Berechnungen der Teilaufgaben verbunden sein kann. Es kann andernfalls möglich sein, dass die gesamte Ausführungszeit des Programms durch die Parallelisierung langsamer ist, als für den Fall, in dem die Teilaufgaben des Programms ohne Unterbrechung sequentiell abgearbeitet werden.

Zudem kann die Steuerungseinrichtung bei der Bewertung des Rechendurchsatzes die Ausnutzung der Rechenleistung des we nigstens einen Parallelprozessorkerns mit berücksichtigen und dafür sorgen, dass parallel auszuführende Programme, die nicht sequentiell auf dem jeweiligen Hauptprozessorkern aus geführt werden sollen, von dem wenigstens einen Parallelpro zessorkern ausgeführt werden. Die Steuerungseinrichtung der SPS teilt dem Prioritätenverwalter dazu mit, dass er den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbei- tungsabschnitte der Programme dahingehend anpassen soll, bei spielsweise erhöhen falls er vorher minimal war.

Die speicherprogrammierbare Steuerung mit dem Verfahren zum Optimieren einer Datenverarbeitung ist flexibel und univer sell für die verschiedensten Aufgaben des Automatisierungs systems einsetzbar. Beispielsweise kann die SPS aus den Sens ordaten Daten erzeugen, die für die Qualitätssicherung/- kontrolle des Automatisierungssystems relevant sein können. Ist der Sensor zum Beispiel in Form einer Kamera verwirk licht, so kann mithilfe dieser Kamera die Qualität von herge stellten Bauteilen bewertet werden. In diesem Fall erzeugt die SPS dann keine Aktordaten als Ergebnisse, sondern bewer tet die Qualität der Bauteile beispielsweise als fehlerhaft oder als gut. Ferner kann die SPS mit dem Verfahren zum Opti mieren einer Datenverarbeitung in einem Transportsystem umge setzt werden, in dem es erforderlich ist, Transportelemente auf modularen Führungsschienen mit Motormodulen ansteuern und positionieren zu können. Da die Transportelemente individuell positioniert werden können, ist es möglich die Berechnungen für die Transportelemente zu parallelisieren und auf mehrere Prozessorkerne verteilt auszuführen. Die SPS mit dem oben ge nannten Verfahren kann dabei zu einer effizienten Nutzung der Rechenleistung der Prozessorkerne beitragen, mithilfe der Be rechnungen eine hohe Zuverlässigkeit für die Positionierung der Transportelemente bereitstellen und verursacht, durch die flexible Nutzungsmöglichkeit der SPS, geringe Kosten in der Umsetzung .

In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgebildet, die Anpassung der wenigstens einen Priori tätsstufe der parallelen Bearbeitungsabschnitte der jeweili gen Programme bei einer Unterbrechung der Abarbeitung der Teilaufgaben des Programms vorzunehmen. Der Prioritätenver walter kann den Wert der wenigstens einen Prioritätsstufe di rekt bei der Unterbrechung der Abarbeitung der Teilaufgaben des Programms innerhalb des Programmzyklus anpassen, um eine weitere Unterbrechung des Programms für die noch ausstehenden Teilaufgaben zu vermeiden. Gleichermaßen ist der Prioritäten verwalter in der Lage den Wert der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des Programms für den nächsten Programmzyklus anzupassen.

In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgelegt, die Anpassung der wenigstens einen Prioritäts stufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme vorzunehmen, wenn die Teilaufgaben aufgrund von an deren Teilaufgaben eines weiteren Programms mit höherer Prio ritätsstufe auf dem wenigstens einen Parallelprozessorkern unterbrochen werden. Der Prioritätenverwalter kann den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des entsprechenden Programms für die unter brochenen Teilaufgaben auf dem wenigstens einen Parallelpro zessorkern anpassen, um einer weiteren Unterbrechung der Teilaufgaben auf dem wenigstens einen Parallelprozessorkern vorzubeugen und in diesem Zusammenhang für möglichst wenig Verwaltungsaufwand für die noch ausstehenden Teilaufgaben zu sorgen. Denn bei jeder Unterbrechung der Teilaufgaben müssen die vom wenigstens einen Parallelprozessorkern berechneten Zwischenergebnisse übergeben und auf dem Zwischenergeb nisspeicher gesichert werden. Bei jeder Unterbrechung sor tiert der Prioritätenverwalter zudem die Einträge der Priori tätsstufen in der Datenstruktur neu. Bei jeder Wiederaufnahme der unterbrochenen Teilaufgaben muss der wenigstens eine Pa rallelprozessorkern erneut auf den Zwischenergebnisspeicher zugreifen und die gesicherten Zwischenergebnisse als Aus gangspunkt für die weitere Abarbeitung der Teilaufgaben nut zen. Aus diesem Grund sollen die Teilaufgaben möglichst sel ten unterbrochen werden, um einen höheren Rechendurchsatz der Steuerungsaufgabe zu erzeugen und die gesamte Ausführungszeit der Programme und Teilaufgaben auf diese Weise zu reduzieren.

Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, bei der Anpassung der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der jeweiligen Programme eine zusätzliche Bedingung, insbe sondere eine Echtzeitbedingung der Steuerungsaufgabe, zu be rücksichtigen. Der Prioritätenverwalter gestaltet die Koordi nation sowie die dynamische Anpassung der Werte der Einträge der Prioritätsstufen in der Datenstruktur und die Kommunika tion mit dem wenigstens einen Parallelprozessorkern einfach. Ferner kann mithilfe des Prioritätenverwalters die Echtzeit fähigkeit des Automatisierungssystems gewährleistet werden, da der Prioritätenverwalter die Anpassung der Werte der Prio ritätsstufen der jeweiligen parallelen Bearbeitungsabschnitte der entsprechenden Programme in der Weise vornimmt, dass die Deadlines der Programme in jedem Fall eingehalten werden. Der Prioritätenverwalter passt den Wert von wenigstens einer Pri oritätsstufe an, wenn sich der Rechendurchsatz der Steue rungsaufgabe dadurch erhöht. Die Steuerungseinrichtung kann in diesem Zusammenhang den Rechendurchsatz der Steuerungsauf gabe während eines Programmzyklus laufend bewerten und den Prioritätenverwalter anhand der Bewertung des Rechendurchsat zes zur Anpassung des Werts der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts im jeweiligen Programm anstoßen.

Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, den Wert der wenigstens einen Pri oritätsstufe der parallelen Bearbeitungsabschnitte der jewei ligen Programme um einen Faktor zu reduzieren, wenn die Teil aufgaben des Programms aufgrund von anderen Teilaufgaben ei nes weiteren Programms mit höherer Prioritätsstufe auf dem wenigstens einen Parallelprozessorkern unterbrochen werden. Der Prioritätenverwalter kann dazu ausgelegt sein, den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des jeweiligen Programms um einen Faktor zu reduzieren. Beispielsweise kann der Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des je weiligen Programms bei jeder Unterbrechung der Teilaufgaben des entsprechenden Programms direkt während des Programmzyk- lus um die Hälfte reduziert werden. Alternativ dazu ist eben so eine Anpassung des Werts der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts des jeweiligen Programms um einen geringeren Faktor denkbar. Ferner kann die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des entsprechenden Pro gramms für jeden Programmzyklus auf andere Weise erfolgen. Beispielsweise muss der angepasste Wert der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des je weiligen Programms nicht für jeden Programmzyklus beibehalten werden. Der Prioritätenverwalter kann die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des entsprechenden Programms nach der Bewer tung des Rechendurchsatzes der durch die Steuerungseinrich tung erfolgt, vornehmen. Da die Steuerungseinrichtung den Re chendurchsatz während eines Programmzyklus laufend bewertet, kann der Prioritätenverwalter den Wert der Prioritätsstufe innerhalb eines jeden Programmzyklus und für jeden neuen Pro grammzyklus dynamisch anpassen.

In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgelegt, die wenigstens eine Prioritätsstufe der paral lelen Bearbeitungsabschnitte der jeweiligen Programme auf ei nen minimalen Wert zu setzen, wenn die Teilaufgaben der Pro gramme sequentiell in den entsprechenden Programmen ausführ bar sind. Der Prioritätenverwalter ist in der Lage den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des entsprechenden Programms auf einen mini malen Wert zu setzen. Setzt der Prioritätenverwalter den Wert der wenigstens einen Prioritätsstufe des parallelen Bearbei tungsabschnitts des jeweiligen Programms auf den geringsten möglichen Wert, so werden die zugehörigen Teilaufgaben in dem zugeordneten Programm sequentiell abgearbeitet. Denn der mi nimale Wert der Prioritätsstufe bedeutet, dass die Teilaufga ben keine zwingende parallele Abarbeitung erfordern um die Deadlines der Programme einhalten zu können, selbst dann nicht, wenn der wenigstens eine Parallelprozessorkern gerade keine anderen Teilaufgaben abarbeitet, sondern die Teilaufga ben können ebenso sequentiell vom zugeordneten Programm abge arbeitet werden. Diese Ausführungsform ist ebenfalls denkbar bei einer häufigen Unterbrechung der Berechnungen der Teil aufgaben in den parallelen Bearbeitungsabschnitten, da der Prioritätenverwalter den Wert der Prioritätsstufe des paral lelen Bearbeitungsabschnitts des Programms gleich soweit her absetzen kann, dass die Teilaufgaben nach der Unterbrechung der Berechnungen auf dem wenigstens einen Parallelprozessor kern anschließend in dem zugeordneten Programm weiter abgear beitet werden. Auf diese Weise ist es ferner möglich, den Verwaltungsaufwand zu reduzieren.

In der oben dargestellten Ausführungsform wird der Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungs abschnitte der Programme vom Prioritätenverwalter gezielt auf den minimalen Wert gesetzt, damit die Teilaufgaben der Pro gramme sequentiell im zugeordneten Programm abgearbeitet wer den, da sie keine zwingende Parallelisierung benötigen. Es kann jedoch möglich sein, dass der Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme direkt nach der Unterbrechung der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsabschnitte der Pro gramme während des Programmzyklus vom Prioritätenverwalter reduziert wurde. Unabhängig davon kann in einem solchen Fall eine weitere Reduktion des Werts der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts der Programme für einen neuen Programmzyklus von Vorteil sein, wenn die Ab arbeitung der Teilaufgaben der parallelen Bearbeitungsab schnitte der Programme im vorherigen Programmzyklus unterbro chen wurde. Damit der Wert der wenigstens einen Prioritäts stufe jedoch nicht für jeden Programmzyklus verringert wird, kann über eine zusätzliche Bedingung, die zum Beispiel in der Form implementiert sein kann, dass der Wert der wenigstens einen Prioritätsstufe für den neuen Programmzyklus mindestens dem halben Wert der vorgegebenen wenigstens einen Prioritäts stufe entspricht, sichergestellt werden, dass der Wert der wenigstens einen Prioritätsstufe der Programme nicht unge wollt auf den minimalen Wert gesetzt wird.

Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, die wenigstens eine Prioritätsstu fe der parallelen Bearbeitungsabschnitte der jeweiligen Pro gramme zu Beginn eines neuen Programmzyklus auf den vorgege benen Wert zurückzusetzen. Der Prioritätenverwalter kann, wie bereits oben erläutert, den Wert der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des entspre chenden Programms dynamisch mit jedem Programmzyklus anpas sen. In diesem Zusammenhang ist es demnach möglich, dass der Prioritätenverwalter den Wert der wenigstens einen Priori tätsstufe des parallelen Bearbeitungsabschnitts des jeweili gen Programms für den neuen Programmzyklus wieder auf den vorgegebenen Wert der Prioritätsstufe zurücksetzt. Die Anpas sung des Werts der wenigstens einen Prioritätsstufe des pa rallelen Bearbeitungsabschnitts des jeweiligen Programms durch den Prioritätenverwalter hat den Vorteil, dass sie vo rübergehend erfolgen und wieder rückgängig gemacht werden kann .

In einer weiteren Ausführungsform ist der Prioritätenverwal ter ausgelegt, die wenigstens eine Prioritätsstufe der paral lelen Bearbeitungsabschnitte der jeweiligen Programme zu Be ginn eines neuen Programmzyklus zu erhöhen, wenn die Teilauf gaben der Programme vorher sequentiell in den zugeordneten Programmen ausgeführt wurden. Der Prioritätenverwalter ist ebenso in der Lage den Wert der wenigstens einen Prioritäts stufe des parallelen Bearbeitungsabschnitts des jeweiligen Programms der Steuerungsaufgabe zu erhöhen, damit die zugehö rigen Teilaufgaben vor anderen Teilaufgaben eines anderen Ar beitspakets und Programms auf dem wenigstens einen Parallel prozessorkern abgearbeitet werden können. Diese Ausführungs form ist denkbar, wenn die Teilaufgaben vorher im zugeordne ten Programm sequentiell abgearbeitet worden sind. Mithilfe dieser Ausgestaltung kann vermieden werden, dass zu viele Programme der Steuerungsaufgabe irgendwann einen minimalen Wert der wenigstens einen Prioritätsstufe des parallelen Be arbeitungsabschnitts der Programme haben und die Programme rein sequentiell ausgeführt werden. Werden die Programme rein sequentiell auf den Hauptprozessorkernen ausgeführt, kann dies gegebenenfalls zur Folge haben, dass die verfügbare Re chenleistung der Parallelprozessorkerne nicht mehr vollstän dig ausgenutzt wird, was dann in einem verminderten gesamten Rechendurchsatz der Steuerungsaufgabe resultiert.

Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, den Eintrag der Prioritätsstufe in der Datenstruktur im Datenstrukturspeicher gemäß der vorge nommenen Anpassung der wenigstens einen Prioritätsstufe abzu ändern. Ferner ist der Prioritätenverwalter ausgebildet, den wenigstens einen Parallelprozessorkern über die Änderung des Eintrags der Prioritätsstufe in der Datenstruktur zu infor mieren. Der Prioritätenverwalter übernimmt einerseits die dy namische Anpassung des Werts der wenigstens einen Prioritäts stufe des entsprechenden parallelen Bearbeitungsabschnitts des jeweiligen Programms und kann andererseits weiterhin den wenigstens einen Parallelprozessorkern über die Anpassung des Werts der wenigstens einen Prioritätsstufe in der Datenstruk tur informieren.

Eine weitere Ausführungsform sieht vor, dass der Prioritäten verwalter ausgebildet ist, auf mehreren Programmen der Steue rungsaufgabe verteilt ausführbar zu sein. Der Prioritätenver walter, der Bestandteil der Steuerungseinrichtung ist, kann beispielsweise mehrere Module (beispielsweise Software- Module) umfassen, wobei die einzelnen Module (beispielsweise Software-Module) des Prioritätenverwalters in den mehreren Programmen der Steuerungsaufgabe ausgeführt werden können. Denkbar ist weiterhin, dass der Prioritätenverwalter nur ein einziges zentrales Modul (beispielsweise ein Software-Modul) aufweist, das in einem der mehreren Programme der Steuerungs aufgabe ausgeführt wird. Zudem ist denkbar, den Prioritäten- V erwalter als eigenständiges Programm zu verwirklichen oder als ein oder mehrere externe Hardware-Module .

Die vorstehend erläuterten und/oder in den Unteransprüchen wiedergegebenen vorteilhaften Aus- und Weiterbildungen der Erfindung können - außer zum Beispiel in Fällen eindeutiger Abhängigkeiten oder unvereinbarer Alternativen - einzeln oder aber auch in beliebiger Kombination miteinander zur Anwendung kommen .

Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung, sowie die Art und Weise, wie diese erreicht werden, werden klarer und deutlicher verständlich in Zusam menhang mit der folgenden Beschreibung von Ausführungsbei spielen, die im Zusammenhang mit den schematischen Zeichnun gen näher erläutert werden. Es zeigen:

Fig. 1 eine schematische Darstellung einer erfindungsgemäßen Ausführungsform eines Automatisierungssystems mit einer spei cherprogrammierbaren Steuerung (SPS) ;

Fig. 2 ein Schema zur Erstellung von Arbeitspaketen mit Teil aufgaben und Verwaltung von Prioritätsstufen innerhalb der SPS nach Fig. 1;

Fig. 3 ein Schema eines Verfahrens zum Optimieren einer Da tenverarbeitung auf der SPS nach den Fig. 1 und 2; und

Fig. 4 ein Ablaufdiagramm zur dynamischen Anpassung einer Prioritätsstufe eines parallelen Bearbeitungsabschnitts eines Programms nach Fig. 3.

Anhand der folgenden Figuren wird ein Ausführungsbeispiel ei nes Verfahrens zum Optimieren einer Datenverarbeitung auf ei ner speicherprogrammierbaren Steuerung (SPS) beschrieben. Es wird darauf hingewiesen, dass die Figuren lediglich schemati scher Natur und nicht maßstabsgetreu sind. In diesem Sinne können in den Figuren gezeigte Komponenten und Bauteile zum besseren Verständnis übertrieben groß oder verkleinert darge stellt sein. Ferner wird darauf hingewiesen, dass die Bezugs zeichen in den Figuren unverändert gewählt worden sind, wenn es sich um gleich ausgebildete Bauteile und/oder Komponenten und/oder Größen handelt.

Speicherprogrammierbare Steuerungen (SPS) bilden häufig die Grundlage eines Automatisierungssystems und dienen zur Steue rung oder Regelung einer Anlage oder einer Maschine. Die An steuerung der SPS bzw. der Anlage oder der Maschine erfolgt dabei über Sensoren und Aktoren. Die Sensoren und Aktoren können über eine Kommunikationsschnittstelle mit der Maschine oder der Anlage vernetzt sein, wobei die SPS diese Kommunika tionsschnittstelle nutzt, um mit den Sensoren und Aktoren zu interagieren. Die Datenverarbeitung der SPS ist meist zyk lisch und erfordert von der SPS, genauer gesagt von der Steu erungsaufgabe, dass die Deadlines konsequent eingehalten wer den. Es darf in diesem Zusammenhang zum Beispiel nicht V or kommen, dass zu dem Zeitpunkt zu dem die Ausgabedaten für die Aktoren benötigt werden, die Verarbeitung der Eingabedaten noch nicht abgeschlossen ist. Die Steuerungsaufgabe muss also die Echtzeitfähigkeit des Automatisierungssystems gewährleis ten können.

Meist setzt sich die Steuerungsaufgabe der SPS aus einer oder mehreren zyklisch auszuführenden Programmen mit Aufgaben, den „Tasks" zusammen. Da viele SPS Prozessoren mit mehreren Pro zessorkernen, die zum Beispiel als Haupt- und Parallelpro zessorkerne verwirklicht sein können, und/oder mehrere Pro zessoren umfassen, kann die SPS die Programme mit Aufgaben (Tasks) auf mehrere Prozessorkerne und/oder mehrere Prozesso ren aufteilen, um die Gesamtverarbeitungszeit der Programme mit Aufgaben zu reduzieren und die Einhaltung der Deadlines der Programme zu sichern. Werden die Aufgaben der Programme von mehreren Prozessorkernen (Hauptprozessorkerne und Paral lelprozessorkerne) parallel abgearbeitet, so ist es sinnvoll, die Aufgaben der Programme für die Abarbeitung einer vorgege benen Prioritätsstufe entsprechend klassifizieren zu können. Aus diesem Grund wird jedem Programm mit entsprechenden Auf gaben gewöhnlich eine vorgegebene Prioritätsstufe zugeteilt. Diese kann aus der Deadline und/oder den Abhängigkeiten der jeweiligen Programme zu den anderen Programmen ermittelt wer den, wenn die Programme beispielsweise auf die Ergebnisse der anderen Programme angewiesen sind.

Die Prioritätsstufe des entsprechenden Programms mit Aufgaben wird von einem Prioritätenverwalter in einer Datenstruktur organisiert. Der Prioritätenverwalter legt den Eintrag der Prioritätsstufe in der Datenstruktur ab. Sofern kein weiterer Eintrag einer Prioritätsstufe in der Datenstruktur vorhanden ist, setzt der Prioritätenverwalter die genannte Prioritäts stufe an die erste Stelle in der Datenstruktur. Der Prioritä tenverwalter kann ferner dazu ausgebildet sein, die parallel arbeitenden Prozessorkerne darüber in Kenntnis zu setzen, wenn sich die Reihenfolge der Einträge der Prioritätsstufen in der Datenstruktur ändert. Beispielsweise kann sich die Reihenfolge ändern, wenn ein neuer Eintrag einer Prioritäts stufe in der Datenstruktur hinzukommt, wobei die Prioritäts stufe dann einen höheren Wert als die Prioritätsstufe des bisherigen Eintrags haben kann. In einem solchen Fall können die Parallelprozessorkerne die Abarbeitung der aktuellen Auf gaben des entsprechenden Programms unterbrechen und mit der Abarbeitung der Aufgaben beginnen, die mit einer höheren Pri oritätsstufe des entsprechenden Programms korrespondieren, um dessen Deadlines einzuhalten. Die Aufgaben eines entsprechen den Programms können in mehrere Arbeitspakete mit Teilaufga ben untergliedert sein.

Während eines Programmzyklus wird ein zu erwartender Rechen durchsatz der Steuerungsaufgabe laufend bewertet. Anhand die ser Bewertung kann entschieden werden, dass wenigstens eine der Prioritätsstufen des parallelen Bearbeitungsabschnitts des jeweiligen Programms der Steuerungsaufgabe dynamisch an- gepasst wird, wenn sich der Rechendurchsatz der Steuerungs aufgabe durch die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts erhöht. Der zu erwartende Rechendurchsatz der Steuerungsaufgabe ist von einer Anzahl an Unterbrechungen der parallelen Bearbei tungsabschnitte der Programme abhängig, da die Anzahl der Un terbrechungen der parallelen Bearbeitungsabschnitte der Pro gramme in einem Verwaltungsaufwand resultiert. Der Verwal tungsaufwand beschreibt die Aktivitäten, die beim Unterbre chen der Abarbeitung der Teilaufgaben in den parallelen Bear beitungsabschnitten in den Programmen der Steuerungsaufgabe erforderlich sind, wie zum Beispiel das Übergeben und Sichern von Zwischenergebnissen. Häufige Unterbrechungen der Abarbei tung der parallelen Bearbeitungsabschnitte führen demnach zu einem höheren Verwaltungsaufwand. Auch die zeitliche Unter brechungsdauer der Programme ist für den Rechendurchsatz re levant, da während der zeitlichen Dauer der Unterbrechung der Abarbeitung der Teilaufgaben der parallelen Bearbeitungsab schnitte der Programme keine Berechnungen durchgeführt, son dern die oben beschriebenen Aktivitäten ausgeführt werden.

Die zeitliche Unterbrechungsdauer verlängert demnach die Aus führungszeit des Programms, da sie additiv auf die eigentli che Rechenzeit des Programms wirkt und diese ist in der Regel vorgegeben. Zudem kann die Unterbrechungsdauer bei der Unter brechung der Berechnungen der Programme mit parallelen Bear beitungsabschnitten zeitlich variieren. Das Ziel ist also den Verwaltungsaufwand möglichst gering zu halten und den Wert der wenigstens einen Prioritätsstufe dynamisch anzupassen, um die Häufigkeit der Unterbrechungen der Berechnungen der Pro gramme zu senken und den Rechendurchsatz damit zu erhöhen.

Ferner ist der zu erwartende Rechendurchsatz der Steuerungs aufgabe von der genutzten Rechenleistung des wenigstens einen Parallelprozessorkerns abhängig. Werden die Programme rein sequentiell auf den entsprechenden Hauptprozessorkernen aus geführt, zum Beispiel in dem sie den minimalen Wert der we nigstens einen Prioritätsstufe der parallelen Bearbeitungsab- schnitte der Programme zugewiesen bekamen, so kann es passie ren, dass der wenigstens eine Parallelprozessorkern gerade keine aktiven Berechnungen durchführt oder nur eingeschränkt aktiv ist. Dies vermindert den Rechendurchsatz der Steue rungsaufgabe, da die Rechenleistung des wenigstens einen Pa rallelprozessorkerns nicht oder nicht vollständig ausgenutzt wird. In einem solchen Fall kann der Wert der wenigstens ei nen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme angepasst, zum Beispiel erhöht werden, damit die Programme parallel auf dem wenigstens einen Parallelpro zessorkern ausgeführt werden und die Rechenleistung der vor handenen Prozessorkerne bestmöglich genutzt wird.

Des Weiteren kann bei der Bewertung des zu erwartenden Re chendurchsatzes der Steuerungsaufgabe die Rechenzeit der pa rallelen Bearbeitungsabschnitte der Programme mit berücksich tigt werden. Denn Programme mit Teilaufgaben mit kurzer Pro grammzyklus-Zeit können gegebenenfalls ohne Parallelisierung schneller rein sequentiell ausgeführt werden, als im jeweili gen parallelen Bearbeitungsabschnitt im Programm. Der paral lele Bearbeitungsabschnitt des jeweiligen Programms kann un terbrochen werden für einen anderen parallelen Bearbeitungs abschnitt eines weiteren Programms mit höherer zugeordneter Prioritätsstufe. Da die Unterbrechungen des parallelen Bear beitungsabschnitts beliebig häufig durch andere Programme mit parallelen Bearbeitungsabschnitten ausgelöst werden können, kann es unter Umständen V orkommen, dass die gesamte Ausfüh rungszeit des Programms, das durch andere parallele Bearbei tungsabschnitte weiterer Programme unterbrochen wird, länger ist, als ohne Parallelisierung. In einem solchen Fall ist es also denkbar, das Programm mit Teilaufgaben rein sequentiell auszuführen, um auf diese Weise eine kürzere Ausführungszeit des entsprechenden Programms zu erzielen und den Rechendurch satz zu erhöhen.

Der Kern der Erfindung liegt in der Möglichkeit der dynami schen Anpassung des Werts der wenigstens einen Prioritätsstu- fe des parallelen Bearbeitungsabschnitts des jeweiligen Pro gramms der Steuerungsaufgabe. Denn durch die dynamische An passung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des entsprechenden Pro gramms kann flexibel entschieden werden, ob die Teilaufgaben des jeweiligen Programms sequentiell auf dem zugeordneten Hauptprozessorkern oder im jeweiligen parallelen Bearbei tungsabschnitt des Programms zusätzlich auf dem wenigstens einen Parallelprozessorkern abgearbeitet werden sollen. Auf diese Weise kann eine optimale Ausnutzung der Ressourcen be reitgestellt werden, indem die Hauptprozessorkerne und die Parallelprozessorkerne gemeinsam Teilaufgaben des jeweiligen Programms abarbeiten. Die Echtzeitfähigkeit der Steuerungs aufgabe kann durch die Anpassung des Werts der Prioritätsstu fe des parallelen Bearbeitungsabschnitts des entsprechenden Programms der Steuerungsaufgabe weiterhin garantiert werden, indem die Anpassung des Werts der Prioritätsstufe stets so erfolgt, dass die Echtzeitbedingung der Steuerungsaufgabe und die Deadlines der Programme eingehalten werden können.

Fig. 1 zeigt eine speicherprogrammierbare Steuerung (SPS) 100 zur Steuerung einer Maschine bzw. Anlage 200. Die SPS 100 weist eine Kommunikationsschnittstelle 130 sowie eine Daten verarbeitungseinrichtung 110 auf. Über die Kommunikations schnittstelle 130, die beispielweise in Form eines hardware- und/oder softwaremäßig ausgebildeten Feldbusmasters eines Feldbussystems verwirklicht sein kann, kann die SPS 100 die entsprechenden Aktoren 210 und Sensoren 220 der Maschine bzw. der Anlage 200 des Automatisierungssystems steuern, wobei die Aktoren 210 und Sensoren 220 mithilfe des Feldbussystems mit einander vernetzt sein können.

Um die gewünschte Betriebsweise der Maschine bzw. der Anlage 200 bereitstellen zu können, legt die Steuerungsaufgabe der SPS 100 fest, welche seitens der SPS 100 in Abhängigkeit von entsprechenden Eingangsdaten erzeugte Ausgangsdaten den Akto ren 210 zugeführt werden. Die SPS 100 erhält eine Information über den Zustand der Maschine bzw. der Anlage 200, indem sie die Messdaten der Sensoren 220 und/oder die Ist-Daten der Ak toren 210 ausliest, die entsprechend mit den Eingängen der SPS 100 verbunden sind. Die Sensoren 220 können ein elektri sches Signal zur Erfassung einer Messgröße erzeugen oder die Messgröße selbst analog oder digital aufnehmen. Die Aktoren 210 sind an die Ausgänge der SPS 100 angeschlossen und setzen die elektrischen Signale der Ausgangsdaten der SPS 100 in me chanische Bewegung oder andere physikalische Größen (zum Bei spiel Temperatur, Druck, etc.) um.

Die dynamische Ansteuerung der Aktoren 210 kann zunächst auf dem Auslesen der aktuellen Ist-Daten der Aktoren 210 beruhen. Auf Basis der Ist-Daten der Aktoren 210 und der Messdaten der Sensoren 220 können aus den Eingabedaten die Ausgabedaten für die Aktoren 210 generiert werden. Alternativ dazu kann die Ansteuerung der Aktoren 210 aufgrund von Vorgaben, zum Bei spiel anhand von Bewegungsprofilen, erfolgen.

Die Datenverarbeitungseinrichtung 110 kann mehrere Prozessor kerne umfassen, wobei in Fig. 1 beispielsweise ein erster Hauptprozessorkern 111 und ein zweiter Hauptprozessorkern 112 sowie ein erster Parallelprozessorkern 113 und ein zweiter Parallelprozessorkern 114 gezeigt sind. Ebenso denkbar ist eine Ausgestaltung, in der die Datenverarbeitungseinrichtung 110 eine dazu abweichende Anzahl an Hauptprozessorkernen und/oder Parallelprozessorkernen aufweist. Der Vorteil an der Ausgestaltung der Datenverarbeitungseinrichtung 110 mit einem ersten Hauptprozessorkern 111 und einem zweiten Hauptpro zessorkern 112 sowie einem ersten Parallelprozessorkern 113 und einem zweiten Parallelprozessorkern 114 liegt darin, dass die abzuarbeitenden Teilaufgaben der jeweiligen Programme der Steuerungsaufgabe der SPS 100 gemäß der folgenden Beschrei bung auf die beiden Hauptprozessorkerne 111, 112 und die bei den Parallelprozessorkerne 113, 114 verteilt werden können. Dadurch ist es möglich die Rechenzeit zu reduzieren und zu sätzlich eine optimale Auslastung der Ressourcen zu gewähren. Die mehreren ausführbaren Programme der Steuerungsaufgabe, von denen wenigstens zwei Programme einen parallelen Bearbei tungsabschnitt aufweisen, können beispielsweise auf dem ers ten und zweiten Hauptprozessorkern 111, 112 ausgeführt wer den, wobei der erste Parallelprozessorkern 113 und der zweite Parallelprozessorkern 114 wie oben genannt, unterstützend bei der Abarbeitung der Teilaufgaben in den jeweiligen parallelen Abschnitten der Programme der Steuerungsaufgabe mitwirken können. Die Steuerungsaufgabe kann beispielsweise aus einem innerhalb der SPS 100 ausgeführten Programmzyklus bestehen, wobei der Programmzyklus den Empfang der Eingabedaten (die Messdaten der Sensoren 220 und die aktuellen Ist-Daten der Aktoren 210), die Verarbeitung der Eingabedaten zu Ausgabeda ten für die Aktoren 210 und die Ausgabe der Ausgabedaten für die Aktoren 210 umfasst. Nach der erfolgten Verarbeitung, al so dem Ende des Programmzyklus, beginnt der Programmzyklus der Steuerungsaufgabe von neuem.

Im Unterschied zum erfindungsgemäßen Programmzyklus der Steu erungsaufgabe, umfasst ein Feldbuszyklus neben den oben ge nannten Schritten des Programmzyklus, des Weiteren die Über mittlung der Eingabedaten der Sensoren 220 bzw. Aktoren 210 über den Feldbus an die SPS 100. Die Ausgabedaten, die im Programmzyklus innerhalb der SPS 100 generiert wurden, werden in dem Feldbuszyklus ferner über den Feldbus an die Aktoren 210 übertragen, damit die Aktoren 210 entsprechend der emp fangenen Ausgabedaten handeln können.

Die Teilaufgaben in den Programmen, die eine Parallelisierung erfordern und von mehreren Prozessorkernen abgearbeitet wer den, können jeweils wenigstens einem parallelen Bearbeitungs abschnitt in dem Programm des ersten Hauptprozessorkerns 111 bzw. in dem Programm des zweiten Hauptprozessorkerns 112 zu geordnet werden. Den parallelen Bearbeitungsabschnitten in den entsprechenden Programmen des ersten Hauptprozessorkerns 111 und des zweiten Hauptprozessorkerns 112 kann eine Priori tät mit einer vorgegebenen ersten Prioritätsstufe und einer vorgegebenen zweiten Prioritätsstufe zugewiesen sein, wobei die erste Prioritätsstufe und die zweite Prioritätsstufe von einem Prioritätenverwalter 350 einer Steuerungseinrichtung 120 organisiert werden. Der Prioritätenverwalter 350 dient in erster Linie zum Verwalten der ersten und zweiten Prioritäts stufe in der Datenstruktur und zur Vornahme der Anpassung des Werts der jeweiligen Prioritätsstufe des zugeordneten paral lelen Bearbeitungsabschnitts des Programms. Die Datenstruktur kann des Weiteren Methoden aufweisen, welche von den Program men auf den beiden Hauptprozessorkernen 111, 112 und den bei den Parallelprozessorkernen 113, 114 aufgerufen werden kön nen. Wenn der erste Hauptprozessorkern 111 beispielsweise an einen parallelen Bearbeitungsabschnitt im Programm angelangt, so ruft er eine „Füge meine Teilaufgaben hinzu"-Methode von der Datenstruktur des Prioritätenverwalters 350 auf. In der Methode können die Teilaufgaben dann in die Datenstruktur eingeordnet werden und der Prioritätenverwalter 350 kann dazu ausgelegt sein, den ersten und zweiten Parallelprozessorkern 113, 114 über einen neuen, höheren Eintrag oder eine geänder te Reihenfolge der Einträge der Prioritätsstufen in der Da tenstruktur zu informieren, falls die Teilaufgaben der Metho de mit einer höheren Prioritätsstufe verknüpft sind, wobei die Methode auf dem ersten Hauptprozessorkern 111 ausgeführt wird. Die beiden Parallelprozessorkerne unterbrechen darauf hin ihre Abarbeitung der aktuellen Teilaufgaben, organisieren die Zwischenergebnisse und rufen dann eine „Sichere meine Zwischenergebnisse"-Methode aus der Datenstruktur des Priori tätenverwalters 350 auf. In dieser Methode kann dann bei Be darf auch die Prioritätsstufe der zugehörigen Teilaufgaben in der Datenstruktur angepasst werden. Das heißt diese Methode wird jeweils auf dem ersten und zweiten Parallelprozessorkern 113, 114 ausgeführt.

Es ist im Allgemeinen nicht notwendig, dass der Prioritäten verwalter 350 den ersten und zweiten Hauptprozessorkern 111, 112 bzw. das auf den beiden Hauptprozessorkernen 111, 112 auszuführende Programm über eine Änderung des Werts der we- nigstens einen Prioritätsstufe informiert. Denn der erste und zweite Hauptprozessorkern 111, 112 arbeiten die ihm zugehöri gen Teilaufgaben stets ab, auch wenn sie nicht an erster Stelle der Einträge der Prioritätsstufen, die mit den Teil aufgaben verknüpft sind, in der Datenstruktur stehen. Das heißt, die beiden Hauptprozessorkerne 111, 112 arbeiten die ihnen zugehörigen Teilaufgaben unabhängig von der Unterstüt zung der beiden Parallelprozessorkerne 113, 114 ab. Hingegen stellt die rein sequentielle Abarbeitung der Teilaufgaben auf dem ersten und zweiten Hauptprozessorkern 111, 112 einen Un terschied für den ersten und zweiten Parallelprozessorkern 113, 114 dar. Denn wenn der erste und zweite Parallelpro zessorkern 113, 114 eine „Gib mir eine neue Teilaufgabe"- Methode aus der Datenstruktur des Prioritätenverwalters 350 aufrufen und nur noch Teilaufgaben, die mit dem minimalen Wert der Prioritätsstufe der parallelen Bearbeitungsabschnit te der Programme verknüpft sind, vorhanden sind und folglich für die rein sequentielle Abarbeitung auf dem ersten und zweiten Hauptprozessorkern 111, 112 vorgesehen sind, so er halten die beiden Parallelprozessorkerne 113, 114 „Es sind keine Teilaufgaben verfügbar" als Antwort. Der Einfachheit halber wird für die Beschreibung im Folgenden auf die einzel nen Methoden der Datenstruktur des Prioritätenverwalters 350 verzichtet. Gleichwohl können die oben genannten Methoden so wie weitere Methoden der Datenstruktur für die Implementie rung des erfindungsgemäßen Verfahrens in den nachfolgenden Figuren eingesetzt werden.

Der Prioritätenverwalter 350 kann auf mehreren Programmen in Form von mehreren Modulen (beispielsweise Software-Module) verteilt ausgeführt werden. Ebenfalls denkbar ist es, den Prioritätenverwalter 350 als eigenständiges Modul (beispiels weise als Software-Modul) in einem Programm zu verwirklichen, auf den der erste Parallelprozessorkern 113 und der zweite Parallelprozessorkern 114 zugreifen können, um den ersten Hauptprozessorkern 111 und den zweiten Hauptprozessorkern 112 bei der Abarbeitung der Teilaufgaben zu unterstützen. Zudem ist denkbar, den Prioritätenverwalter 350 als eigenständiges Programm zu verwirklichen oder als ein oder mehrere externe Hardware-Module .

In den parallelen Bearbeitungsabschnitten in den Programmen des ersten Hauptprozessorkerns 111 und des zweiten Hauptpro zessorkerns 112 werden zudem ein erstes Arbeitspaket und ein zweites Arbeitspaket erstellt. Das erste Arbeitspaket umfasst eine erste Menge an Teilaufgaben und das zweite Arbeitspaket umfasst eine zweite Menge an Teilaufgaben. Die erste Menge an Teilaufgaben und die zweite Menge an Teilaufgaben können von dem ersten Hauptprozessorkern 111 und dem zweiten Hauptpro zessorkern 112 bzw. dem ersten Parallelprozessorkern 113 und dem zweiten Parallelprozessorkern 114 entsprechend der ersten und zweiten Prioritätsstufe des zugehörigen parallelen Bear beitungsabschnitts abgearbeitet werden.

Es ist möglich, dass ein Programm mehrere sequentielle Bear beitungsabschnitte sowie mehrere parallele Bearbeitungsab schnitte umfasst, wobei die sequentiellen Bearbeitungsab schnitte der Programme im Unterschied zu den parallelen Bear beitungsabschnitten nicht in Arbeitspaketen mit Teilaufgaben aufgeteilt sein und vom Prioritätenverwalter verwaltet werden müssen. Denn die sequentiellen Bearbeitungsabschnitte der Programme - mit Aufgaben, die keine Parallelisierung erfor dern - können auf dem entsprechenden Hauptprozessorkern 111, 112 ohne die Unterstützung des ersten und zweiten Parallel prozessorkerns 113, 114 ausgeführt werden. Die sequentiellen und parallelen Bearbeitungsabschnitte eines Programms können alternierend auftreten. Zudem können Programme nur rein se quentiell ausgeführt werden. Die sequentiellen Bearbeitungs abschnitte bzw. die sequentiell auszuführenden Programme kön nen eine sequentielle Prioritätsstufe aufweisen, die für den sequentiellen Bearbeitungsabschnitt bzw. das ganze Programm der Steuerungsaufgabe gilt. Des Weiteren ist die sequentielle Prioritätsstufe unabhängig davon, ob die Programme der Steue rungsaufgabe einen parallelen Bearbeitungsabschnitt aufweisen oder nicht. Die Aufgaben können dann rein sequentiell im se quentiellen Bearbeitungsabschnitt des Programms bzw. dem se quentiell auszuführenden Programm des entsprechenden Haupt prozessorkern 111, 112 abgearbeitet werden.

In diesem Zusammenhang ist es denkbar, dass mehrere Programme der Steuerungsaufgabe auf einem einzigen Hauptprozessorkern 111, 112 ausgeführt werden können, wobei die sequentielle Prioritätsstufe hierbei relevant ist. Die sequentielle Prio ritätsstufe der Programme kann sich von der Prioritätsstufe der den jeweiligen Programmen zugeordneten parallelen Bear beitungsabschnitte unterscheiden. Beispielsweise ist es dadurch möglich, dass Teilaufgaben eines Arbeitspakets des parallelen Bearbeitungsabschnitts eines entsprechenden Pro gramms auf den Parallelprozessorkernen 113, 114 ausgeführt werden und gleichzeitig können Aufgaben, die keine Paralleli sierung erfordern von dem einen Hauptprozessorkern 111, 112 sequentiell abgearbeitet werden. Falls die sequentielle Abar beitung der Aufgaben ohne Parallelisierung durch ein höher priorisiertes sequentiell auszuführendes Programm (mit Aufga ben ohne Parallelisierung) bzw. einen sequentiellen Bearbei tungsabschnitt eines Programms (mit Aufgaben ohne Paralleli sierung) auf dem einen Hauptprozessorkern 111, 112 unterbro chen wird, kann die parallele Abarbeitung der Teilaufgaben des entsprechenden Arbeitspakets auf dem ersten und zweiten Parallelprozessorkern 113, 114 weiterhin unterbrechungsfrei erfolgen, da den parallelen Bearbeitungsabschnitten in den entsprechenden Programmen eine zur sequentiellen Prioritäts stufe separate Prioritätsstufe zugewiesen sein kann.

Folglich kann eine Unterbrechung der aktuellen Teilaufgaben durch höher priorisierte andere Teilaufgaben nicht nur im Fall der parallelen Abarbeitung der Teilaufgaben auf den Pa rallelprozessorkernen 113, 114, sondern auch im Fall einer sequentiellen Abarbeitung der Aufgaben ohne Parallelisierung auf dem einen Hauptprozessorkern 111, 112 erfolgen. Der Wert der Prioritätsstufe des parallelen Bearbeitungsabschnitts des jeweiligen Programms der Steuerungsaufgabe kann auch in der beschriebenen Ausführungsform mit einem einzigen Hauptpro zessorkern 111, 112 vom Prioritätenverwalter 350 während des Programmzyklus oder für einen neuen Programmzyklus angepasst werden .

Fig. 2 zeigt ein Schema 600 zur Erstellung von Arbeitspaketen mit Teilaufgaben und Verwaltung der Prioritätsstufen inner halb der SPS nach Fig. 1. Die mehreren ausführbaren Programme der Steuerungsaufgabe der SPS können beispielsweise auf dem ersten und zweiten Hauptprozessorkern 111, 112 ausgeführt werden, wobei wenigstens zwei Programme der Steuerungsaufgabe jeweils den wenigstens einen parallelen Bearbeitungsabschnitt aufweisen. Der Pfeil mit dem Bezugszeichen 500 stellt das Er stellen des ersten Arbeitspakets 305 zu Beginn des parallelen Bearbeitungsabschnitts des ersten Hauptprozessorkerns 111 dar. Das erste Arbeitspaket 305 umfasst die erste Menge an Teilaufgaben 320, die im dargestellten Beispiel aus einer ersten Teilaufgabe 321, einer zweiten Teilaufgabe 322, einer dritten Teilaufgabe 323 und einer vierten Teilaufgabe 324 be steht. Das erste Arbeitspaket 305 umfasst ferner die Referenz auf die erste Prioritätsstufe 340 des parallelen Bearbei tungsabschnitts des ersten Hauptprozessorkerns 111. Das Über geben der Referenz auf die erste Prioritätsstufe 340 des pa rallelen Bearbeitungsabschnitts des ersten Hauptprozessor kerns 111 an den Prioritätenverwalter 350 wird mithilfe des Pfeils mit dem Bezugszeichen 505 verdeutlicht. Der Prioritä tenverwalter 350 fügt die erste Prioritätsstufe 340 in eine Datenstruktur 355 ein und speichert die Datenstruktur 355 im Datenstrukturspeicher der Steuerungseinrichtung, der in den Figuren nicht gezeigt ist. Besitzt die Datenstruktur 355 kei ne Einträge, so fügt der Prioritätenverwalter 350 die Refe renz auf die erste Prioritätsstufe 340 an die erste Stelle der Einträge der Prioritätsstufen in der Datenstruktur 355 ein . Die Pfeile mit den Bezugszeichen 510, 515 zeigen das Anfragen des ersten und des zweiten Parallelprozessorkerns 113, 114 beim Prioritätenverwalter 350 an, welcher Eintrag der Priori tätsstufen an der ersten Stelle der Einträge in der Daten struktur 355 steht. Beispielsweise kann der erste Eintrag der Prioritätsstufe in der Datenstruktur 355 die Referenz auf die erste Prioritätsstufe 340 des ersten Hauptprozessorkerns 111 sein. Da sich die erste Prioritätsstufe 340 auf den paralle len Bearbeitungsabschnitt des ersten Hauptprozessorkerns 111 bezieht, greifen der erste Parallelprozessorkern 113 und der zweite Parallelprozessorkern 114 auf das dazu korrespondie rende erste Arbeitspaket 305 zu. Der Zugriff des ersten und zweiten Parallelprozessorkerns 113, 114 auf das erste Ar beitspaket 305 wird mit den Pfeilen mit den Bezugszeichen 520, 525 angezeigt.

Der erste Parallelprozessorkern 113 kann beispielsweise beim ersten Arbeitspaket 305 anfragen, ob es eine freie erste bis vierte Teilaufgabe 321-324 gibt, die noch nicht anderweitig verteilt wurde. Die Anfrage des ersten Parallelprozessorkerns 113 wird mithilfe des Pfeils mit dem Bezugszeichen 520 ange zeigt. Beispielsweise kann dies die erste Teilaufgabe 321 sein, die der erste Parallelprozessorkern 113 zur Abarbeitung zugeteilt bekommt. Die erste Teilaufgabe 321 steht dann für die Verteilung vorerst nicht mehr zur Verfügung, um eine Mehrfachvergabe derselben Teilaufgabe vermeiden zu können.

Dem zweiten Parallelprozessorkern 114 kann auf diese Weise zum Beispiel die zweite Teilaufgabe 322 zugewiesen werden.

Die parallele Ausführung der ersten und zweiten Teilaufgabe 321, 322 von dem ersten und zweiten Parallelprozessorkern 113, 114 ist mithilfe des Bezugszeichens 360 und dem Kasten um den ersten und zweiten Parallelprozessorkern 113, 114 her um angedeutet. Der erste Hauptprozessorkern 111 kann während des parallelen Bearbeitungsabschnitts im Programm auch se quentiell Teilaufgaben abarbeiten, demnach fragt er ebenfalls beim ersten Arbeitspaket 305 nach einer freien ersten bis vierten Teilaufgabe 321-324 zur Abarbeitung an. Die Anfrage des ersten Hauptprozessorkerns 111 wird über den Pfeil mit dem Bezugszeichen 530 dargestellt. Beispielsweise kann ihm die dritte Teilaufgabe 323 zugeteilt werden.

Sobald der erste Hauptprozessorkern 111 oder einer der beiden Parallelprozessorkerne 113, 114 ihre erste bis dritte Teil aufgabe 321-323 vollständig abgearbeitet haben, kann die ver bleibende vierte Teilaufgabe 324 wie oben beschrieben zuge teilt werden. Es wurde ein Ausführungsbeispiel für die Ver teilung der ersten bis vierten Teilaufgabe 321-324 auf den ersten Hauptprozessorkern 111 und den ersten und zweiten Pa rallelprozessorkern 113, 114 gegeben. Ebenfalls denkbar ist es die erste bis vierte Teilaufgabe 321-324 anderweitig auf den ersten Hauptprozessorkern 111 und den ersten und zweiten Parallelprozessorkern 113, 114 aufzuteilen.

Gelangt der zweite Hauptprozessorkern 112 an seinen paralle len Bearbeitungsabschnitt in seinem Programm, so erstellt er das zweite Arbeitspaket 310 mit der zweiten Menge an Teilauf gaben 330, die im dargestellten Beispiel aus einer fünften Teilaufgabe 331, einer sechsten Teilaufgabe 332 und einer siebten Teilaufgabe 333 besteht. Das Erstellen des zweiten Arbeitspakets 310 vom zweiten Hauptprozessorkern 112 ist mit hilfe des Pfeils mit dem Bezugszeichen 535 visualisiert . Fer ner umfasst das zweite Arbeitspaket 310 die Referenz auf die zweite Prioritätsstufe 345 des parallelen Bearbeitungsab schnitts im Programm des zweiten Hauptprozessorkerns 112. Die Referenz auf die zweite Prioritätsstufe 345 übergibt der zweite Hauptprozessorkern 112 ferner dem Prioritätenverwalter 350. Das Übergeben der Referenz auf die zweite Prioritätsstu fe wird mit dem Pfeil mit dem Bezugszeichen 540 dargestellt. Der Prioritätenverwalter 350 ordnet die Referenz auf die zweite Prioritätsstufe 345 ihrem Wert entsprechend an die zweite Stelle der Einträge der Prioritätsstufen in die Daten struktur 355 oder an die erste Stelle der Einträge der Prio ritätsstufen in die Datenstruktur 355 ein. Befand sich vorher bereits ein anderer Eintrag an der ersten Stelle der Einträge der Prioritätsstufen in der Datenstruktur 355, so wird die ser, für den Fall, dass die erste Prioritätsstufe 340 niedri ger ist als die zweite Prioritätsstufe 345 des neuen Ein trags, vom Prioritätenverwalter 350 an die zweite Stelle der Einträge der Prioritätsstufen in der Datenstruktur 355 ge setzt und die Einträge der Datenstruktur 355 im Datenstruk turspeicher gesichert.

Ändert sich die Reihenfolge der Einträge der Prioritätsstufen in der Datenstruktur 355, so informiert der Prioritätenver walter 350 den ersten und zweiten Parallelprozessorkern 113, 114 darüber. Der Vorgang geht mit dem Unterbrechen der aktu ell von dem ersten Parallelprozessorkern 113 und/oder dem zweiten Parallelprozessorkern 114 bearbeiteten ersten, zwei ten und gegebenenfalls vierten Teilaufgabe 321, 322, 324 aus der ersten Menge an Teilaufgaben 320 einher. Die Zwischener gebnisse der Berechnungen können an die in Fig. 1 dargestell te Steuerungseinrichtung 120 übergeben werden und auf einem nicht dargestellten Zwischenergebnisspeicher gesichert wer den. Auf den Zwischenergebnisspeicher können sowohl der erste und zweite Hauptprozessorkern 111, 112 als auch der erste und zweite Parallelprozessorkern 113, 114 zugreifen, falls die Abarbeitung der unterbrochenen ersten, zweiten und gegebenen falls vierten Teilaufgabe 321, 322, 324 auf den Parallelpro zessorkernen 113, 114 fortgeführt werden soll.

Während der erste Hauptprozessorkern 111 die dritte Teilauf gabe 323 aus der ersten Menge an Teilaufgaben 320 des ersten Arbeitspakets 305 weiter sequentiell abarbeitet, so fragen der erste Parallelprozessorkern 113 und der zweite Parallel prozessorkern 114 sowie der zweite Hauptprozessorkern 112 beim zweiten Arbeitspaket 310 nach den fünften bis siebten Teilaufgaben 331-333 aus der zweiten Menge an Teilaufgaben 330 an. Die Anfragen der jeweiligen Prozessorkerne sind mit hilfe der drei Pfeile mit den Bezugszeichen 545, 550, 555 dargestellt. Beispielsweise kann die fünfte Teilaufgabe 331 dem ersten Parallelprozessorkern 113 und die siebte Teilauf- gäbe 333 dem zweiten Parallelprozessorkern 114 zugeteilt wer den. Die sechste Teilaufgabe 332 kann vom zweiten Hauptpro zessorkern 112 währenddessen sequentiell abgearbeitet werden. Für die Verteilung der fünften bis siebten Teilaufgabe 331- 333 auf den ersten und zweiten Parallelprozessorkern 113, 114 und den zweiten Hauptprozessorkern 112 ist ebenso eine vom dargestellten Beispiel abweichende Aufteilung der fünften bis siebten Teilaufgabe 331-333 denkbar.

Die beiden Parallelprozessorkerne 113, 114 müssen nicht zwin gend warten, bis alle fünften bis siebten Teilaufgaben 331- 333 aus dem höher priorisierten zweiten Arbeitspaket 310 des parallelen Bearbeitungsabschnitts des Programms des zweiten Hauptprozessorkerns 112 fertig abgearbeitet worden sind. Hat der erste Parallelprozessorkern 113 zum Beispiel seine fünfte Teilaufgabe 331 bereits vollständig abgearbeitet, während der zweite Parallelprozessorkern 114 noch mit der Abarbeitung der siebten Teilaufgabe 333 und der zweite Hauptprozessorkern 112 mit der Abarbeitung der sechsten Teilaufgabe 332 des zweiten Arbeitspakets 310 beschäftigt sind, so kann der erste Paral lelprozessorkern 113 bereits mit der Abarbeitung einer der zuvor unterbrochenen ersten bis vierten Teilaufgabe 321-324 des ersten Arbeitspakets 305 beginnen, die mit einer niedri geren Prioritätsstufe verknüpft sind. Dies ist möglich, falls der erste Parallelprozessorkern 113 nach der Abarbeitung sei ner fünften Teilaufgabe 331 beim zweiten Arbeitspaket 310 nach einer freien Teilaufgabe anfragt, es jedoch gerade keine freie Teilaufgabe an erster Stelle des zweiten Arbeitspakets mehr gibt, wobei die beiden Arbeitspakete 305, 310 ebenfalls Teil der Datenstruktur 355 sein können. Dann kann der erste Parallelprozessorkern 113 mit der Abarbeitung einer der ers ten bis vierten Teilaufgabe 321-324 aus dem ersten Arbeitspa ket 305 beginnen, damit die Rechenleistung des ersten Paral lelprozessorkerns 113 optimal ausgenutzt werden kann. Das heißt, unnötige Wartezeiten für den Beginn der Abarbeitung der ersten bis siebten Teilaufgaben 321-324, 331-333 von den beiden Parallelprozessorkernen 113, 114 können vermieden wer den .

Bei der Wiederaufnahme der Abarbeitung der ersten und zweiten Teilaufgabe 321, 322 des ersten Arbeitspakets 305 durch den ersten und zweiten Parallelprozessorkern 113, 114 kann die

Verteilung der ersten und zweiten Teilaufgabe 321, 322 aus dem ersten Arbeitspaket 305 auf den ersten und zweiten Paral lelprozessorkern 113, 114 beispielsweise analog zum beschrie benen Ausführungsbeispiel erfolgen, d.h. der erste Parallel prozessorkern 113 bekommt die erste Teilaufgabe 321 und der zweite Parallelprozessorkern 114 die zweite Teilaufgabe 322 vom ersten Arbeitspaket 305 zugeteilt. Die beiden Parallel prozessorkerne 113, 114 greifen auf den Zwischenergebnisspei cher zu, um die Zwischenergebnisse der ersten und zweiten Teilaufgabe 321, 322 für die weitere Abarbeitung der genann ten Teilaufgaben nutzen zu können.

Sind die fünfte, sechste und siebte Teilaufgabe 331, 332, 333 von den oben beschriebenen Prozessorkernen aus der zweiten Menge an Teilaufgaben 330 gänzlich erledigt, so meldet das entsprechende zweite Arbeitspaket 310 dies an den Prioritä tenverwalter 350, damit der Prioritätenverwalter 350 die ent sprechende Referenz auf die zweite Prioritätsstufe 345 aus den Einträgen der Prioritätsstufen in der Datenstruktur 355 entfernt .

Da der erste Hauptprozessorkern 111 die dritte Teilaufgabe 323 des ersten Arbeitspakets 305 weiter abgearbeitet hat, während der erste Parallelprozessorkern 113 die fünfte Teil aufgabe 331 und der zweite Parallelprozessorkern 114 die siebte Teilaufgabe 333 aus dem zweiten Arbeitspaket 310 abge arbeitet haben, ist es möglich, dass der erste Hauptpro zessorkern 111 in der Zeit, in der die Parallelprozessorkerne 113, 114 ihre zugeteilte fünfte und siebte Teilaufgabe 331, 333 gänzlich abarbeiten, auch der erste Hauptprozessorkern 111 die Abarbeitung der dritten Teilaufgabe 323 vollständig abschließt. Danach kann der erste Hauptprozessorkern 111 beim ersten Arbeitspaket 305 nach der verbleibenden vierten Teil aufgabe 324 anfragen und diese abarbeiten, während die Paral lelprozessorkerne 113, 114 die Abarbeitung der ersten und zweiten Teilaufgabe 321, 322 wieder aufnehmen. Die Anfrage des ersten Hauptprozessorkerns 111 beim ersten Arbeitspaket 305 wird über den Pfeil mit dem Bezugszeichen 530 angezeigt.

Sind die erste, zweite und vierte Teilaufgabe 321, 322, 324 vollständig von dem ersten und zweiten Parallelprozessorkern 113, 114 sowie dem ersten Hauptprozessorkern 111 abgearbeitet worden, und ferner die dritte Teilaufgabe 323 von dem ersten Hauptprozessorkern 111 fertiggestellt worden, so meldet das zugehörige erste Arbeitspaket 305 die Erledigung der ersten bis vierten Teilaufgabe 321-324 an den Prioritätenverwalter 350, damit dieser die Referenz auf die erste Prioritätsstufe 340 aus den Einträgen der Prioritätsstufen in der Datenstruk tur 355 entfernt. Denkbar ist weiterhin, dass der Prioritä tenverwalter 350 selbst bei dem ersten und zweiten Arbeitspa ket 305, 310 anfragt, ob noch erste bis siebte Teilaufgaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilauf gaben 320, 330 zur Erledigung bereitstehen, und dann gegebe nenfalls die entsprechende Referenz auf die erste und zweite Prioritätsstufe 340, 345 aus der Datenstruktur 355 im Daten strukturspeicher entfernt.

Sobald der erste und zweite Hauptprozessorkern 111, 112 im parallelen Bearbeitungsabschnitt eine weitere erste bis sieb te Teilaufgabe 321-324, 331-333 von seinem jeweiligen Ar beitspaket 305, 310 anfordert, aber keine unbearbeitete erste bis siebte Teilaufgabe 321-324, 331-333 mehr verfügbar ist, wartet der erste und zweite Hauptprozessorkern 111, 112 bis die Parallelprozessorkerne 113, 114 die aktuell noch ausge führten ersten bis siebten Teilaufgaben 321-324, 331-333 zu Ende abgearbeitet haben. Dann wird der entsprechende paralle le Bearbeitungsabschnitt des ersten und zweiten Hauptpro zessorkerns 111, 112 verlassen und das erste und zweite Ar- beitspaket 305, 310 gelöscht. Danach können der erste und zweite Hauptprozessorkern 111, 112 beliebige weitere (nicht parallelisierte) Berechnungen ausführen, z.B. auf den Ergeb nissen des vorherigen parallelen Bearbeitungsabschnitts auf bauend .

Durch die Verteilung einzelner erster bis siebter Teilaufga ben 321-324, 331-333 auf den ersten und zweiten Hauptpro zessorkern 111, 112 und den ersten und zweiten Parallelpro zessorkern 113, 114 kann die Gesamtbearbeitungszeit der ers ten bis siebten Teilaufgaben 321-324, 331-333 reduziert und die Rechenkapazität optimal ausgenutzt werden. Ferner können Deadlines der Programme eingehalten und die Echtzeitfähigkeit der Steuerungsaufgabe gewährleistet werden, indem die erste und zweite Prioritätsstufe 340, 345 der jeweiligen parallelen Bearbeitungsabschnitte der Programme des ersten und zweiten Hauptprozessorkerns 111, 112 berücksichtigt werden. Denn mit hilfe der ersten und zweiten Prioritätsstufe 340, 345 kann die Abarbeitung der ersten bis vierten Teilaufgabe 321-324, aus der ersten Menge an Teilaufgaben 320 zugunsten anderer fünfter bis siebter Teilaufgaben 331-333 aus der zweiten Men ge an Teilaufgaben 330 unterbrochen werden, falls diesen eine höhere zweite Prioritätsstufe 345 zugeordnet ist. Ebenso denkbar ist, dass die Abarbeitung der fünften bis siebten Teilaufgabe 331-333 aus der zweiten Menge an Teilaufgaben mit der zweiten Prioritätsstufe 345 aufgrund der höher priori- sierten ersten Menge an Teilaufgaben 320 mit der ersten bis vierten Teilaufgabe 321-324 und der ersten Prioritätsstufe unterbrochen wird. Unterbrochene erste bis siebte Teilaufga ben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 können weiter abgearbeitet werden. Denn die Referenz auf den ersten und zweiten Prioritätsstufenein trag 340, 345 bleibt in der Datenstruktur 355 im Datenstruk turspeicher erhalten, so lange die entsprechenden ersten bis siebten Teilaufgaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 des ersten und zweiten Arbeitspakets 305, 310 nicht vollständig abgearbeitet worden sind .

In einer Ausführungsform wird das erste und zweite Arbeitspa ket 305, 310 mit der ersten und zweiten Menge an Teilaufgaben 320, 330, sowie der Referenz auf die erste und zweite Priori tätsstufe 340, 345 zu Beginn der Ausführung des jeweiligen Programms von dem ersten und zweiten Hauptprozessorkern 111, 112 erstellt. Ebenfalls ist denkbar, dass am Anfang eines weiteren parallelen Bearbeitungsabschnitts im Programm des ersten Hauptprozessorkerns 111 und/oder des zweiten Hauptpro zessorkerns 112 jeweils ein neues Arbeitspaket erstellt wird.

Bei der Unterbrechung der Abarbeitung der ersten bis siebten Teilaufgabe 321-324, 331-333 in dem parallelen Bearbeitungs abschnitt des jeweiligen Programms ist in der Regel jedoch nicht bestimmbar, welche Daten für eine Fortführung der ge nannten Teilaufgaben im jeweiligen Programm nach der Unter brechung relevant sind, da die erste bis siebte Teilaufgabe 321-324, 331-333 an einer beliebigen Stelle im entsprechenden Programm während der Ausführungszeit des Programms unterbro chen werden kann. Insofern kann diese Ausführungsform die Si cherung sämtlicher Daten erfordern, die bei der Abarbeitung der ersten bis siebten Teilaufgaben 321-324, 331-333 im pa rallelen Bearbeitungsabschnitt im entsprechenden Programm er stellt bzw. bearbeitet wurden, wenn kein entsprechender Un terbrechungspunkt in den ersten bis siebten Teilaufgaben 321- 324, 331-333 gesetzt wurde, bis zu dem die Abarbeitung der ersten bis siebten Teilaufgaben 321-324, 331-333 fortgeführt und dann unterbrochen wird. Denn mithilfe des vorgegebenen Unterbrechungspunkts, der beispielsweise in einer Kontroll struktur in den ersten bis siebten Teilaufgaben 321-324, 331- 333 gesetzt sein kann, ist bekannt, welche Daten bei der Fortführung der unterbrochenen ersten bis siebten Teilaufga ben 321-324, 331-333 benötigt werden. Im Fall des gesetzten Unterbrechungspunkts müssen nicht sämtliche Daten gesichert werden, sondern es ist ausreichend, die aktuelle Iteration der Kontrollstruktur, die sich um eine Schleife handeln kann, und gegebenenfalls vorhandene Zwischenergebnisse der Berech nungen zu speichern.

Eine weitere Ausführungsform sieht vor, dass die Abarbeitung der ersten bis siebten Teilaufgabe 321-324, 331-333 in dem parallelen Bearbeitungsabschnitt des jeweiligen Programms auf dem ersten und zweiten Parallelprozessorkern 113, 114 umge hend abgebrochen wird und dabei keine Zwischenergebnisse der Berechnungen gesichert werden. Folglich muss eine abgebroche ne erste bis siebte Teilaufgabe 321-324, 331-333 wieder von Beginn an neu berechnet werden. Der sofortige Abbruch der ak tuell ausgeführten ersten bis siebten Teilaufgaben 321-324, 331-333 auf den beiden Parallelprozessorkernen 113, 114 ohne Sicherung der Daten kann beispielsweise angewendet werden, wenn der erste oder zweite Hauptprozessorkern 111, 112 einen parallelen Bearbeitungsabschnitt mit einer sehr kleinen Pro grammzyklus-Zeit aufweisen und die Parallelisierung erforder lich ist, um die Deadlines einhalten zu können. Von Vorteil ist dabei, dass mithilfe der Ausgestaltung eine geringste mögliche Latenz erzielt werden kann, wobei die Latenz die Zeit zwischen dem Abbruch der Berechnungen der aktuellen ers ten bis vierten Teilaufgabe 321-324 (fünften bis siebten Teilaufgabe 331-333) auf den Parallelprozessorkernen 113, 114 und dem Beginn der Berechnungen der neuen fünften bis siebten Teilaufgabe 331-333 (ersten bis vierten Teilaufgabe 321-324) auf den Parallelprozessorkernen 113, 114, die mit einer höhe ren Prioritätsstufe verknüpft ist, angibt. Eine solche Aus führungsform setzt das Erreichen einer möglichst geringen La tenz zum Ziel, daher können Zwischenergebnisse der ersten bis siebten Teilaufgabe 321-324, 331-333 mit einer niedrigen Pri oritätsstufe verworfen werden.

Statt der Unterbrechung der aktuell ausgeführten ersten bis vierten Teilaufgabe 321-324 ist es ferner denkbar, die erste bis vierte Teilaufgabe 321-324 bis zum Ende abzuarbeiten und eine neue fünfte bis siebte Teilaufgabe 331-333 mit höherer Prioritätsstufe des jeweiligen parallelen Bearbeitungsab schnitts, geeignet in die Datenstruktur 355 des Prioritäten verwalters 350 einzusortieren, jedoch ohne die Abarbeitung der aktuellen ersten bis vierten Teilaufgaben 321-324 dabei zu unterbrechen. Die Parallelprozessorkerne 113, 114 werden auf diese Weise nicht gezwungen, ihre Berechnungen umgehend abzubrechen oder sie zu unterbrechen, falls der neuen fünften bis siebten Teilaufgabe 331-333 eine höhere Priorität zuge ordnet ist, als der aktuellen ersten bis vierten Teilaufgabe 321-324. Denn sobald die beiden Parallelprozessorkerne 113, 114 die Abarbeitung ihrer aktuellen ersten bis vierten Teil aufgaben 321-324 mit niedrigerer Prioritätsstufe abgeschlos sen haben, bekommen sie bei der Anfrage nach der nächsten Teilaufgabe über den herkömmlichen Weg eine der neuen, höher priorisierten fünften bis siebten Teilaufgaben 331-333 zuge teilt. Beispielsweise kann die Ausgestaltung zum Einsatz kom men, wenn die ersten bis siebten Teilaufgaben 321-324, 331- 333 in dem ersten Arbeitspaket 305 und dem zweiten Arbeitspa ket 310 relativ klein sind und die Abarbeitung von den Pro zessorkernen demnach zügig erfolgen kann. Der Vorteil an die ser Ausgestaltung ist, dass der Rechendurchsatz ohne Abbruch oder Unterbrechung der ersten bis siebten Teilaufgabe 321- 324, 331-333 auf den beiden Parallelprozessorkernen 113, 114 am höchsten ist.

Die Ausführungsform, bei der die aktuell bearbeiteten ersten bis siebten Teilaufgaben 321-324, 331-333 unterbrochen und deren Zwischenergebnisse auf dem Zwischenergebnisspeicher ge sichert werden, kann einem guten Kompromiss zwischen Latenz und Rechendurchsatz entsprechen. Es ist möglich, die oben be schriebenen verschiedenen Ausgestaltungen der Unterbrechung, des sofortigen Abbruchs oder der passenden Einsortierung der ersten bis siebten Teilaufgabe miteinander zu kombinieren und sie situationsbedingt geeignet umzusetzen.

In einer Ausführungsform kann der Prioritätenverwalter 350 den ersten und zweiten Parallelprozessorkern 113, 114 aktiv über die Änderung des ersten Eintrags der ersten oder zweiten Prioritätsstufe 340, 345 in der Datenstruktur 355 informie ren. Damit können der erste und der zweite Parallelprozessor kern 113, 114 jeweils direkt beim entsprechenden ersten oder zweiten Arbeitspaket 305, 310 nach einer freien ersten bis siebten Teilaufgabe 321-324, 331-333 anfragen und frühzeitig mit deren Abarbeitung beginnen. Die Anfragen der jeweiligen Parallelprozessorkerne 113, 114 sind mithilfe der Bezugszei chen 520, 525, 545, 550 dargestellt. Auch kann der Prioritä tenverwalter 350 dahingehend ausgestaltet sein, dass der ers te und zweite Parallelprozessorkern 113, 114 selbst aktiv beim Prioritätenverwalter 350 anfragen, ob es eine Änderung in der Reihenfolge der Einträge der ersten und zweiten Prio ritätsstufe 340, 345 gibt. Das Anfragen des ersten und zwei ten Parallelprozessorkerns 113, 114 ist mithilfe der beiden Pfeile mit den Bezugszeichen 510, 515 angedeutet.

Denkbar ist weiterhin, dass die Anfragen des ersten und zwei ten Hauptprozessorkerns 111, 112 und des ersten und zweiten Parallelprozessorkerns 113, 114 an das erste oder zweite Ar beitspaket 305, 310 von einer zentralen Einrichtung gesteuert werden. Die Anfragen der jeweiligen Prozessorkerne sind mit hilfe der Pfeile mit den Bezugszeichen 520, 525, 530, 545, 550, 555 dargestellt. Die zentrale Einrichtung kann des Wei teren die Aufgabenverteilung der ersten bis siebten Teilauf gaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 des ersten und zweiten Arbeitspakets 305, 310 steuern. Ferner kann die zentrale Einrichtung dafür Sorge tragen, dass die Meldung der Erledigung aller ersten bis siebten Teilaufgaben 321-324, 331-333 aus der ersten und zweiten Menge an Teilaufgaben 320, 330 des ersten und zweiten Arbeitspakets 305, 310 an den Prioritätenverwalter 350 gelei tet wird.

Haben die erste und zweite Prioritätsstufe 340, 345 der ent sprechenden parallelen Bearbeitungsabschnitte in den Program men der ersten und zweiten Hauptprozessorkerne 111, 112 den gleichen Wert, so können sich der erste und zweite Hauptpro zessorkern 111, 112 den ersten und zweiten Parallelprozessor kern 113, 114 für die parallele Ausführung 360 der ersten bis siebten Teilaufgaben 321-324, 331-333 teilen.

Die bisherige Beschreibung hat sich darauf bezogen, dass der Wert der wenigstens einen Prioritätsstufe des parallelen Be arbeitungsabschnitts des entsprechenden Programms unverändert während eines Programmzyklus bleibt, um die Erläuterung der Erstellung der Arbeitspakete und des Zugriffs auf die Ar beitspakete sowie die Verwaltung der Prioritätsstufen der pa rallelen Bearbeitungsabschnitte der Programme zu vereinfa chen. Der Wert der wenigstens einen Prioritätsstufe der je weiligen parallelen Bearbeitungsabschnitte der Programme der Steuerungsaufgabe kann für die in den Fig. 1 und 2 gezeigten Ausführungsformen vom Prioritätenverwalter ebenso angepasst werden, wie es in den nachfolgenden Figuren, im Fall der Un terbrechung des parallelen Bearbeitungsabschnitts der Pro gramme beschrieben wird. Um den Rechendurchsatz der Steue rungsaufgabe zu erhöhen, ist es bei der Bewertung des Rechen durchsatzes für die Fig. 1 und 2 (sowie die nachfolgenden Fi guren) ferner möglich, die Rechenzeit des jeweiligen paralle len Bearbeitungsabschnitts der Programme der Steuerungsaufga be mit zu berücksichtigen und Teilaufgaben der entsprechenden Programme, die keine zwingende parallele Ausführung erfordern rein sequentiell auf dem zugeordneten Hauptprozessorkern ab zuarbeiten. Ferner ist es günstig, bei der Bewertung des Re chendurchsatzes der Steuerungsaufgabe die Rechenleistung der beiden Parallelprozessorkerne mit zu berücksichtigen, und ihnen im Fall der nicht vollständigen Ausnutzung ihrer Re chenleistung Teilaufgaben für die parallele Abarbeitung zuzu teilen. Dazu kann es erforderlich sein, dass der Prioritäten verwalter den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte der Programme geeignet an passt . Fig. 3 zeigt ein Schema eines Verfahrens 300 zur Datenverar beitung auf der SPS nach den Fig. 1 und 2. Als Ausgangspunkt dient ebenso wie in den Fig. 1 und 2 gezeigt wurde, der erste und zweite Hauptprozessorkern 111, 112 sowie der erste und zweite Parallelprozessorkern 113, 114. Es ist hingegen auch eine dazu abweichende Anzahl an Haupt- und/oder Parallelpro zessorkernen denkbar. Jedoch ist wenigstens ein Parallelpro zessorkern für eine parallele Ausführung 375, 380, 385, 390 der Teilaufgaben der jeweiligen parallelen Bearbeitungsab schnitte 303, 304 der Programme der Steuerungsaufgabe notwen dig. Wird eine zu den in den Fig. 1 bis 3 gezeigte, abwei chende Anzahl an Hauptprozessorkernen eingesetzt, so können sich die Anzahl der Arbeitspakete und die Anzahl der Teilauf gaben folglich unterscheiden. In dem in Fig. 3 gezeigten Aus führungsbeispiel gelangt zunächst der erste Hauptprozessor kern 111 im Programm an seinen parallelen Bearbeitungsab schnitt 303. Der parallele Bearbeitungsabschnitt ist mithilfe des obersten gestreiften horizontalen Balkens und der ge schweiften Klammer mit dem Bezugszeichen 303 angedeutet. Zu Beginn seines parallelen Bearbeitungsabschnitts 303 erstellt der erste Hauptprozessorkern 111 das erste Arbeitspaket mit der ersten bis vierten Teilaufgabe und der Referenz auf die erste Prioritätsstufe des zugeordneten parallelen Bearbei tungsabschnitts 303, wie oben beschrieben. An dieser Stelle wird auf eine explizite Beschreibung der Zuteilung der jewei ligen Teilaufgaben verzichtet, da sie in gleicher Weise er folgen kann, wie bereits in Fig. 2 beschrieben wurde.

Die erste bis vierte Teilaufgabe kann im parallelen Bearbei tungsabschnitt 303 des entsprechenden Programms auf dem ers ten Hauptprozessorkern 111 sequentiell ausgeführt werden, was mithilfe des Bezugszeichens 365 verdeutlicht wird. Im paral lelen Bearbeitungsabschnitt 303 des ersten Hauptprozessor kerns 111 kann die erste bis vierte Teilaufgabe zusätzlich zur sequentiellen Ausführung 365 von dem ersten und zweiten Parallelprozessorkern 113, 114 auch parallel ausgeführt wer den. Die parallele Ausführung der ersten bis vierten Teilauf- gäbe ist über die beiden unteren gestreiften Balken mit den Bezugszeichen 375 und 380 dargestellt. Zuerst sind nur die erste bis vierte Teilaufgabe des ersten Arbeitspakets des pa rallelen Bearbeitungsabschnitts 303 des ersten Hauptpro zessorkerns 111 verfügbar, welche daher konkurrenzlos und oh ne vorherige Unterbrechung von dem ersten und zweiten Paral lelprozessorkern 113, 114 abgearbeitet werden können.

Gelangt jedoch der zweite Hauptprozessorkern 112 im Programm an seinen parallelen Bearbeitungsabschnitt 304, so werden die Berechnungen der zuvor aktiv abgearbeiteten ersten bis vier ten Teilaufgaben auf dem ersten und zweiten Parallelpro zessorkern 113, 114 unterbrochen. Die Unterbrechung der Abar beitung der ersten bis vierten Teilaufgabe des parallelen Be arbeitungsabschnitts 303 des Programms, das auf dem ersten Hauptprozessorkern 111 ausgeführt wird, ist mithilfe des Be zugszeichens 366 dargestellt. Die Unterbrechung der Abarbei tung der ersten bis vierten Teilaufgabe des parallelen Bear beitungsabschnitts 303 des entsprechenden Programms kann nach einer der im Zusammenhang mit Fig. 2 erläuterten Möglichkei ten erfolgen. Gegebenenfalls können ermittelte Zwischenergeb nisse der Berechnungen an den Zwischenergebnisspeicher über geben und dort gesichert werden. Dieser Verwaltungsaufwand führt dazu, dass der erste und zweite Parallelprozessorkern 113, 114 nach dem Zeitpunkt der Unterbrechung der Abarbeitung der ersten bis vierten Teilaufgabe des parallelen Bearbei tungsabschnitts 303 des Programms, das auf dem ersten Haupt prozessorkern 111 ausgeführt wird, nicht umgehend mit der Ab arbeitung der Teilaufgaben des parallelen Bearbeitungsab schnitts 304 des entsprechenden Programms, das auf dem zwei ten Hauptprozessorkern 112 ausgeführt wird, beginnen können. Aufgrund des Verwaltungsaufwands kann die Abarbeitung der Teilaufgaben des parallelen Bearbeitungsabschnitts 304 des Programms, das auf dem zweiten Hauptprozessorkern 112 ausge führt wird, erst mit entsprechender zeitlicher Verzögerung erfolgen . Der zweite Hauptprozessorkern 112 erstellt zu Beginn seines parallelen Bearbeitungsabschnitts 304 im entsprechenden Pro gramm das zweite Arbeitspaket 310 mit der fünften bis siebten Teilaufgabe und der Referenz auf die Prioritätsstufe des zu geordneten parallelen Bearbeitungsabschnitts 304. Die fünfte bis siebte Teilaufgabe kann im parallelen Bearbeitungsab schnitt 304 des entsprechenden Programms auf dem zweiten Hauptprozessorkern 112 sequentiell ausgeführt werden, was mithilfe des Bezugszeichens 370 verdeutlicht wird. Im paral lelen Bearbeitungsabschnitt 304 des zweiten Hauptprozessor kerns 112 kann die fünfte bis siebte Teilaufgabe zusätzlich zur sequentiellen Ausführung 370 von dem ersten und zweiten Parallelprozessorkern 113, 114 auch parallel ausgeführt wer den. Die parallele Ausführung der fünften bis siebten Teil aufgabe ist über die beiden unteren gepunkteten Balken mit den Bezugszeichen 385, 390 dargestellt. In Fig. 3 wurde ange nommen, dass der Wert der zweiten Prioritätsstufe des paral lelen Bearbeitungsabschnitts 304 des entsprechenden Pro gramms, das auf dem zweiten Hauptprozessorkern 112 ausgeführt wird, höher ist, als der Wert der ersten Prioritätsstufe des entsprechenden parallelen Bearbeitungsabschnitts 303 des an deren Programms, das auf dem ersten Hauptprozessorkern 111 ausgeführt wird. Diese Annahme führt dazu, dass die Abarbei tung der ersten bis vierten Teilaufgabe des parallelen Bear beitungsabschnitts 303 des entsprechenden Programms auf dem ersten und zweiten Parallelprozessorkern 113, 114 unterbro chen wird.

Weitet man das dargestellte Ausführungsbeispiel in Fig. 3 auf weitere Haupt- und Parallelprozessorkerne aus, so ist er sichtlich, dass die Anzahl der Unterbrechungen bei der Abar beitung der entsprechenden Teilaufgaben der entsprechenden parallelen Bearbeitungsabschnitte der Programme auf den Pa rallelprozessorkernen zunehmen kann. Falls die Teilaufgaben der jeweiligen parallelen Bearbeitungsabschnitte 303, 304 der Programme hingegen eine nicht zwingende parallele Ausführung 375, 380, 385, 390 auf dem ersten und zweiten Parallelpro- zessorkern 113, 114 erfordern, so kann der dem jeweiligen pa rallelen Bearbeitungsabschnitt 303, 304 zugeordnete Wert der Prioritätsstufe dynamisch während des Programmzyklus ange passt werden. Im konkreten Beispiel kann der Wert der zweiten Prioritätsstufe vom Prioritätenverwalter um einen Faktor re duziert bzw. sofort auf einen minimalen Wert gesetzt werden, damit die fünfte bis siebte Teilaufgabe des parallelen Bear beitungsabschnitts 304 des entsprechenden Programms direkt sequentiell vom zweiten Hauptprozessorkern 112 abgearbeitet werden können, ohne dass die Abarbeitung der ersten bis vier ten Teilaufgaben 321-324 auf den beiden Parallelprozessorker nen 113, 114 unterbrochen werden muss. Der Vorteil an der Verringerung des Werts der Prioritätsstufe des parallelen Be arbeitungsabschnitts 304 des Programms, das auf dem zweiten Hauptprozessorkern 112 ausgeführt wird, ist, dass die Unter brechung der Abarbeitung der ersten bis vierten Teilaufgabe des parallelen Bearbeitungsabschnitts 303 des zugeordneten Programms, das auf dem ersten Hauptprozessorkern 111 ausge führt wird, dadurch vermieden werden kann. Somit ist es mög lich den Verwaltungsaufwand zu minimieren, wobei die dynami sche Anpassung des Werts der Prioritätsstufe des parallelen Bearbeitungsabschnitts der Programme vom Prioritätenverwalter erfolgt, wenn der Rechendurchsatz der Steuerungsaufgabe dadurch erhöht werden kann. Die Erhöhung des Rechendurchsat zes der Steuerungsaufgabe kann sich insbesondere positiv auf Programme mit einen hohen Wert der Prioritätsstufe des paral lelen Bearbeitungsabschnitts 303, 304 des Programms auswirken und kann zum Beispiel kürzere Deadlines ermöglichen. Auf die se Weise kann es möglich sein, die Arbeitsgeschwindigkeit der Maschine oder Anlage des Automatisierungssystems zu erhöhen.

Ferner kann mithilfe des Prioritätenverwalters die Echtzeit fähigkeit des Automatisierungssystems gewährleistet werden, da der Prioritätenverwalter die Anpassung der Werte der Prio ritätsstufen der jeweiligen parallelen Bearbeitungsabschnitte 303 der entsprechenden Programme in der Weise vornimmt, dass die Deadlines der Programme in jedem Fall eingehalten werden. Der Wert der wenigstens einen Prioritätsstufe kann beliebig verringert werden. Beispielsweise kann der Wert der Priori tätsstufe bei der ersten Unterbrechung des jeweiligen paral lelen Bearbeitungsabschnitts 303, 304 des Programms vom Prio ritätenverwalter unverändert bleiben. Nach der zweiten Unter brechung des entsprechenden parallelen Bearbeitungsabschnitts 303, 304 des Programms (nicht dargestellt) kann der Prioritä tenverwalter den Wert der Prioritätsstufe des zugeordneten parallelen Bearbeitungsabschnitts 303, 304 um einen Faktor reduzieren. Dabei kann der Wert der Prioritätsstufe des ent sprechenden parallelen Bearbeitungsabschnitts 303, 304 des Programms zum Beispiel umso stärker reduziert werden, je häu figer der jeweilige parallele Bearbeitungsabschnitt 303, 304 mit den enthaltenen Teilaufgaben des Programms unterbrochen wird .

Der Prioritätenverwalter kann die Anpassung des Werts der Prioritätsstufe des parallelen Bearbeitungsabschnitts 303,

304 dann vornehmen, wenn die Teilaufgaben aufgrund von ande ren Teilaufgaben eines weiteren Programms mit höherer Priori tätsstufe auf den beiden Parallelprozessorkern 113, 114 un terbrochen werden. Der Prioritätenverwalter kann den Wert der Prioritätsstufe des parallelen Bearbeitungsabschnitts 303,

304 des entsprechenden Programms für die unterbrochenen Teil aufgaben auf den beiden Parallelprozessorkern 133, 114 anpas sen, um einer weiteren Unterbrechung der Teilaufgaben auf den beiden Parallelprozessorkern 113, 114 vorzubeugen und in die sem Zusammenhang für möglichst wenig Verwaltungsaufwand für die noch ausstehenden Teilaufgaben in dem jeweiligen Arbeits paket zu sorgen.

Ferner kann der Prioritätenverwalter auch den Wert der Prio ritätsstufe der parallelen Bearbeitungsabschnitte 303, 304 der Programme anpassen, der für die Unterbrechung der Abar beitung der Teilaufgaben der parallelen Bearbeitungsabschnit te der Programme verantwortlich ist. Alternativ dazu kann der Prioritätenverwalter den Wert der Prioritätsstufe der paral- leien Bearbeitungsabschnitte 303, 304 der entsprechenden Pro gramme dann anpassen, wenn sich die jeweilige Prioritätsstufe als Eintrag in der Datenstruktur im Datenstrukturspeicher be findet und gerade aktiv keine Teilaufgaben aus dem zugeordne ten parallelen Bearbeitungsabschnitt 303, 304 von den beiden Haupt- und Parallelprozessorkernen 111-114 abgearbeitet wer den. Ferner kann der Prioritätenverwalter den Wert der Prio ritätsstufe der parallelen Bearbeitungsabschnitte 303, 304 der entsprechenden Programme dann anpassen, wenn Teilaufgaben im jeweiligen parallelen Bearbeitungsabschnitt 303, 304 des Programms aktiv von den Prozessorkernen abgearbeitet werden und im zugehörigen Arbeitspaket freibleibende, unbearbeitete Teilaufgaben vorhanden sind. Im diesem Fall betrifft die An passung des Werts der Prioritätsstufe des parallelen Bearbei tungsabschnitts 303, 304 die freibleibenden Teilaufgaben des Arbeitspakets .

Von Vorteil bei der Anpassung des Werts der Prioritätsstufe der parallelen Bearbeitungsabschnitte 303, 304 der jeweiligen Programme ist, dass diese vorübergehend erfolgen kann. Die dynamische Anpassung des Werts der wenigstens einen Priori tätsstufe muss nicht für den gesamten Programmzyklus in glei cher Weise erfolgen. Der Wert der Prioritätsstufe kann bei spielsweise für einen neuen Programmzyklus wieder auf den vorgegebenen Wert zurückgesetzt werden und für einen weiteren Programmzyklus erneut abgeändert werden. Auch innerhalb des Programmzyklus kann der Wert der wenigstens einen Prioritäts stufe der parallelen Bearbeitungsabschnitte der Programme vom Prioritätenverwalter beliebig oft angepasst werden. In diesem Zusammenhang ist es weiterhin möglich, den Wert der wenigs tens einen Prioritätsstufe der parallelen Bearbeitungsab schnitte 303, 304 der jeweiligen Programme für den nächsten Programmzyklus zu erhöhen, falls die Teilaufgaben im vorange henden Programmzyklus rein sequentiell in den jeweiligen Pro grammen abgearbeitet wurden, damit die Deadlines der Program me eingehalten werden können oder um dafür Sorge zu tragen, dass die erste bis siebte Teilaufgabe der jeweiligen paralle- len Bearbeitungsabschnitte der Programme für den jeweiligen nächsten Programmzyklus parallel ausgeführt werden. Gleich zeitig kann so sichergestellt werden, dass die Rechenleistung der beiden Parallelprozessorkerne 113, 114 bestmöglich ausge nutzt wird.

Ebenso denkbar ist eine Ausführungsform, in der ein Programm, welches umgehend ausgeführt werden muss (zum Beispiel auf grund einer kurzen Programmzyklus-Zeit und Deadline) , mit ei nem sehr hohen Wert der Prioritätsstufe des parallelen Bear beitungsabschnitts des Programms vom Prioritätenverwalter versehen wird, und dieser Wert der Prioritätsstufe vom Prio ritätenverwalter trotz einer möglichen Unterbrechung des pa rallelen Bearbeitungsabschnitts 303, 304 mit entsprechender Prioritätsstufe für den nächsten Programmzyklus weiterhin un verändert bleibt. Auch kann der Wert der Prioritätsstufe des jeweiligen parallelen Bearbeitungsabschnitts 303, 304 des Programms mit der entsprechenden ersten bis siebten Teilauf gabe bei einer Unterbrechung des jeweiligen parallelen Bear beitungsabschnitts erhöht werden, damit der entsprechende pa rallele Bearbeitungsabschnitt 303, 304 mit der jeweiligen ersten bis siebten Teilaufgabe des Programms im nächsten Pro grammzyklus nicht mehr unterbrochen wird.

Die genannten Möglichkeiten für die Anpassung des Werts der Prioritätsstufe des parallelen Bearbeitungsabschnitts 303,

304 des Programms bezogen sich jeweils darauf, den Verwal tungsaufwand durch eine geringe Anzahl an Unterbrechungen der parallelen Bearbeitungsabschnitte 303, 304 der Programme zu reduzieren und eine bestmögliche Ausnutzung der Rechenleis tung der Prozessorkerne bereitzustellen. Die Anzahl der Un terbrechungen der parallelen Bearbeitungsabschnitte 303, 304 und ihre zeitliche Unterbrechungsdauer sowie die genutzte Re chenleistung der Prozessorkerne kann von der Steuerungsein richtung der SPS ermittelt werden, wenn der zu erwartende Re chendurchsatz der Steuerungseinrichtung bewertet werden soll. Ebenso kann der zu erwartende Rechendurchsatz auch anhand der Rechenzeit der parallelen Bearbeitungsabschnitte 303, 304 der Programme der Steuerungsaufgabe ermittelt werden. Das heißt Teilaufgaben der entsprechenden Programme, die keine zwingen de parallele Ausführung 375, 380, 385, 390 erfordern, können ebenso rein sequentiell auf dem zugeordneten Hauptprozessor kern abgearbeitet werden, wenn die sequentielle Rechenzeit kürzer ist, als die Rechenzeit der Teilaufgaben des paralle len Bearbeitungsabschnitts 303, 304 mit möglichen Unterbre chungen des parallelen Bearbeitungsabschnitts 303, 304. Dazu kann der Prioritätenverwalter den Wert der wenigstens einen Prioritätsstufe der parallelen Bearbeitungsabschnitte 303,

304 der Programme reduzieren bzw. minimieren, damit die Teil aufgaben der parallelen Bearbeitungsabschnitte 303, 304 gege benenfalls sequentiell abgearbeitet werden, falls sie nicht notwendigerweise parallel ausgeführt werden müssen. Die Steu erungsaufgabe muss zur Bewertung des Rechendurchsatzes im ge nannten Fall zudem prüfen, ob die Rechenleistung der beiden Parallelprozessorkerne 113, 114 durch eine sequentielle Abar beitung der Teilaufgaben der parallelen Bearbeitungsabschnit te 303, 304 weiterhin bestmöglich genutzt wird.

Fig. 4 zeigt ein Ablaufdiagramm zur dynamischen Anpassung we nigstens einer Prioritätsstufe eines parallelen Bearbeitungs abschnitts eines Programms nach Fig. 3, wobei die Anpassung des Werts der wenigstens einen Prioritätsstufe des parallelen Bearbeitungsabschnitts des entsprechenden Programms der Steu erungsaufgabe vom Prioritätenverwalter 350 in den Fig. 1 und 2 erfolgt. Ein erster Schritt 401 zeigt den Start der dynami schen Anpassung des Werts der wenigstens einen Prioritätsstu fe des parallelen Bearbeitungsabschnitts des entsprechenden Programms an. In einem zweiten Schritt 402 werden die Start werte der ersten bis k-ten Prioritätsstufe der parallelen Be arbeitungsabschnitte der Programme vom Prioritätenverwalter für den jeweiligen Programmzyklus festgelegt, wobei k eine ganze, positive Zahl echt größer eins sein kann. Die Werte der Prioritätsstufen der jeweiligen parallelen Bearbeitungs- abschnitte der Programme können sich um ganzzahlige Werte handeln .

In einem nachfolgenden dritten Schritt 403 wird in einer Ver zweigung geprüft, ob die Abarbeitung der ersten bis vierten Teilaufgabe des ersten Arbeitspakets im entsprechenden paral lelen Bearbeitungsabschnitt (mit zugeordneter erster Priori tätsstufe) des Programms aufgrund von Teilaufgaben des k-ten Arbeitspakets im jeweiligen parallelen Bearbeitungsabschnitt (mit zugeordneter k-ter Prioritätsstufe) unterbrochen wurden, wobei der Wert der k-ten Prioritätsstufe höher ist, als der Wert der ersten Prioritätsstufe. Wenn dies nicht der Fall ist, erfolgt ein Rücksprung zu dem zweiten Schritt 402, also dem Festlegen der jeweiligen Startwerte der Prioritätsstufen der parallelen Bearbeitungsabschnitte der Programme durch den Prioritätenverwalter. Ergibt die Prüfung auf Unterbrechung der Abarbeitung der Teilaufgaben im dritten Schritt 403 ein positives Ergebnis, so wird in einem vierten Schritt 404 fer ner geprüft, ob die unterbrochenen ersten bis vierten Teil aufgaben des ersten Arbeitspakets des parallelen Bearbei tungsabschnitts des entsprechenden Programms der Steuerungs aufgabe sequentiell ausgeführt werden sollen.

Beispielsweise kann der Prioritätenverwalter bei Programmen mit sehr kurzer Programmzyklus-Zeit den Wert der Prioritäts stufe der parallelen Bearbeitungsabschnitte der Programme di rekt bei der ersten Unterbrechung der entsprechenden Teilauf gaben auf den minimalen Wert setzen, damit die Teilaufgaben sequentiell vom jeweiligen Hauptprozessorkern abgearbeitet werden. Setzt der Prioritätenverwalter hingegen bei der ers ten Unterbrechung der Abarbeitung der Teilaufgaben der paral lelen Bearbeitungsabschnitte der Programme den Wert jeglicher Prioritätsstufen auf den minimalen Wert, so sind die Paral lelprozessorkerne gegebenenfalls nicht mehr voll ausgelastet. Das heißt, es ist freie Rechenzeit verfügbar, wenn die höher priorisierten parallelen Bearbeitungsabschnitte mit Teilauf gaben fertig abgearbeitet und noch keine weiteren höher prio- risierten Teilaufgaben eines weiteren Programms mit paralle lem Bearbeitungsabschnitt für die Abarbeitung auf den Paral lelprozessorkernen vorhanden sind. Diese verfügbare Zeit sollte von den beiden Parallelprozessorkernen im Normalfall für die Abarbeitung von niedriger priorisierten parallelen Bearbeitungsabschnitten mit Teilaufgaben verwendet werden. Erst wenn die Steuerungseinheit bei der Bewertung des Rechen durchsatzes merkt, dass die niedriger priorisierten paralle len Bearbeitungsabschnitte mit Teilaufgaben eines Arbeitspa kets trotz mehrfacher Verringerung des Werts der Prioritäts stufe häufig unterbrochen wurden, kann sie den Prioritäten verwalter dazu anstoßen, für die unterbrochenen Teilaufgaben der parallelen Bearbeitungsabschnitte diese minimale Priori tätsstufe zu setzen.

Sind die ersten bis vierten Teilaufgaben des ersten Arbeits pakets des parallelen Bearbeitungsabschnitts des Programms auf die Parallelisierung angewiesen, um die Deadline des Pro gramms einzuhalten, so passt der Prioritätenverwalter den Wert der ersten Prioritätsstufe (und/oder gegebenenfalls der k-ten Prioritätsstufe) des parallelen Bearbeitungsabschnitts des entsprechenden Programms der Steuerungsaufgabe in einem fünften Schritt 406 entsprechend an. Die Anpassung des Werts der ersten und/oder k-ten Prioritätsstufe des parallelen Be arbeitungsabschnitts des entsprechenden Programms von dem Prioritätenverwalter kann in einem Verringern oder Erhöhen des Werts der Prioritätsstufe liegen, analog zu der Beschrei bung in Fig. 3, um weiteren möglichen Unterbrechungen des pa rallelen Bearbeitungsabschnitts des Programms mit der ersten bis vierten Teilaufgabe vorzubeugen bzw. deren Anzahl zu re duzieren, um den Verwaltungsaufwand zu minimieren und den Re chendurchsatz der Steuerungsaufgabe zu erhöhen.

Wird die Prüfung im vierten Schritt 404 hingegen bejaht, so setzt der Prioritätenverwaltern in einem sechsten Schritt 405 den Wert der ersten Prioritätsstufe des parallelen Bearbei tungsabschnitts des Programms auf einen minimalen Wert, damit die Teilaufgaben des parallelen Bearbeitungsabschnitts des Programms für den aktuellen Programmzyklus direkt rein se quentiell auf dem entsprechenden Hauptprozessorkern ausge führt werden können. Die Verzweigung im vierten Schritt 404 führt für die beiden Möglichkeiten, die oben beschrieben wur den, auf einen siebten Schritt 407, einer weiteren Verzwei gung. In der Verzweigung im siebten Schritt 407 prüft der Prioritätenverwalter, ob der parallele Bearbeitungsabschnitt des jeweiligen Programms beendet ist. Ist dies nicht der Fall, das heißt, dauert die Abarbeitung der ersten bis vier ten Teilaufgaben des parallelen Bearbeitungsabschnitts des Programms noch an, so erfolgt ein Rücksprung zum dritten Schritt 403, in dem geprüft wird, ob die erste bis vierte Teilaufgabe des ersten Arbeitspakets des parallelen Bearbei tungsabschnitts des Programms aufgrund von Teilaufgaben des k-ten Arbeitspakets mit höherem Wert der k-ten Prioritätsstu fe unterbrochen wurden. Die nachfolgenden Schritte der Ver zweigung des dritten Schritts 403 erfolgen dann wie bereits beschrieben .

Ergibt die Prüfung im siebten Schritt 407, dass der parallele Bearbeitungsabschnitt beendet ist, so führt die Verzweigung direkt auf einen achten Schritt 408. Im achten Schritt 408 prüft der Prioritätenverwalter, ob der Wert der angepassten ersten Prioritätsstufe des parallelen Bearbeitungsabschnitts des Programms für den nächsten Programmzyklus beibehalten werden soll. Falls die Prüfung des Prioritätenverwalters im achten Schritt 408 zu einem positiven Ergebnis führt, so wird der Wert der angepassten ersten Prioritätsstufe des paralle len Bearbeitungsabschnitts des Programms für den nächsten Programmzyklus beibehalten und der achte Schritt 408 zurück geführt auf die Verzweigung des dritten Schritts 403. Im dritten Schritt 403 erfolgt dann die Prüfung, ob die Abarbei tung der ersten bis vierten Teilaufgabe des ersten Arbeitspa kets des parallelen Bearbeitungsabschnitts des Programms auf grund von Teilaufgaben des k-ten Arbeitspakets des entspre chenden parallelen Bearbeitungsabschnitts mit höherer k-ter Prioritätsstufe unterbrochen wurde. Die nachfolgenden Prü fungsschritte können in der Weise wie bereits beschrieben er folgen .

Soll der Wert der angepassten ersten Prioritätsstufe des pa rallelen Bearbeitungsabschnitts des Programms für den nächs ten Programmzyklus nicht beibehalten werden, so setzt der Prioritätenverwalter den Wert der ersten Prioritätsstufe im einem neunten Schritt 409 auf den vorgegebenen Wert, also den Startwert zurück. Die dynamische Anpassung des Werts der Pri oritätsstufe des parallelen Bearbeitungsabschnitts des Pro gramms ist in einem zehnten Schritt 410 beendet. Beispiels weise kann dies der Fall sein, wenn die entsprechenden Ar beitspakete nach erfolgter Abarbeitung der Teilaufgaben ge löscht und die jeweiligen Einträge der Prioritätsstufen der parallelen Bearbeitungsabschnitte aus der Datenstruktur ent fernt wurden.

Die einzelnen ersten bis zehnten Schritte 401 bis 410 können vom Prioritätenverwalter und gegebenenfalls der Steuerungs einrichtung geprüft werden, da die Steuerungseinrichtung den zu erwartenden Rechendurchsatz der Steuerungsaufgabe laufend bewertet und den Prioritätenverwalter gegebenenfalls zur An passung des Werts der Prioritätsstufe des parallelen Bearbei tungsabschnitts des jeweiligen Programms anstößt.

Die Erfindung wurde im Detail durch bevorzugte Ausführungs beispiele beschrieben. Sie ist jedoch nicht durch die offen barten Beispiele eingeschränkt, da vom Fachmann andere Varia tion daraus abgeleitet werden können, ohne dabei den Schutz umfang der Erfindung zu verlassen. Bezugs zeichenliste

100 Speicherprogrammierbare Steuerung

110 Datenverarbeitungseinrichtung

111 erster Hauptprozessorkern

112 zweiter Hauptprozessorkern

113 erster Parallelprozessorkern

114 zweiter Parallelprozessorkern

120 Steuerungseinrichtung

130 Kommunikationsschnittstelle

200 Maschine/Anlage

210 Aktoren

220 Sensoren

300 Verfahren zur Datenverarbeitung auf der SPS

303 paralleler Bearbeitungsabschnitt des ersten Haupt prozessorkerns

304 paralleler Bearbeitungsabschnitt des zweiten Haupt prozessorkerns

310 zweites Arbeitspaket

320 erste Menge an Teilaufgaben

330 zweite Menge an Teilaufgaben

321 erste Teilaufgabe

322 zweite Teilaufgabe

323 dritte Teilaufgabe

324 vierte Teilaufgabe

331 fünfte Teilaufgabe

332 sechste Teilaufgabe

333 siebte Teilaufgabe

340 erste Prioritätsstufe

345 zweite Prioritätsstufe 350 Prioritätenverwalter

355 DatenStruktur

3 60 Parallele Ausführung

3 65 Sequentielle Ausführung des ersten Hauptprozessor kerns

366 Unterbrechung

37 0 Sequentielle Ausführung des zweiten Hauptprozessor kerns

375 erste parallele Ausführung des ersten Parallelpro zessorkerns

38 0 erste parallele Ausführung des zweiten Parallelpro zessorkerns

385 zweite parallele Ausführung des ersten Parallelpro zessorkerns

3 90 zweite parallele Ausführung des zweiten Parallel prozessorkerns

4 0 0 Ablaufdiagramm zur dynamischen Anpassung einer Pri- oritätsstufe

4 0 1 Start

4 02 Startwerte erste bis k-te Prioritätsstufe

4 03 Teilaufgaben des ersten Arbeitspakets aufgrund von

Teilaufgaben des k-ten Arbeitspakets mit einer hö heren Prioritätsstufe unterbrochen?

4 04 Teilaufgaben des ersten Arbeitspakets auch sequen tiell ausführbar?

4 05 Setzte jeweilige Prioritätsstufe auf einen minima len Wert

4 0 6 Reduziere oder Erhöhe den Wert der ersten und/oder k-ten Prioritätsstufe

4 07 paralleler Bearbeitungsabschnitt beendet?

4 0 8 Wert der jeweiligen angepassten Prioritätsstufe für den nächsten Programmzyklus beibehalten? 409 Setzte Wert der jeweiligen Prioritätsstufe auf den entsprechenden Startwert

410 Ende 500 erster Pfeil

505 zweiter Pfeil

510 dritter Pfeil

515 vierter Pfeil

520 fünfter Pfeil

525 sechster Pfeil

530 siebter Pfeil

535 achter Pfeil

540 neunter Pfeil

545 zehnter Pfeil

550 elfter Pfeil

555 zwölfter Pfeil

600 Erstellung von Arbeitspaketen mit Teilaufgaben und

Verwaltung der Prioritätsstufen