Job Tasks
Job Tasks werden von TwinCAT Vision zur Parallelisierung von Funktionen verwendet. Abhängig vom verwendeten System, dessen Konfiguration, den verwendeten API-Funktionen, dem Bildinhalt sowie der Anzahl an Job Tasks, kann dies zu einer Reduzierung der Ausführungszeit führen. Die unterstützenden Funktionen sind durch den Kommentar “Can use available TwinCAT Job Tasks for executing parallel code regions.” in der API-Referenz gekennzeichnet. Über den Vision Job Pool erfolgt die Zuweisung, welche Job Tasks von TwinCAT Vision verwendet werden. Job Tasks müssen nur einmalig angelegt und konfiguriert werden; danach geschieht die Parallelisierung automatisch in der Runtime.
![]() | Nutzen von Job Tasks Der tatsächliche Nutzen von Job Tasks muss im Einzelfall geprüft werden. Dieser ist abhängig vom verwendeten System, dessen Konfiguration, den verwendeten API-Funktionen, dem Bildformat, dem Bildinhalt sowie der Anzahl an Job Tasks. |
Verwendung
Job Tasks können - wie andere Tasks auch - über Solution Explorer > SYSTEM > Rechtklick auf Tasks > Add new item... erstellt werden. Im Nachfolgenden Insert Task Dialog wählen Sie dann den Typ TwinCAT Job Task (Worker Task) aus.

Danach kann - wie bei allen anderen Tasks auch - eine entsprechende Kernzuweisung über Solution Explorer > SYSTEM > Real-Time erfolgen. Beachten Sie hierbei die Hinweise unter Einschränkungen und Empfehlungen.

Hinweis | |
Floating point exceptions Diese Einstellung bestimmt, ob TwinCAT auf Fließkomma-Exceptions prüft oder nicht. Hier sollte die gleiche Option gewählt werden, wie in der Konfiguration der entsprechenden SPS Tasks. Ansonsten können Exceptions und Systemabbrüche auftreten. |
Die Zuordnung, welche Job Tasks von TwinCAT Vision verwendet werden, erfolgt über die Parameterliste des Vision Job Pools. Der Vision Job Pool ist im Solution Explorer unterhalb des Vision Knotens zu finden, sobald dort eine Applikation angelegt wurde.

Priorisierung
Priorisierung des Vision Job Pool Zugriffs
Wenn mehrere parallel ausgeführte Programme sich den Vision Job Pool teilen, bekommt generell immer das Programm mit höchster Task-Priorität Zugriff auf die Job Tasks. Diese Zuordnung ist jedoch dynamisch, d. h., wenn das Programm mit höchster Priorität sich aktuell in einem sequenziellen Bearbeitungsabschnitt befindet, können niedriger priorisierte Programme die Job Tasks nutzen. Sobald ein höher priorisiertes Programm dann Aufgaben parallel bearbeiten kann, werden die Aufgaben von niedriger priorisierten Programmen verdrängt. Die Master Task des niedriger priorisierten Programmes ist aber in der Lage, eine parallelisiert begonnene Aufgabe allein zu beenden, sodass nicht auf eine erneute Verfügbarkeit von Job Tasks gewartet werden muss.
Mehrere Tasks auf einem Kern
Wie den Einschränkungen und Empfehlungen zu entnehmen ist, sollte sich eine Job Task immer allein auf einem Kern befinden. Andernfalls gelten die Task-Prioritäten.
Einschränkungen
- Die Job Tasks sind aktuell nur für TwinCAT Vision zu verwenden.
- Es dürfen nicht mehrere Job Tasks demselben Kern zugeordnet werden.
- Eine Job Task darf nicht demselben Kern zugeordnet werden wie eine Vision PLC Task.
- Eine Job Task darf nicht demselben Kern zugeordnet werden wie die PlcAuxTask.
Empfehlungen
- Jede Job Task sollte jeweils einem eigenen, isolierten Kern zugeordnet werden.
- Sollte doch eine weitere zyklische Task auf demselben Kern laufen wie eine Job Task, sollte die Priorität der zyklischen Task höher sein als die der Job Task. Zudem sollte beachtet werden, dass dadurch die Parallelisierung eingeschränkt wird und im schlimmsten Fall nicht zur Verfügung steht.
- Keine Job Task sollte dem „Default“ Kern zugewiesen werden.
Wenn gleichzeitig zyklische TwinCAT Tasks oder auch das Windows Betriebssystem auf dem Kern Rechenzeit beanspruchen, wird eine Analyse durch die unterschiedliche Belastung der Job Tasks erschwert.