DE102009055752A1 - Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung - Google Patents

Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung Download PDF

Info

Publication number
DE102009055752A1
DE102009055752A1 DE102009055752A DE102009055752A DE102009055752A1 DE 102009055752 A1 DE102009055752 A1 DE 102009055752A1 DE 102009055752 A DE102009055752 A DE 102009055752A DE 102009055752 A DE102009055752 A DE 102009055752A DE 102009055752 A1 DE102009055752 A1 DE 102009055752A1
Authority
DE
Germany
Prior art keywords
operating system
task
instructions
tasks
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102009055752A
Other languages
English (en)
Inventor
Edgar Holembowski
Helene Schloter
Florian Zang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102009055752A priority Critical patent/DE102009055752A1/de
Priority to PCT/EP2010/005527 priority patent/WO2011063869A1/de
Priority to US13/511,979 priority patent/US9152454B2/en
Publication of DE102009055752A1 publication Critical patent/DE102009055752A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/11Plc I-O input output
    • G05B2219/1162Forcing I-O
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13068Program divided in operation blocks, groups, tasks each executed
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13117Two languages, ladder diagram and machine code for processor
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15079Multitasking, real time multitasking

Abstract

In einem Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen (302, 402) in nebenläufigen Tasks (T1, T2, T3) in einer Steuereinrichtung mit einem multitaskingfähigen Betriebssystem, insbesondere einer speicherprogrammierbaren Steuerung, wird wenigstens einer Anweisung (302, 402) wenigstens ein Betriebssystemaufruf (310, 410) zugeordnet, der das Betriebssystem dazu veranlasst, die jeweilige Task (T1, T2, T3) nach einer durch die Anweisung (302, 402) ausgegebenen Instruktion zugunsten einer anderen Task (T1, T2, T3) zu unterbrechen.

Description

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

Claims (12)

  1. Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen (302, 402) in nebenläufigen Tasks (T1, T2, T3) in einer Steuereinrichtung mit einem multitaskingfähigen Betriebssystem, insbesondere einer speicherprogrammierbaren Steuerung, wobei wenigstens einer Anweisung (302, 402) wenigstens ein Betriebssystemaufruf (310, 410) zugeordnet wird, der das Betriebssystem dazu veranlasst, die jeweilige Task (T1, T2, T3) nach einer durch die Anweisung (302, 402) ausgegebenen Instruktion zugunsten einer anderen Task (T1, T2, T3) zu unterbrechen.
  2. Verfahren nach Anspruch 1, das bei einer Speicherprogrammierbaren Steuerung oder einer Bewegungssteuerung verwendet wird.
  3. Verfahren nach Anspruch 1 oder 2, wobei die unterbrochene Task (T1) während einer Abarbeitungszeit der Instruktion suspendiert (S) und nach dem Ende der Abarbeitungszeit reaktiviert (R) wird.
  4. Verfahren nach Anspruch 3, wobei die Suspendierung (S) und/oder Reaktivierung (R) unter Verwendung eines Semaphors und/oder einer Prüffunktion (305) erfolgt.
  5. Verfahren nach einem der vorstehenden Ansprüche, welches für eine Programmiersprache gemäß IEC/EN 61131-3, insbesondere für Structured Text, realisiert wird.
  6. Verfahren nach einem der vorstehenden Ansprüche, bei dem der wenigstens einen Anweisung (302, 402) weitere Betriebssystemaufrufe (A, E) zugeordnet werden, die das Betriebssystem dazu veranlassen, ein Ausgangsabbild zu schreiben (A) und/oder ein Eingangsabbild zu lesen (E).
  7. Verfahren nach einem der vorstehenden Ansprüche, wobei die Zuordnung von Betriebssystemaufrufen (310, 410, A, E) zu der wenigstens einen Anweisung (302, 402) in Form einer Anweisungen (302, 402) und Betriebssystemaufrufe einkapselnden Struktur (320, 420) erfolgt.
  8. Verfahren nach Anspruch 7, bei dem die einkapselnde Struktur (320, 420) ferner eine Prüf- (305) und/oder eine Semaphorfunktion (416) beinhaltet.
  9. Verfahren nach einem der vorstehenden Ansprüche, das für freilaufende Tasks (T1, T2, T3) als sequentiell abzuarbeitende Tasks (T1, T2, T3) verwendet wird.
  10. Verfahren nach einem der vorstehenden Ansprüche, bei dem eine Watchdogfunktion verwendet wird, um eine zwangsweise Unterbrechung einer Task zugunsten einer anderen zu ermöglichen.
  11. Computerprogramm mit Programmcodemitteln, insbesondere wenigstens eine Anweisungen und Betriebssystemaufrufe einkapselnde Struktur (320, 420), die gemäß einem Verfahren nach einem der vorstehenden Ansprüche bereitgestellt ist, zur Ausführung auf einem Computer oder einer entsprechenden Recheneinheit, insbesondere einer Steuereinrichtung.
  12. Steuereinrichtung, insbesondere Speicherprogrammierbare Steuerung, die zur Ausführung eines Computerprogramms nach Anspruch 11 eingerichtet ist.
