EtherCat-Datagram-Header Interrupt

hackaria

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
weiß jemand, wofür im EtherCat-Datagram-Header das Interrupt-Feld verwendet wird? Leider finde ich keinerlei Dokumentation oder Hinweise darauf, wie der Master (TwinCat 2.11) bzw. die Slaves das Feld benutzen.
Hintergrund ist eine vorhandene Aufzeichnung aus einem EtherCat-Netz, bei dem ein fehlerhafter Slave in unregelmäßigen Abständen Netzwerkausfälle auslöst. Das fehlerfreie Datagramm zeigt Workingcounter = 4 und Interrupt = 0x0000, das fehlerhafte Datagram (unmittelbar vor Ausfall des Netzes) zeigt Workingcounter = 3 und Interrupt = 0x0004. Bei dem Datagramm handelt es sich um ein ein LWR (=Logical Memory Write) das die FMMUs von 4 Slaves (Ausgangskarten) adressiert. Einer der Slaves verursacht den Ausfall, da im fehlerhaften Datagramm der Workingcounter nur auf 3 steht. Ist das Interrupt-Feld ein Hinweis auf den betroffenen Slave? Da es sich um ein 16-Bit-Feld handelt (unint16_t), wäre meine Vermutung, dass der dritte von den vier Slaves den Ausfall verursacht haben könnte (001bin = 0x0004hex). Interessanterweise sendet der Master nach dem fehlerhaften Datagramm ein FPWR (= Configured Address Physical Write) an Register 0x0101 (= ESC DL Control, Portsettings) an den Slave, der direkt hinter dem dritten Teilnehmer des LWR-Datagramms sitzt. Wertet der Master hierfür das Interrupt-Feld aus, oder wird das Interrupt-Feld für die Synchronisation der Distributed-Clocks verwendet und hat hiermit nichts zu tun?
Ich hoffe jemand hat eine Idee, wie das zusammenhängt und eventuell eine Beschreibung über die Funktion diese Feldes. Leider habe ich keinen Zugriff auf die Dokumente der Ethercat - Technology - Group (ethercat.org).
 
Interrupt: Shared bit, wird von den Slave Asics gesetzt bei Änderung der Topologie.
Der Master fragt in der Folge dann in der Regel die Statis der einzelnen Slaves ab...
Du kannst somit NICHT auf den Slave schliessen da jeder Slave das Bit setzen kann.
Prinzipiell um solche Fehler einzugrenzen: Nutze SyncUnits sodass jeder Slave ein einzelnes Datagramm erhält.

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Guga,
vielen Dank für den Hinweis über das Interrupt-Feld. Das ist leider wenig dokumentiert. Die Idee mit den SyncUnits hatte unser Anlagenbauer auch, allerdings hat bei der Netzgröße nicht jeder Slave seine eigene Unit, sodern "nur" die einzelnen "Racks". Damit kommen in dem Fall immer noch 6 Teilnehmer in Frage, wobei sich durch die Folgetelegramme der Problemverursacher lokalisieren ließ, denn seit Austausch des Verdächtigen läuft das Netz wieder stabil.
 
Zurück
Oben