Überwachung von SyncUnits

PatrickSt

Level-2
Beiträge
31
Reaktionspunkte
14
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine modular aufgebaute Anlage, bei der einzelne Module an- und abgeschlossen werden können.
Die einzelnen Module sind verschiedenen Sync-Units zugeordnet.
1748941482974.png

Innerhalb der einzelnen Sync-units kann es jetzt aber auch noch sein, dass Klemmen verschiedenen Tasks zugeordet sind (siehe oben).

Mein Ziel ist es jetzt eine Diagnose des EtherCAT Rings zu machen, um zu überprüfen, ob einzelne Sync-Units entweder komplett vorhanden sind, oder gar nicht vorhanden sind. (Anm.: Je nach Betriebsmodus werden einzelne SyncUnits gar nicht gebraucht, dann macht es auch nichts, wenn sie nicht da sind, wenn sie aber gebraucht werden, dann bitte auch vollständig).

Ich hab jetzt mal mit ein paar Funktionen aus der EtherCAT-Lib herumgespielt, aber bisher bin ich beim Scannen aller slaves (was ja recht komfortabel geht) noch nicht drauf gekommen, wie ich denn anhand der zurück gegebenen Infos auf die SyncUnit schließen kann.

1748941671302.png

Keine der Funktionen oben gibt mir als info die SyncUnit.

Ich habe mittlerweile rausgefunden, dass ich über die Prozessabbild-Info auf ObjectId und State komme. Das habe ich aber dann für jede Task in jeder Sync-Unit getrennt (also für jeden grünen Punkt im ersten Screenshot).
1748942162967.png
Das geht schon, ich kann mir auch in der SPS dann wieder den String für die SyncUnit herausgeben lassen:
1748941974495.png

Und wenn ich hier ObjectID und State überwache bekomme ich auch mit, wenn Slaves fehlen (oder nicht in OP sind), ohne, dass ich jeden einzelnen Slave verlinken muss.

Aber wisst ihr, ob das auch einfacher geht? Also ohne den Schritt mit den einzelnen Tasks pro SyncUnit? (im echten Projekt sind es 7 SyncUnits mit je 2-3 Tasks)
 
Ich denke da gibt es nichts einfacheres, habe mich aber mit diesem Details nicht in aller Tiefe auseinandergesetzt.
Letztendlich vom Prinzip: EtherCAT optimiert seine Datagramme sodass viele Teilnehmer ein Datagramm nutzen. Eine Taks bedeutet damit immer (mind). einen Frame in dem dann die verschiedenen Datagramme integriert sind.
Die Fehlererkennung läuft auf Datagrammebene, d.h. in dem Körbchen sind nun alle Eier entweder gut oder eben schlecht.
Mit SyncUnits zwingt man nun das verschiedene Teilnehmer in verschiedene Datagramme.

Die Darstellung im XAE ist nun eine logische Umsortierung. Elemente im EA-Baum die grün dargestellt werden bzw. unterhalb eines grünen Knotens sind werden logisch vom Master errechnet und kommen somit nicht nativ vom Feldbus (e.g. der WcState unterhalb einer SyncUnit oder auch unterhalb eines EA-Devices).

Wenn keine EtherCAT-Diagnose notwendig ist dann prüfe ich zumindest unter dem EtherCAT-Master die Frame0WcState, Frame1WCState... Variablen auf 0. Die Bit da drinnen geben für die Datagramme im FrameX den WcState an (und das ist was der EtherCAT tatsächlich liefert).
Jede Task wird dir letztendlich einen Frame generieren. Welcher Frame/Datagramm für deine SyncUnit benutzt wird siehst du auf dem EtherCAT-Master. Ich würde jetzt vermutlich nur entsprechenden Bits dann zusammenfassen und auswerten. Ist dann leider hard codiert und kann ich somit nicht empfehlen.
 
Zurück
Oben