DE102009055752A 2009-11-25 2009-11-25 Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung Withdrawn DE102009055752A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102009055752A DE102009055752A1 (de) 2009-11-25 2009-11-25 Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung
PCT/EP2010/005527 WO2011063869A1 (de) 2009-11-25 2010-09-08 Verfahren zum ermöglichen einer sequentiellen, nicht blockierenden abarbeitung von anweisungen in nebenläufigen tasks in einer steuereinrichtung
US13/511,979 US9152454B2 (en) 2009-11-25 2010-09-08 Method for enabling sequential, non-blocking processing of statements in concurrent tasks in a control device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102009055752A DE102009055752A1 (de) 2009-11-25 2009-11-25 Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung

Publications (1)

Publication Number Publication Date
DE102009055752A1 true DE102009055752A1 (de) 2011-05-26

Family

ID=43027892

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009055752A Withdrawn DE102009055752A1 (de) 2009-11-25 2009-11-25 Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung

Country Status (3)

Country Link
US (1) US9152454B2 (de)
DE (1) DE102009055752A1 (de)
WO (1) WO2011063869A1 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016107527A1 (de) 2016-04-22 2017-10-26 Beckhoff Automation Gmbh Echtzeitumgebung und speicherprogrammierbare Steuerung
DE102017222761A1 (de) 2017-12-14 2019-06-19 Robert Bosch Gmbh Hydraulische Versorgungseinrichtung
US11880175B2 (en) 2018-12-20 2024-01-23 Beckhoff Automation Gmbh Method for controlling an automation process in real time

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9305082B2 (en) * 2011-09-30 2016-04-05 Thomson Reuters Global Resources Systems, methods, and interfaces for analyzing conceptually-related portions of text
US9710315B2 (en) * 2014-09-12 2017-07-18 Qualcomm Incorporated Notification of blocking tasks
KR102079499B1 (ko) * 2015-10-20 2020-02-21 엘에스산전 주식회사 Plc 위치 결정 시스템의 축별 제어주기 독립 할당 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4302820A (en) * 1979-08-20 1981-11-24 Allen-Bradley Company Dual language programmable controller
US6009454A (en) 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
US7334229B1 (en) * 1999-01-28 2008-02-19 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US7089557B2 (en) * 2001-04-10 2006-08-08 Rusty Shawn Lee Data processing system and method for high-efficiency multitasking
AU2003223577A1 (en) * 2002-06-05 2003-12-22 Axs Technologies Apparatus and method for sharing digital content of an image across a communication network
US20060212874A1 (en) 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
TW201009713A (en) * 2008-08-21 2010-03-01 Ind Tech Res Inst Multitasking processor and task switch method thereof
JP2010160600A (ja) * 2009-01-07 2010-07-22 Yamatake Corp 情報処理装置、スケジューラ、及びスケジューリング方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
europäische Norm EN 61131
Norm EN/IEC 6113-3

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016107527A1 (de) 2016-04-22 2017-10-26 Beckhoff Automation Gmbh Echtzeitumgebung und speicherprogrammierbare Steuerung
WO2017182467A1 (de) 2016-04-22 2017-10-26 Beckhoff Automation Gmbh Echtzeitumgebung und speicherprogrammierbare steuerung
US10782667B2 (en) 2016-04-22 2020-09-22 Beckhoff Automation Gmbh Real-time environment and programmable logic controller
DE102017222761A1 (de) 2017-12-14 2019-06-19 Robert Bosch Gmbh Hydraulische Versorgungseinrichtung
US11880175B2 (en) 2018-12-20 2024-01-23 Beckhoff Automation Gmbh Method for controlling an automation process in real time

