Zusammenhang von Buszyklus und Task

Grundsätzlich werden für jede IEC-Task die verwendeten Eingangsdaten am Beginn jeder Task gelesen (1) und die geschriebenen Ausgangsdaten am Ende der Task (3) zum E/A-Treiber übertragen (siehe folgende Abbildung). Die Implementierung im E/A-Treiber ist entscheidend für den weiteren Transport der E/A-Daten. Sie ist verantwortlich dafür, in welchem Zeitraster und zu welchem Zeitpunkt die tatsächliche Übertragung auf das jeweilige Bussystem stattfindet.

Die Buszyklustask der SPS kann für alle Feldbusse global in den SPS-Einstellungen festgelegt werden. Bei einigen Feldbussen können Sie diese jedoch unabhängig von der globalen Einstellung verändern. Als Buszyklustask wird automatisch die Task mit der kürzesten Zykluszeit verwendet (Einstellung: unspezifiziert in den SPS-Einstellungen). In dieser Task werden normalerweise die Nachrichten auf den Bus gesendet.

Weitere Tasks kopieren nur die E/A-Daten aus einem internen Puffer, der nur in der Buszyklustask mit der realen Hardware ausgetauscht wird.

EtherCAT-Tasks
EtherCAT-Tasks
Legende zur Abbildung „EtherCAT-Tasks“

Pos.

Beschreibung

1

Lesen der Eingänge vom Eingangspuffer

2

IEC-Task

3

Schreiben der Ausgänge in den Ausgangspuffer

4

Buszyklus

5

Eingangspuffer

6

Ausgangspuffer

7

Daten vom/zum Bus kopieren

9

Buszyklustask, Priorität 1, 1ms

10

Buszyklustask, Priorität 5

11

Buszyklustask, Priorität 10, unterbrochen durch Task 5

Bevor die IEC-Eingänge kopiert werden, werden die ausstehenden Netzwerkmeldungen des letzten Zyklus gelesen.

Taskbearbeitung ohne Option „Senden/Empfangen pro Task“
Taskbearbeitung ohne Option „Senden/Empfangen pro Task“

Wenn in den Einstellungen des EtherCAT-Masters die Option Senden/Empfangen pro Task aktiviert wird, werden pro Task und verwendeten Ein- bzw. Ausgängen zusätzliche Telegramme an die verwendeten Geräte übertragen. Kanäle, die in einer langsamen Task verwendet werden, werden auch seltener übertragen. Die Buslast kann damit reduziert werden.

Taskbearbeitung mit Option „Senden/Empfangen pro Task“
Taskbearbeitung mit Option „Senden/Empfangen pro Task“

Hinweis

Undefinierte Zustände durch Schreiben und Lesen in mehreren Tasks

Wenn ein Ausgang in verschiedenen Tasks geschrieben wird, so ist der Zustand undefiniert, da dieser jeweils überschrieben werden kann. Bei Verwendung von gleichen Eingängen in verschiedenen Tasks kann es passieren, dass sich der Eingang während der Abarbeitung einer Task verändert. Dies geschieht, wenn die Task durch eine Task mit höherer Priorität unterbrochen und damit das Prozessabbild erneut eingelesen wird.

Abhilfe:
Am Beginn der IEC-Task die Eingangsvariablen in Variablen kopieren und dann im weiteren Code nur noch mit den lokalen Variablen arbeiten.

Fazit:
Eine Verwendung von gleichen Ein- und Ausgängen in mehreren Tasks ist nicht sinnvoll und kann in manchen Fällen zu unvorhergesehenen Zuständen führen.