-
Die vorliegende Erfindung betrifft ein Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung mit einem multitaskingfähigen Betriebssystem, insbesondere einer speicherprogrammierbaren Steuerung (SPS), sowie eine Steuereinrichtung und ein Computerprogramm.
-
Stand der Technik
-
Speicherprogrammierbare Steuerungen sind in unterschiedlichen Varianten bekannt. Es handelt sich hierbei um Geräte, die zur Steuerung oder Regelung einer Maschine oder Anlage eingesetzt und auf digitaler Basis programmiert werden. Speicherprogrammierbare Steuerungen haben die in der Vergangenheit verwendeten, fest verdrahteten (verbindungsprogrammierten) Steuerungen abgelöst und arbeiten wie diese primär zustandsorientiert.
-
Die europäische Norm EN 61131, die der internationalen Norm IEC 61131 entspricht, behandelt Grundlagen von speicherprogrammierbaren Steuerungen und beinhaltet in Teil 3 (IEC/EN 61131-3) Definitionen bezüglich in speicherprogrammierbaren Steuerungen verwendeter Programmiersprachen.
-
In der EN/IEC 61131-3 sind die Programmiersprachen bzw. -vorschriften ”Anweisungsliste” (Instruction List, IL, AWL), ”Kontaktplan” (Letter Diagram, LD, KOP), ”Funktionsbausteinsprache” (Function Block Diagram, FBD, FBS), ”Ablaufsprache” (Sequential Function Chart, SFC, AS) und ”Strukturierter Text” (Structured Text, ST) definiert. Insbesondere die Programmiersprache ST lehnt sich an bekannte Programmierhochsprachen an und wird auch als Structured Control Language bezeichnet. Die Sprachen IL und ST sind textbasiert, bei den übrigen Sprachen (LD, FBD, SFC) handelt es sich um grafische Formen. In sämtlichen der genannten Sprachen können Funktionen und Funktionsblöcke verwendet werden, welche zuvor in einer anderen Sprache definiert und/oder vom Hersteller einer entsprechenden speicherprogrammierbaren Steuerung in Form von Softwarebibliotheken (in binärer Form auch ohne Quelltext) zur Verfügung gestellt werden.
-
Bei speicherprogrammierbaren Steuerungen ist das Steuerungsprogramm, das vom Benutzer definiert wird, in einem speziellen elektronisch lesbaren Speicher abgelegt. Die Programmverarbeitung in einer speicherprogrammierbaren Steuerung erfolgt durch die zentrale Recheneinheit (CPU), wobei in der Regel eine zyklische Bearbeitung von Anweisungen erfolgt. Hierbei übernimmt die speicherprogrammierbare Steuerung zunächst die Signalzustände der Eingänge, wodurch das Prozessabbild der Eingänge erneuert wird. In einem nächsten Schritt wird ein Anwenderprogramm Anweisung für Anweisung abgearbeitet. Bei einer hierzu erforderlichen Abfrage der Signalzustände der Eingänge wird auf das zuvor erzeugte Prozessabbild zugegriffen. Nach schrittweiser Abarbeitung der Anweisungen wird das Prozessabbild der Ausgänge in Form des aktuellen Zustands übertragen, der Zyklus ist damit beendet. Die dargestellte Reihenfolge (Eingangsabbild, Verarbeitung, Ausgangsabbild) wird typischerweise innerhalb einer Task ausgeführt. Die speicherprogrammierbare Steuerung beginnt anschließend mit der Ausführung der nächst priorisierten Task. Die genannte zyklische Programmbearbeitung kann in Form synchroner (fester, also isochroner) oder asynchroner Zyklen erfolgen.
-
Speicherprogrammierbare Steuerungen können darüber hinaus ereignisgesteuert, statusgesteuert oder freilaufend arbeiten.
-
Bei freilaufenden Tasks innerhalb einer speicherprogrammierbaren Steuerung erfolgt die Abarbeitung im ”Round Robin”-Verfahren auf niedrig priorisierter Ebene. Die Abarbeitungsfolge entspricht der oben genannten zyklischen Bearbeitung, es ist jedoch keine Zykluszeit definiert. Daher können im Vergleich zu zyklischen Tasks sehr lange Verarbeitungszeiten auftreten, wodurch das Problem entstehen kann, dass die Eingangsabbilder ”veralten” und die Ausgangsabbilder nicht rechtzeitig erneuert werden. Daher muss, wie unten weiter ausgeführt, insbesondere die zuvor erläuterte Erneuerung des Eingangsprozessabbilds sowie die Übertragung des Ausgangsprozessabbilds unabhängig hiervon (beispielsweise in einer nebenläufigen Task) erfolgen.
-
Insbesondere bei der zyklischen Abarbeitung von Anweisungen in speicherprogrammierbaren Steuerungen tritt das Problem auf, dass häufig die Arbeitszeit eines Prozessors der speicherprogrammierbaren Steuerung nicht optimal ausgenutzt wird, weil in der Taskverwendung nicht zwischen Prozessdatenverarbeitung (zyklische, höher priorisierte Tasks) und Ablaufsteuerung (sequentielle, niederpriorisierte, freilaufende Tasks) unterschieden wird. Vielmehr wird die Ablaufsteuerung durch den Einsatz einer Schrittkettenverwaltung bzw. SFC (AS) innerhalb der zyklischen Tasks realisiert. Daher muss die Priorisierung (Zyklus-Zeit) der Tasks so ausgelegt werden, dass immer alle Tasks ihre maximale Rechenzeit (Watchdog-Zeit) einhalten können. Diese „Worst Case”-Betrachtung führt zur ineffektiven Nutzung der Rechenzeit, da im Normalzustand eine geringere Rechenzeit benötigt wird und die dann ungenutzte Rechenzeit nahezu verloren geht. Zudem ergibt sich bei der Programmierung der Schrittkette bzw. in der Ablaufsprache ein erheblicher Mehraufwand gegenüber sequentiell arbeitenden Befehlen, da diese die Weiterschaltbedingungen implizit realisieren.
-
In Rechnersystemen sind zur Vergabe von Rechenzeit an Tasks sogenannte Multitasking-Funktionen verfügbar. Multitasking- bzw. Mehrprozessbetrieb bezeichnet die nebenläufige Ausführung mehrerer Aufgaben bzw. Tasks durch ein Betriebssystem. Hierzu werden unterschiedliche Prozesse in vorgegebener Reihenfolge bzw. Priorität, zyklisch wiederholend oder freilaufend aktiviert, so dass der Eindruck einer gleichzeitigen Abarbeitung entsteht.
-
Es ist wünschenswert, eine Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung, insbesondere in einer speicherprogrammierbaren Steuerung, anzugeben, bei der unter Verwendung bekannter Programmiersprachen, insbesondere Structured Text, eine nicht blockierende Ausführung insbesondere freilaufender Tasks in Form eines Multitaskings ermöglicht wird.
-
Offenbarung der Erfindung
-
Erfindungsgemäß wird ein Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung mit einem multitaskingfähigen Betriebssystem, insbesondere einer speicherprogrammierbaren Steuerung, sowie eine Steuereinrichtung und ein Computerprogramm mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Bevorzugte Ausgestaltungen sind in den jeweiligen abhängigen Ansprüchen angegeben.
-
Vorteile der Erfindung
-
Durch die vorliegende Erfindung kann beispielsweise eine sequentielle Programmierung im Wesentlichen innerhalb der Vorgaben der Norm EN/IEC 6113-3 mittels der Programmiersprache ”Structured Text” und unter Verwendung eines kooperativen Multitaskingmodells realisiert werden. Diese Programmierung kann zur Abarbeitung sogenannter freilaufender Tasks verwendet werden. Insbesondere kann die Abarbeitung von Anweisungen einer Ablaufsteuerung verbessert werden. Durch die Erfindung ist eine Ablaufsteuerung wesentlich kompakter zu programmieren. Die vom Programmierer zu erzeugende Programmcodemenge wird erheblich verringert. Die Prozessorzeit wird besser auf die einzelnen Tasks verteilt.
-
Eine herkömmliche sequentielle Abarbeitung von Anweisungen in freilaufenden Tasks in einer SPS erfolgt blockierend. Bei der sequentiellen Abarbeitung, welche einer Maschinensequenz bzw. einem Maschinenablauf entspricht, wird an den Stellen bzw. zu Programmschritten, an denen Aktionen (z. B. Bewegungs- oder Verfahrbefehle) eingeleitet werden, gewartet, bis die Ausführung der Aktion quittiert wird. An diesen Stellen entstehen Blockaden sowohl der jeweiligen Task als auch aller anderen nebenläufigen Tasks. Diese Blockade der anderen nebenläufigen Tasks kann durch die erfindungsgemäße Lösung vermieden werden.
-
Die Grundlage für die Realisierung der vorliegenden Erfindung kann beispielsweise eine speicherprogrammierbare Steuerung herkömmlicher Bauart sein, die ein Betriebssystem aufweist, welches multitaskingfähig ist, d. h. das über Betriebssystemaufrufe verfügt, die das Betriebssystem dazu veranlassen, die jeweilige, momentan abgearbeitete Task zugunsten einer anderen zu unterbrechen, falls die Task oder eine übergeordnete Einheit (Watchdog) dies signalisiert. Ein derartiges Umschalten von Tasks (Task switching) kann beispielsweise dann erfolgen, wenn in einer Task ein Wartezustand entsteht (Warten auf ein Ereignis) und beispielsweise deshalb eine Betriebssystemfunktion wait() aufgerufen wird.
-
Im Rahmen der vorliegenden Erfindung sollen beispielsweise freilaufende Tasks verwendet werden, die geeignet sind, die Restrechenzeit einer speicherprogrammierbaren Steuerung bzw. eines Prozessors in einer solchen Steuerung optimal auszulasten.
-
Die Umschaltlogik, wie sie im Rahmen dieser Anmeldung beispielhaft vorgestellt wird, entspricht dabei vorteilhafterweise dem an sich bekannten ”kooperativen Multitasking”. Das kooperative Multitasking bezeichnet einen Multitaskingvorgang, bei dem jeder Prozess ”freiwillig” die Kontrolle an den Betriebssystemkern zurückgibt, wenn dieser Prozess keine Rechenzeit mehr benötigt. Es ist also jedem Prozess selbst überlassen, wann er die Kontrolle an den Kern zurückgibt.
-
Kooperatives Multitasking kann einfach realisiert werden, wenn die jeweiligen Prozesse zuverlässig die Kontrolle an den Kern zurückgeben. Sobald ein einzelner Prozess bzw. eine Task jedoch seine Kooperation abbricht (beispielsweise aufgrund einer Fehlfunktion), die Kontrolle also nicht an das Betriebssystem zurückgibt, kann dies einen Stillstand aller beteiligten, freilaufenden Tasks zur Folge haben. Gemäß einer bevorzugten Ausgestaltung wird daher vorgeschlagen, eine Watchdogfunktion vorzusehen, um eine zwangsweise Unterbrechung einer Task zugunsten einer anderen zu ermöglichen.
-
Im Rahmen der vorliegenden Erfindung kann eine Umschaltung zwischen Tasks vorteilhafterweise immer an Positionen bzw. zu Programmschritten erfolgen, an dem ein jeweiliger Prozess bzw. Task auf ein Ereignis, d. h. beispielsweise die Ausführung einer Aufgabe und/oder eines Befehls wartet. Durch diese Maßnahme ergibt sich vorteilhafterweise eine optimale Vergabe der Prozessorzeit. Für die Umsetzung der erfindungsgemäßen Maßnahmen werden vorteilhafterweise Standardbefehle (Standard-Motion-Befehle) in einer jeweils neuen Funktion gekapselt, wobei innerhalb der gekapselten Funktion ein oder mehrere Betriebssystemaufrufe zugeordnet bereitgestellt werden. An den Wartestellen wird dann die Bibliotheksfunktion (Betriebsystemfunktion) zum Freigeben der Prozessorzeit aufgerufen.
-
Eine derartige Funktion zur Freigabe der Prozessorzeit, wie etwa waitTime(), steht beispielsweise auch für Kontrollstrukturen wie WHILE-Schleifen zur Verfügung, um dem Anwender bzw. Programmierer, insbesondere bei Programmierung einer Endlosschleife ohne Abbruchbedingungen, ein Freigeben der Prozessorzeit zu ermöglichen.
-
Eine erfindungsgemäß ebenfalls vorgesehene Steuereinrichtung, insbesondere eine speicherprogrammierbare Steuerung, weist sämtliche Mittel zur Durchführung eines erfindungsgemäßen Verfahrens wie zuvor erläutert auf.
-
Das erfindungsgemäß vorgesehene Computerprogramm umfasst Programmcodemittel, insbesondere wenigstens eine Anweisungen und Betriebssystemaufrufe einkapselnde Struktur, die anhand eines erfindungsgemäßen Verfahrens bereitgestellt sind. Geeignete Datenträger für ein solches Computerprogramm sind insbesondere Disketten, Festplatten, Flash-Speicher, EEPROM, CD-ROM, DVDs usw. Auch ein Download eines derartigen Programms über ein Computernetz (Internet, Intranet, Systemnetz usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Es versteht sich, dass die vorstehend genannten und die nachfolgend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung ausführlich beschrieben.
-
Figurenbeschreibung
-
1 zeigt eine periodische und eine zyklische Abarbeitung von Anweisungen in einer speicherprogrammierbaren Steuerung gemäß dem Stand der Technik in schematischer Darstellung.
-
2 zeigt eine Abarbeitung einer freilaufenden Task in einer Bewegungssteuerung gemäß dem Stand der Technik in schematischer Darstellung.
-
3 zeigt eine sequentielle, nicht blockierende Abarbeitung von Anweisungen in nebenläufigen Tasks in Steuereinrichtung gemäß einer besonders bevorzugten Ausführungsform der Erfindung in schematischer Darstellung.
-
4 zeigt eine sequentielle, nicht blockierende Abarbeitung von Anweisungen in nebenläufigen Tasks in Steuereinrichtung gemäß einer weiteren besonders bevorzugten Ausführungsform der Erfindung in schematischer Darstellung.
-
In 1 ist die übliche, aus dem Stand der Technik bekannte Abarbeitung von Anweisungen in speicherprogrammierbaren Steuerungen dargestellt. In Schema 100 ist dabei eine periodische, im Schema 110 eine zyklische Abarbeitung von Anweisungen bzw. Befehlen abgebildet, wobei im Fall der periodischen Abarbeitung 100 eine Zykluszeit t als synchron angegeben ist. In der zyklischen Abarbeitung 110 variiert die Zykluszeit t1, t2, t3 hingegen entsprechend der Dauer der jeweiligen Verarbeitung eines Befehls V. Wie allgemein bekannt und zuvor erläutert, liest eine speicherprogrammierte Steuerung zu Beginn eines jeden Zyklus ein Eingangsabbild E und schreibt am Ende eines Zyklus, mit A bezeichnet, ein Ausgangsabbild. Zwischen dem Lesen des Eingangsabbilds und dem Schreiben des Ausgangsabbilds erfolgt die Verarbeitung eines Benutzerprogramms bzw. die Ausführung von Befehlen V.
-
Aus Sichtweise eines klassischen Programmierers einer speicherprogrammierbaren Steuerung wird das Programm mittels einer Schrittkette organisiert. Hierdurch werden die einzelnen Befehle in eine bestimmte Ausführungsreihenfolge gebracht, da sie sich anderenfalls überlagern würden. Hierdurch erfolgt ein sequentieller, nicht blockierender Befehlsablauf, wobei das Eingangs- und das Ausgangsabbild zyklisch aktualisiert werden.
-
In 2 ist, entsprechend zur Darstellung der 1, eine Abarbeitung von Anweisungen 200 dargestellt, wie sie herkömmlicherweise in einer Bewegungssteuerungseinrichtung (Motion-Steuerung) realisiert ist. Die Abarbeitung erfolgt in Form eines freilaufenden Tasks V, der zyklusunabhängig abgearbeitet und nach dem Abarbeiten erneut angestoßen wird.
-
Während der Bearbeitung V wird in Form einer periodischen, nebenläufigen Task ständig bzw. in Form einer Intervallsteuerung, eine Aktualisierung des Eingangs- und Ausgangsabbilds über eine nebenläufige Task ausgeführt. Der Befehlsablauf in einer Bewegungssteuerungseinrichtung ist in der Regel sequentiell blockierend. Es sei zu verstehen gegeben, dass die erfindungsgemäßen Maßnahmen unter anderem beinhalten, eine sequentiell blockierende Abarbeitung von Anweisungen, wie sie prinzipiell aus einer Bewegungssteuerung bekennt ist, auf eine speicherprogrammierbare Steuerung zu übertragen. In speicherprogrammierbaren Steuerungen ist auf Grund der eingeschränkten Möglichkeiten üblicher dort vorhandener Programmiersprachen eine derartige sequentiell blockierende Abarbeitung von Befehlen nicht möglich.
-
Wie im Folgenden dargestellt, stellt die vorliegende Erfindung in diesem Zusammenhang mit besonderen Vorteil eine Kapselstruktur zur Verfügung, in die ein auszuführender Befehl eingekapselt wird und die neben dem auszuführenden Befehl ein oder mehrere Betriebssystemaufrufe aufweist, die einerseits zum Lesen eines Ausgangsabbilds und zum Schreiben eines Eingangsabbildes verwendet werden, und andererseits ein Umschalten zwischen nebenläufigen Tasks bewirken können.
-
3 zeigt eine Abarbeitung nebenläufiger Tasks, die gemäß einer besonders bevorzugten Ausführungsform in sequentiell blockierender Weise erfolgt. Mit 1 ist die Zyklusabfolge in einer speicherprogrammierbaren Steuerung angegeben, mit 2 ist die eigentliche Abarbeitung der jeweiligen Tasks angegeben. T1 bezeichnet eine erste Task, T2 eine zweite Task und T3 eine dritte Task, wobei die Tasks T1, T2 und T3 nebenläufig (parallel) abgearbeitet werden und sich aufgrund der Multitaskingfähigkeit des Betriebssystem der Eindruck einer gleichzeitigen Bearbeitung ergibt. Mit 320 sind jeweils Programmkapselfunktionen bezeichnet, die, wie zuvor erläutert, gemäß einer besonders bevorzugten Ausführungsform der Erfindung neben dem eigentlichen ausführenden Befehl Betriebssystemaufrufe aufweisen.
-
Ein Umschalten zwischen den jeweiligen Tasks T1, T2 und T3 erfolgt jeweils zu Zeitpunkten bzw. Übergabepunkten 310. Die Übergabe 310 einer Kontrolle von einem Task an einen anderen Task erfolgt durch das Betriebssystem und auf Grundlage eines Betriebssystemsaufrufs, beispielsweise einer Funktion wait().
-
Wie erwähnt, werden die erfindungsgemäßen Maßnahmen vorteilhafterweise in Form einer Kapselfunktion 320 bzw. Kapselstruktur 320 realisiert, die im Folgenden näher erläutert wird. Die Kapselstruktur stellt einen einkapselnden Befehl dar, der den eigentlichen auszuführenden Befehl aufweist bzw. beinhaltet. Der Programmierer verwendet diesen gekapselten Befehl (z. B. ”sMoveAbsolut()”) anstelle des ursprünglichen Befehls (z. B. ”MoveAbsolut()”). Somit braucht der Programmierer die Betriebssystemaufrufeselbst nicht in sein Programm aufzunehmen, was eine Realisierung auch ohne Kenntnis der Programminterna erleichtert.
-
Die Task T1 beginnt üblicherweise mit dem Lesen eines Eingangsabbilds. Anschließend werden die Befehle der Tasks T1 durchlaufen, bis dabei auf einen gekapselten Befehl gestoßen wird. Dieser wird durch Block 320 dargestellt. Bei Schritt 301 beginnt der Ablauf des herkömmlicherweise blockierenden Befehls. Bei Schritt 302 wird eine Anweisung an eine Bewegungssteuerung (beispielsweise an einen Motion Handler) ausgegeben. Dies erfolgt zweckmäßigerweise in Form eines Aufrufs einer Bewegungsfunktion an einen Interpolator.
-
In Schritt 303 erfolgt ein erster Betriebssystemaufruf, mit * bezeichnet, in diesem Fall das Schreiben eines Ausgangsabbilds. Nachdem also in Schritt 302 ein Befehl an einen Motion Handler übergeben wurde, wartet das System auf die Ausführung des Befehls. Wie im Rahmen der 3 dargestellt, beinhaltet eine Kapselstruktur 320 eine Prüffunktion, bestehend aus einem Abfragebefehl 305 und einem Warteschritt 306, wobei im Schritt 305 abgefragt wird, ob der übergebende Befehl vollständig ausgeführt worden ist. Ist dies der Fall, wird die Abarbeitung der Befehle, wie unten dargestellt, fortgesetzt. Ist dies jedoch noch nicht der Fall, setzt sich die Abarbeitung des Programms mit Schritt 306 fort, in dem ein weiterer Zyklus t abgewartet wird. Gleichzeitig erfolgt ein Betriebssystemaufruf, der ein Betriebssystem dazu veranlasst, die jeweilige Task zugunsten einer anderen zu unterbrechen, d. h. die Rechenzeit einer anderen Task zuzuteilen. Diese Übergabe ist mit Pfeil 310 symbolisiert. Über Ablauf 307 kehrt das Programm zur Abfrage 305 zurück. Die Prüfung beinhaltet also einen Zyklus, der so lange abläuft, wie eine Abarbeitung des in Schritt 302 übergebenen Befehls noch nicht erfolgt ist.
-
Nach Rückerhalt der Rechenzeit und Abarbeiten des Befehls 302 wird das Programm mit Schritt 308 fortgesetzt, wobei, ebenfalls in Form eines Betriebssystemaufrufs, ein Eingangsabbild gelesen wird und der gekapselte Befehl mit Schritt 309 zum Ende gelangt. Anschließend werden die Befehle der aktuellen Task weiter abgearbeitet, bis bspw. zu einem weiteren gekapselten Befehl gelangt wird.
-
Es sei zu verstehen gegeben, dass im Fall einer Blockade in der Abarbeitung des Blocks 320, beispielsweise bei einer nicht erfolgreichen Übergabe eines Befehls in Schritt 302, die zur Folge hat, dass das Programm blockiert würde und niemals zu Schritt 306 gelangen kann, ebenfalls eine Schleifenabfrage mit einer Betriebssystemfunktion entsprechend 310 vorgesehen sein kann derart, dass zu einem nächsten Task gesprungen wird, solange der Befehl 302 noch nicht übergeben wurde. Alternativ kann eine zwangsweise Übergabe 310 der Kontrolle an einen anderen Prozess auch unter Verwendung eines Watchdogs erfolgen.
-
In 3 ist also eine Struktur dargestellt, bei der in Form einer Abfragefunktion festgestellt wird, ob ein abgegebener Befehl 302 vollständig ausgeführt wurde.
-
Eine alternative Ausführungsform hierzu ist in 4 dargestellt und insgesamt mit 400 bezeichnet. Anstelle der Prüffunktion der 3 wird hier eine Semaphorfunktion 416 eingesetzt. Ähnlich wie in 3 wird auch hier eine Kapselfunktion 420 verwendet. Innerhalb der Kapsel beginnt der Befehl mit Schritt 401. In Schritt 402 wird, analog zum Schritt 302 der 3, ein Befehl an einen Motion Handler übergeben. In Schritt 410 erfolgt ein Betriebssystemaufruf, der die Kontrolle an einen anderen Prozess abgibt. Gleichzeitig wird jedoch auch eine Semaphorfunktion 416 angestoßen, die den auszuführenden Task suspendiert und damit in eine passive Wartefunktion bzw. Wartesituation versetzt. Bis zu dem Zeitpunkt, zu dem mittels der Semaphorfunktion signalisiert wird, dass der in Schritt 402 angestoßene Befehl abgearbeitet wurde, verbleibt der Befehl im suspendierten Zustand und wird erst nach dem Semaphorbefehl erneut aktiviert bzw. reaktiviert R. Der Befehl gelangt dann bei Schritt 409 zum Ende. Im linken Teil der 4 ist mit 2 eine Abarbeitung von Tasks, analog zur 1 dargestellt. Durch die Suspendierung S des Tasks T1 wird dieser jedoch in den Zyklen t2 und t3 nicht ausgeführt, sondern erst wieder im Zyklus t4 nach Reaktivierung R abgearbeitet.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- europäische Norm EN 61131 [0003]
- internationalen Norm IEC 61131 [0003]
- IEC/EN 61131-3 [0003]
- EN/IEC 61131-3 [0004]
- Norm EN/IEC 6113-3 [0012]