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.
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.
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.
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.