Objekt: Task
Symbol:
Im Objekt konfigurieren Sie die Task. Sie können die Priorität, den Typ mit Zeitverhalten und einen Watchdog konfigurieren. Außerdem können Sie PROGRAM
-Aufrufe hinzufügen.
Das Objekt befindet sich im Gerätebaum unter der Taskkonfiguration.
Registerkarte: Konfiguration
Objekt Task
Priorität | Mögliche Werte: 0..31, wobei 0 die höchste Priorität darstellt |
Taskgruppe | Zugeordnete Taskgruppe, die bei Multicore bestimmten Prozessorkernen zugewiesen werden kann Beispiel: IEC-Tasks Hinweis: Die Taskgruppe wird im Gerätebaum hinter der Task in Klammern angezeigt. |
Wichtig
Bei Verwendung eines Laufzeitsystems unter Linux bestehen feste Abhängigkeiten zwischen Taskgruppen und Prioritäten. Für weitere Informationen siehe: Mapping der Task-Prioritäten im Linux-System
Typ
Typ | Abarbeitung der Task erfolgt zyklisch |
Eingabefeld Intervall | Obligatorisch Zeitspanne, nach der die Task neu gestartet wird (Taskzykluszeit)
Hinweis: Abweichungen der Task von dieser gewünschten Taskzykluszeit werden zur Laufzeit als periodischer Jitter auf der Registerkarte Registerkarte: Überwachung angezeigt. |
Zeiteinheit des Intervalls | Wenn im Eingabefeld Intervall keine Zeitangabe, sondern nur eine Zahl angeben ist, dann bestimmt die hier ausgewählte Einheit die Zeitgröße. Beispiel: ms Hinweis: Eine Taskzykluszeit in µs wird immer als Zahl angezeigt. |
Typ | Abarbeitung der Task startet ereignisgesteuert bei steigender Flanke der Ereignisvariablen |
Eingabefeld Ereignis | Globale Variable (Boolescher Typ) Sobald der Variablenwert von 0 auf 1 wechselt, startet die Task. |
Typ | Abarbeitung der Task startet ereignisgesteuert bei steigender Flanke der Ereignisvariablen |
Auswahlliste Ereignis | Liste mit zielsystemabhängigen Ereignissen (Boolescher Typ) Hinweis: Es hängt vom Zielsystem ab, welche Ereignisse unterstützt und in der Auswahlliste angeboten werden. Tipp: Nicht zu verwechseln mit Systemereignissen |
Intervall | Zeitangabe im Hinweis: Nur verfügbar, wenn das Ereignis eine Zeitangabe erfordert |
Typ | Abarbeitung der Task startet bei Programmstart und nach Ende eines Durchlaufs nach einer gewissen Wartezeit automatisch neu in einer fortlaufenden Schleife Wichtig: Nach Beenden eines Durchlaufs wird eine bestimmte Zeit gewartet, bevor die Task erneut ausgeführt wird. Die Dauer ist ein Prozentsatz der letzten Zyklusdauer. Hinweis: Sie definieren keine Zykluszeit. |
Typ | Abarbeitung der Task startet zustandsgesteuert von der Ereignisvariablen |
Eingabefeld Ereignis | Globale Variable (Boolescher Typ) Wenn die Variable den Zustand Hinweis: Die Variable wird typischerweise in der Task selbst zurückgesetzt. Im Gegensatz zur Ereignistask kann auf diese Weise kein Event verpasst werden. Bei Ereignis muss der Scheduler einen alten Wert speichern und dieser kann sich öfter ändern als er überprüft wird. Wenn also eine Ereignisvariable nur kurz auf |
Wichtig
Für Feldbusse ist ein festes Zyklusraster nötig, um ein determiniertes Verhalten sicherzustellen. Deshalb sollten Sie für eine Buszyklustask den Typ Freilaufend nicht verwenden.
Wichtig
Beachten Sie den folgenden Unterschied zwischen den Abarbeitungstypen Status und Ereignis: Wenn das angegebene Ereignis den Wert TRUE
hat, dann ist die Startbedingung einer Task vom Typ Status erfüllt. Im Gegensatz dazu verlangt der Start einer Task vom Typ Ereignis einen Wechsel des Ereignisses von FALSE
auf TRUE
. Wenn die Abtastrate des Task-Schedulers zu niedrig ist, können steigende Flanken des Ereignisses unbemerkt bleiben.
Wichtig
Beim Setzen der Taskzykluszeit müssen Sie berücksichtigen, welches Bussystem gerade verwendet wird: Beispielsweise muss die Taskzykluszeit auf einem CAN-Bus-System zur aktuell gesetzten Baudrate und der Anzahl der auf dem Bus verwendeten Frames passen. Außerdem sollten die für Heartbeat, Nodeguarding und Sync gesetzten Zeiten immer ein Vielfaches der Taskzykluszeit sein. Ansonsten können CAN-Frames verloren gehen.
Für weitere Informationen siehe: Registerkarte: Überwachung
Watchdog
Definiert die Zeitüberwachung für eine Task. Wenn das Zielsystem eine erweiterte Watchdog-Konfiguration unterstützt, sind möglicherweise folgende Einstellungen in der Gerätebeschreibung vordefiniert:
Die hier standardmäßig verwendeten Watchdog-Einstellungen sind geräteabhängig. | |
Aktivieren |
Wenn die Task die gerade gesetzte Zeit des Watchdogs überschreitet, wird die Task mit Fehlerstatus (Ausnahme) angehalten. Dabei werden auch die Applikation, in deren Task der Watchdog-Fehler passiert ist, sowie deren Kindapplikationen gestoppt. Damit werden alle Tasks dieser betroffenen Applikationen ebenfalls gestoppt. Dabei wird auch die aktuell angegebene Empfindlichkeit mit eingerechnet. Wenn Sie in den SPS-Einstellungen der Steuerung die Option E/As aktualisieren aktiviert haben, setzt CODESYS die Ausgänge auf die definierten Standardwerte zurück. . Mögliche Fälle:
|
Zeit (z. B. t#200ms) | Watchdog-Zeit Definiert zusammen mit der Empfindlichkeit die Zeitüberwachung für eine Task, wie bei Aktivieren beschrieben. Abhängig vom Zielsystem muss die Überwachungszeitspanne möglicherweise in Prozent des Taskintervalls angegeben werden. In diesem Fall ist die Auswahlliste für die Einheit inaktiv dargestellt und zeigt % an. |
Empfindlichkeit | Zahl Definiert zusammen mit der Watchdog-Zeit die Zeitüberwachung für eine Task, wie bei Aktivieren beschrieben. |
Tipp
Sie können einen Watchdog mit Hilfe der Funktionen der Bibliothek CmpIecTask.library
für bestimmte SPS-Zyklen abschalten. Dies ist für Zyklen nützlich, die aufgrund von Initialisierungen mehr Zeit beanspruchen können.
Deaktivieren/Reaktivieren des Watchdogs:
VAR hIecTask : RTS_IEC_HANDLE; END_VAR hIecTask := IecTaskGetCurrent(0); IecTaskDisableWatchdog(hIecTask); //Watchdog disabled ... IecTaskEnableWatchdog(hIecTask); //Watchdog enabled
Der Watchdog wird vor der Initialisierung mit IecTaskDisableWatchDog
für den Rest des Zyklus abgeschaltet und ist beim nächsten Zyklus automatisch wieder aktiv.
Der Watchdog kann nach der Initialisierung mit IecTaskEnableWatchDog
wieder eingeschaltet werden. Die Überwachung ist dann bereits für den Rest des Zyklus wieder aktiv (das Watchdog-Zeitfenster beginnt von vorne).
Initialisierungen von Funktionsbausteinen, die innerhalb der Methode FB_Init
stattfinden, sind davon nicht betroffen. Aber es gab das Limit von < 30 Sekunden aufgrund des Communication-Timeouts. Dieses Zeitlimit besteht seit V3.5 SP18 nicht mehr, da die Online-Dienste asynchron ausgeführt werden.
Tipp
Der normale Watchdog einer IEC-Task spricht an, wenn die Ausführungszeit der IEC-Task die Watchdogzeit überschreitet.
Der sogenannte „Omitted Cylce“-Watchdog spricht an, wenn die Task erst gar nicht anläuft. Das ist der Fall, wenn die Task innerhalb dem Maximum von <Zeit * Empfindlichkeit> oder <2 * Intervall> gar keinen Zyklus ausführt. Ursache könnte eine Verdrängung durch andere Tasks sein oder eine Störung im Scheduler, der die Task nicht mehr aktiviert.
Programmaufrufe
Programmbausteine ( POU-Objekt mit Typ Die Reihenfolge, in der die Bausteine aufgerufen werden, entspricht der hier konfigurierten Aufrufreihenfolge von oben nach unten. | |
| Öffnet die Eingabehilfe. Wählen Sie einen |
| Entfernt den Aufruf |
| Öffnet für den selektierten Aufruf die Eingabehilfe. Wählen Sie einen anderen |
| Verschiebt die Position des Aufrufs in der Liste nach oben oder nach unten. Dementsprechend ändert sich zur Laufzeit die Aufrufreihenfolge. |
| Öffnet den Bausteineditor mit der Deklaration und Implementierung des |