Also Published As

Publication number Publication date
WO2011063869A1 (de) 2011-06-03
US20130081054A1 (en) 2013-03-28
US9152454B2 (en) 2015-10-06

Similar Documents

Publication Publication Date Title
EP2325708B1 (de) Echtzeit-Laufzeitsystem und Funktionsmodul für ein solches Laufzeitsystem
DE102009055752A1 (de) Verfahren zum Ermöglichen einer sequentiellen, nicht blockierenden Abarbeitung von Anweisungen in nebenläufigen Tasks in einer Steuereinrichtung
EP1146432A2 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE102010011658A1 (de) Applikationsplattform und Verfahren zum Betrieb einer Datenverarbeitungseinrichtung mit einer solchen
WO2011061046A1 (de) Parallelisierte programmsteuerung
EP3538960B1 (de) Ablaufsteuerung von programmmodulen
EP1238318B1 (de) Automatisierungsgerät und aufdat-verfahren
EP3417373B1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE102014103139B4 (de) Parallelisierte Ausführung von Single-Core Steuerungssoftware auf Multi-Core Fahrzeugsteuergeräten
DE102016107527A1 (de) Echtzeitumgebung und speicherprogrammierbare Steuerung
EP2732347B1 (de) Verfahren und system zur dynamischen verteilung von programmfunktionen in verteilten steuerungssystemen
DE102010011652A1 (de) Applikationsplattform und Verfahren zum Betrieb einer Datenverarbeitungseinrichtung mit einer solchen
EP2561415B1 (de) Datenverwaltungsverfahren und speicherprogrammierbare steuerung
EP2363809B1 (de) Verfahren zur Optimierung eines Steuerprogramms für Aktuatoren
DE102009025572A1 (de) Eine Methode zur Entwicklung von garantiert korrekten Echtzeitsystemen
DE102017130552B3 (de) Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
DE102008023873A1 (de) Verfahren zum Betrieb eines Antriebssystems
EP1220065B1 (de) Verfahren zum Betrieb einer industriellen Steuerung mit Run-Time-System
DE10209640A1 (de) Verfahren zur Generierung eines Automatisierungsprogramms
EP2365438A1 (de) Verfahren zum Betrieb eines Automatisierungssystems
DE102005039771B3 (de) Einheit zur Verwaltung von Echtzeitprozessen ohne asynchrone Unterbrechungen
EP2216695B1 (de) Verfahren zum Betrieb eines Automatisierungssystems, korrespondierendes Computerprogramm und System oder Gerät, das nach dem Verfahren arbeitet
DE102018205390A1 (de) Verfahren und Vorrichtung zur Fehlerbehandlung in einer Kommunikation zwischen verteilten Software Komponenten
EP2160670A1 (de) Prozessor und verfahren zu seiner ansteuerung
WO2011137464A1 (de) Verfahren zum selektiven aufzeichnen, rekonstruieren und analysieren des programmlaufs eines steuerungsprogramms

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee