In der Taskkonfiguration definieren Sei eine oder mehrere Tasks zur Kontrolle und Ausführung des Applikationsprogramms auf der Steuerung. Jede Applikation muss ein Objekt „Taskkonfiguration“ besitzen.
Eine Task ist eine zeitliche Ablaufeinheit eines IEC-Programms. Sie ist definiert durch einen Namen, eine Priorität und einen Typ, der festlegt, welche Bedingung den Start der Task auslöst. Diese Bedingung können Sie entweder zeitlich (Zyklusintervall, freilaufend) definieren oder durch ein internes oder ein externes Ereignis definieren, bei dessen Eintreten die Task ausgeführt werden soll. Ein Ereignis ist beispielsweise die steigende Flanke einer globalen Projektvariable oder ein Interrupt-Ereignis der Steuerung.
Eine Task ruft einen oder mehrere Programmbausteine (POUs) auf. Diese Programme können sein: applikationsspezifisch, das bedeutet im Gerätebaum unterhalb der Applikation liegende Objekte, oder projektspezifisch, das bedeutet im POUs-Fenster verfügbare Objekte. Im letzteren Fall instanziert die Applikation das projektglobale Programm. Wenn CODESYS die Task im aktuellen Zyklus bearbeitet, werden die Programme für die Länge eines Zyklus ausgeführt.
Durch die Kombination von Priorität und Bedingung legen Sie fest, in welcher zeitlichen Abfolge die Tasks ausgeführt werden. Für jede Task können Sie eine Zeitüberwachung (Watchdog) konfigurieren. Zusätzlich haben Sie die Möglichkeit, beispielsweise Start, Stop, Reset direkt mit der Ausführung eines Projektbausteins zu koppeln.
Regeln für die Abarbeitungsreihenfolge der definierten Tasks:
-
Wenn die Bedingung der Task erfüllt ist, arbeitet CODESYS die Task ab.
-
Wenn mehrere Tasks gleichzeitig die Bedingung zur Abarbeitung erfüllen, arbeitet CODESYS zuerst diejenige mit der höchsten Priorität ab.
-
Wenn mehrere Tasks gleichzeitig die Bedingung zur Abarbeitung erfüllen und gleiche Prioritätsstufe haben, arbeitet CODESYS zuerst diejenige ab, die bereits am längsten wartet.
-
Die Abarbeitung der Programmaufrufe erfolgt jeweils in der Reihenfolge, in der die Programme im Konfigurationsdialog der Task angeordnet sind.
-
Wenn ein Programm aufgerufen wird, das mit gleichem Namen sowohl im Gerätebaum der Applikation als auch in einer Bibliothek oder projektglobal im POUs-Fenster vorliegt, wird das Programm der Applikation verwendet.
Wichtige Hinweise
Alle Tasks teilen sich ein Prozessabbild. Grund: Ein eigenes Prozessabbild pro Task
würde zu Lasten der Performance gehen. Das Prozessabbild kann jedoch somit immer
nur zu einer Task konsistent sein. Beim Erstellen eines Projekts müssen Sie selbst
dafür sorgen, dass die Applikation bei Konflikten die Eingangsdaten in einen sicheren
Bereich kopiert, bei Ausgängen gilt dasselbe. Möglichkeiten, die Konsistenz- und Synchronisierungsprobleme
zu lösen, bieten beispielsweise die Bausteine der Bibliothek SysSem
.
Auch beim Zugriff auf andere globale Objekte, wie zum Beispiel globale Variablen
oder Bausteine, können Konsistenzprobleme auftreten. Konsistenzprobleme treten immer
auf, wenn mehrere Tasks eine Variable lesend und schreibend verwenden. Zur Lösung
stehen hier wiederum beispielsweise die Bausteine der Bibliothek SysSem
zur Verfügung.
Siehe auch
-
Erstellen einer Taskkonfiguration
-
Definitionen Jitter, Latenz
-
Multicore