Sync Unit Assignment
Eine Sync Unit beschreibt ein Modul, das einen Satz von Prozessdaten definiert, die synchron und konsistent zwischen dem Master und einem oder mehreren EtherCAT-Slave-Geräten ausgetauscht werden sollen. Für jede Sync Unit wird synchron zum Zyklus ein eigenes EtherCAT-Kommando gesendet, um die Prozessdaten mit den EtherCAT-Slave-Geräten auszutauschen. Jede Sync Unit hat einen Diagnoseeingang, der zyklussynchron ist und anzeigt, ob die vollständigen Daten gültig sind (siehe WcState). Sync Units sind nützlich für Anwendungen, bei denen Teile der Maschine weiterarbeiten sollen, obwohl andere Teile ausgefallen oder deaktiviert sind.
Für jedes EtherCAT-Slave-Gerät kann man einen oder mehrere Prozessdatenbereiche definieren, die synchron und konsistent ausgetauscht werden sollen. Diese einzelnen Prozessdatenbereiche können in der Registerkarte Prozessdaten (Process Data) eines Slave-Gerätes konfiguriert werden. Normalerweise ist jedes PDO-Objekt demselben Prozessdatenbereich (Sync Unit) zugeordnet. Dies wird durch die Spalte SU (Sync Unit) in der PDO-Listenansicht angezeigt:
Im obigen Beispiel sind alle Kanäle der Sync Unit 0 zugewiesen. Die Anzahl der unabhängigen Prozessdatenbereiche eines EtherCAT-Slave-Geräts hängt von der Implementierung und den Ressourcen seines EtherCAT Slave Controllers (Sync Manager und Fmmu) ab. Die Sync Units der EtherCAT-Slave-Geräte können den Sync Units einer bestimmten Sync Task zugeordnet werden. Diese Sync Units sind mit frei definierbaren Namen gekennzeichnet. Man kann entweder jede Sync Unit eines Slaves einzeln einer Sync Unit zuweisen, indem man die Schaltfläche "Sync Unit Assignment..." auf der Registerkarte "Process Data" eines Slaves (siehe Dialog oben) betätigt, oder man kann eine oder mehrere Slave Sync Units zuweisen, indem man die Schaltfläche "Sync Unit Assignment..." auf der Registerkarte "EtherCAT" des EtherCAT-Master-Geräts betätigt:
Dialog Sync Unit Zuordnung
Um eine Sync Unit einem Prozessdatenbereich eines EtherCAT-Slave-Gerätes zuzuordnen, wählen Sie einen Eintrag in der Listenansicht oben aus. Geben Sie dann den Namen der Sync Unit in das Bearbeitungsfeld unten ein oder wählen Sie einen der Einträge im Listenfeld unten aus. Im obigen Beispiel wird "sync unit 1" von Task 1 der Sync Unit 0 von Klemme 1 und "sync unit 2" von Task 1 der Sync Unit 0 von Klemme 3 zugewiesen.
Die Registerkarte "EtherCAT" der EtherCAT-Slave-Geräte zeigt die vom EtherCAT-Master gesendeten zyklischen Frames für die Prozessdatenkommunikation an:
Für jede Sync Task, die an der Prozessdatenkommunikation teilnimmt, wird ein eigener Frame gesendet. Die maximale Anzahl von Sync Tasks ist standardmäßig auf 4 festgelegt. Um die maximale Anzahl der Sync Tasks zu ändern, muss man den Dialog Erweiterte Einstellungen öffnen und die Seite Sync Tasks auswählen. Es ist möglich, eine oder mehrere Sync Units für eine bestimmte Task zuzuweisen. Jede dieser Sync Units ist einem Prozessdatenbereich eines Slave-Gerätes zugeordnet. Für jede Sync Unit einer Sync Task enthält der EtherCAT-Frame ein eigenes EtherCAT-Kommando. Im obigen Beispiel tauscht das erste EtherCAT-Kommando des ersten EtherCAT-Frames die Prozessdaten der EtherCAT-Geräte aus, die der Sync Unit 1 der Task 1 zugeordnet sind. In diesem Fall ist es nur das eine EtherCAT-Slave-Gerät Klemme 1(EL9800) (siehe Dialog Sync Unit Zuordnung oben). Für jede Sync Unit einer Task wird ein erwarteter Working Counter berechnet, der in der Spalte "WC" angezeigt wird.
Working Counter: Der Working Counter eines EtherCAT-Kommandos ist ein 16 Bit-Zähler. Der Zähler wird von jedem EtherCAT-Slave inkrementiert, der erfolgreich durch das Kommando angesprochen wird. Werden nur Eingänge aus dem EtherCAT-Slave-Gerät gelesen, wird der Working Counter um 1 erhöht. Werden Ausgänge in das EtherCAT-Slave-Gerät geschrieben, wird der Working Counter um 2 erhöht. Werden sowohl Ein- als auch Ausgangsvariablen ausgetauscht, wird der Working Counter um 3 erhöht. Ist der Working Counter fehlerhaft, verwirft der EtherCAT-Master die empfangenen Eingänge des EtherCAT-Kommandos.
Für jeden Frame hat der Master einen Diagnoseeingang 'FrmXWcState' (X =Frame-Nummer), der die Stände der Working Counter einzelner EtherCAT-Kommandos des Frames anzeigt (siehe FrmXWcState). Bei 'FrmXWcState' ist es nicht möglich zu überprüfen, welche Klemme für den fehlerhaften Working Counter verantwortlich ist. Um genauere Informationen über die Zustände der einzelnen Slave-Geräte zu erhalten, muss man die Eingangsvariable InfoData.State der Slaves auslesen.
Beispiel:
- Öffnen Sie ein neues Systemmanager-Projekt
- Hinzufügen eines EtherCAT-Geräts zu den E/A-Geräten in der Baumansicht des Systemmanagers
- Fügen Sie einen EK1100 und drei EL1004 an das EtherCAT-Gerät an.
- Erweitern Sie den Eintrag 'System-Configuration' in der Baumansicht des Systemmanagers
- Öffnen Sie das Kontextmenü von 'Additional Task', indem Sie mit der rechten Maustaste auf den Unterpunkt 'Additional Task' von 'System-Configuration' klicken
- Wählen Sie den Menüeintrag 'Append Task...' , um Task1 hinzuzufügen
- Aktivieren Sie auf der Registerkarte 'Task' der zusätzlichen Task 'Task1' das Kontrollkästchen "Auto-Start" und ändern Sie die Zykluszeit auf 1 ms.
- Wiederholen Sie die Schritte 5 bis 7, um eine weitere Task hinzuzufügen, und setzen Sie die Zykluszeit auf 5 ms. Die aktuelle Konfiguration sollte wie folgt aussehen:
- Als Nächstes fügen wir der Task 2 Eingangsvariablen hinzu und bilden diese an den Eingängen der Klemmen ab. Klicken Sie mit der rechten Maustaste auf den Eintrag 'Inputs' von Task 2 und wählen Sie im Kontextmenü 'Insert Variable...'. Wählen Sie im Dialog 'Insert Variable' als Variablentyp "Bit" aus und drücken Sie die Schaltfläche "OK".
- Doppelklicken Sie auf die neu erstellte Variable und bilden Sie diese Variable am ersten Eingang von Klemme 2 ab. Fügen Sie zu Task 2 zwei weitere Variablen hinzu und bilden Sie diese am ersten Eingang von Klemme 3 und am ersten Eingang von Klemme 4 ab:
- Wählen Sie das EtherCAT-Gerät in der Baumansicht des Systemmanagers aus und öffnen Sie die Registerkarte 'EtherCAT' auf der rechten Seite:
In der Listenansicht dieser Seite können wir sehen, dass ein Frame mit zwei EtherCAT-Kommandos vom Master gesendet wird. Das erste Kommando ist ein LRW-Kommando (Logical Read Write) und ist für das Lesen der Eingänge und das Schreiben auf die Ausgänge eines oder mehrerer Slave-Geräte zuständig. Die Spalte 'Sync Unit' gibt die Sync Unit an, die diesem Kommando zugewiesen ist. Da wir noch keine Sync Units zugewiesen haben, wird die Default-Sync Unit verwendet. Da alle Variablen auf die Task2 abgebildet sind, wird der Wert 'Cycle (ms)' auf 5 ms gesetzt, die Zykluszeit der Task2. Der erwartete Working Counter (WC) ist auf 3 gesetzt, einer für jedes Slave-Gerät. Dies ist der Fall, weil die angeschlossenen Slave-Geräte nur über Eingangsvariablen verfügen. - Als nächstes fügen wir zwei Sync Units hinzu und weisen eine den Prozessdaten der ersten EL1004(Klemme 2) und die anderen Klemme 3 und Klemme 4 zu. Drücken Sie die Schaltfläche 'Sync Unit Zuordnung...' im Reiter EtherCAT, um den Dialog 'Sync Unit Zuordnung' zu öffnen:
Wählen Sie den ersten Eintrag aus und geben Sie 'sync unit 1' in das darunterliegende Eingabefeld ein. Jetzt haben wir eine neue Sync Unit mit dem Namen 'sync unit 1' erstellt und sie der Sync Unit 0 von Klemme 2(EL2004) zugewiesen. Wählen Sie dann Klemme 3 und geben Sie 'sync unit 2' in das Eingabefeld ein. Wählen Sie schließlich Klemme 4 und geben Sie erneut 'sync unit 2' in das Eingabefeld ein. Drücken Sie die Schaltfläche 'OK', um den Dialog zu schließen:
Aufgrund der Sync Unit Zuordnung wurde ein weiteres EtherCAT-Kommando zur Liste der zyklischen Kommandos hinzugefügt. Das erste 'LRW'-Kommando ist für die Prozessdatenkommunikation aller EtherCAT-Slave-Geräte zuständig, die zur Sync Unit 'sync unit 1' gehören. In unserem Fall ist dies nur Klemme 2. Das zweite 'LRW'-Kommando ist für die Prozessdatenkommunikation aller EtherCAT-Slave-Geräte zuständig, die zur Sync Unit 'sync unit 2' gehören (hier Klemme 3 und Klemme 4). Mit Hilfe der Eingangsvariablen 'Frm0WcState' ist es nun möglich, den Status des Working Counter des ersten und zweiten Kommandos getrennt zu überwachen:
Wenn Klemme 2 einen falschen Working Counter zurückliefert, würde Bit 1 der Variablen 'Frm0WcState' auf 1 gesetzt werden, was anzeigt, dass ein falscher Working Counter für das erste EtherCAT-Kommando empfangen wurde. Daher werden die empfangenen Daten verworfen und nicht in die Eingangsvariable kopiert. Wenn das zweite EtherCAT-Kommando einen korrekten Working Counter hat, werden die empfangenen Daten für Klemme 3 und Klemme 4 normal verarbeitet. Wenn das zweite EtherCAT-Kommando einen falschen Working Counter zurückliefert, wird Bit 2 von 'Frm0WcState' gesetzt. Das bedeutet, dass entweder Klemme 2 oder Klemme 3 oder sogar sowohl Klemme 2 als auch Klemme 3 den Working Counter nicht korrekt erhöht haben. Daher ist es nicht möglich, mit 'Frm0WcState' zu überprüfen, welche Klemme für den falschen Working Counter verantwortlich ist. Um genauere Informationen über die Zustände der einzelnen Slave-Geräte zu erhalten, muss man die Variable InfoData.State auslesen. - Schließlich fügen wir der Task 1 eine Eingangsvariable hinzu und bilden diese Variable am Kanal 2 von Klemme 4 ab:
- Wählen Sie das EtherCAT-Gerät in der Baumansicht des Systemmanagers aus und öffnen Sie die Registerkarte 'EtherCAT" auf der rechten Seite:
Hier sehen Sie, dass ein weiterer Frame zur Liste hinzugefügt wurde. Der erste Frame besteht aus nur einem LRW-EtherCAT-Kommando mit der Zykluszeit von 1 ms, was der Zykluszeit der Task 1 entspricht. Dieses Kommando wird zyklisch von der Task 1 gesendet und ist für das Lesen der Eingänge von Klemme 4 zuständig. Obwohl der erste Eingang von Klemme 4 auf die Task 2 abgebildet ist, wird der Eingang auch durch das EtherCAT-Kommando der Task 1 ausgelesen. Dies ist der Fall, weil Klemme 4 nur einen Prozessdatenbereich hat. In diesem Fall wird die Task mit der höchsten Priorität für die Prozessdatenkommunikation mit dem Slave-Gerät ausgewählt. Der zweite Frame wird von der Task 2 zyklisch mit einer Zykluszeit von 5 ms gesendet. Das BRD-Kommando wird immer von der Task mit der niedrigsten Priorität gesendet. Die einzelnen Sync Units können durch Drücken der Schaltfläche 'Sync Unit Zuordnung ...' angezeigt werden:
Hier sehen wir, dass die Sync Unit 0 von Klemme 4 der 'sync unit 2' von Task 2 zugewiesen ist. Da wir nun zwei Frames haben, wurden dem Gerät die Eingangsvariablen 'Frm1State' und 'Frm1WcState' hinzugefügt. Mit Hilfe dieser Eingänge kann der Status und der Status des Working Counters des zweiten Frames ausgelesen werden.