Tasks

Eine Task ist ein Laufzeitobjekt, welches von einem Scheduler eingeplant und angestoßen werden kann. Bei diesem Objekt melden sich Funktionen bzw. Laufzeitobjekte an, die im Kontext dieses Objekts ausgeführt werden sollen. Den Tasks werden eine Zykluszeit und eine Priorität zugeordnet, anhand derer der Scheduler die Ausführung der Tasks einplant (siehe Echtzeit Scheduling). Des Weiteren werden jeder Task ein gemeinsamer Speicher/ Adressraum, auf den alle Tasks gemeinsam zugreifen können, und ein zusätzlicher Stackspeicher zugeordnet. Dieser Stackspeicher wird benötigt, um das verschachtelte Ausführen von Funktionen und Unterfunktionen zu erlauben. Der Stack dient auch als Speicher für lokale Variablen. Der Zustand einer Task wird durch diesen Stack und den aktuellen Inhalt der Maschinenregister (Rechenregister) definiert. Bei einem Kontextwechsel bzw. einem Unterbrechen einer Task durch eine höher Priore, wird dieser Zustand gesichert und beim erneuten bzw. weiteren Ausführen der Task wieder hergestellt. Die Größe des Task-Stacks kann in TwinCAT definiert werden (siehe Kapitel Registerkarte Settings der Echtzeit-Einstellungen).

Zur Ablaufsteuerung von mehreren Tasks bietet ein (Echtzeit-)System Funktionen zur Kommunikation und Synchronisation an (siehe Kapitel Multitask-Datenzugriffs-Synchronisation in der SPS).

In den folgenden Kapiteln wird auf die entsprechenden Task-Arten eingegangen.