Synchronisierung CAN Interface

Der CAN Interface Zyklus, der aus den EtherCAT Output Data die zu sendenden CAN Messages ermittelt und die empfangenen CAN Messages in die EtherCAT Input Data einträgt, ist mit dem EtherCAT-Zyklus synchronisiert. Die Synchronisierung erfolgt per Default über das Sync Manager 2 Event. Im Fast CAN Queue Modus kann die EL6751 auch im Distributed Clocks Modus betrieben werden, dann erfolgt die Synchronisierung über das SYNC0- und das SYNC1-Event.

Buffered CAN Queue

Das folgende Flussdiagramm zeigt den Ablauf des CAN-Zyklus im Buffered CAN Queue Mode.

Synchronisierung CAN Interface 1:
Flussdiagramm CAN-Zyklus im Buffered CAN Queue Mode

Beim Empfang des EtherCAT Prozessdatentelegramms wird das SM2 Event vom EtherCAT Slave Controller generiert und damit der CAN Interface Zyklus gestartet. Jetzt wird geprüft, ob sich der TxCounter (Entry 0x700z:01) in den EtherCAT Output Data geändert hat. Ist dies der Fall gibt NoOfTxMessages (Entry 0x700z:03) an, wie viele CAN Messages in den EtherCAT Output Data übertragen wurden. Die erste CAN Tx Message (Entry 0x700z:04) wird gesendet, wenn kein Sendevorgang aktiv ist, andernfalls wird die CAN Tx Message in die lokale CAN Sende Queue eingefügt. Die weiteren zu sendenden CAN Tx Messages (Entries 0x700z:05 - 0x700z:03+NoOfTxMessages) werden in die lokale Sende CAN Queue eingefügt und automatisch gesendet, sobald die letzte CAN Message gesendet wurde. Danach wird der TxCounter in den EtherCAT Input Data (Entry 0x600z:01) auf den Wert des TxCounters in den EtherCAT Output Data (0x700z:01) gesetzt.

Anschließend werden die seit dem letzten Inkrementieren des RxCounters in den EtherCAT Input Data empfangenen CAN Rx Messages in die EtherCAT Input Data eingetragen, sofern der RxCounter in den EtherCAT Output Data (Entry 0x700z:02) gleich dem RxCounter in den EtherCAT Input Data (Entry 0x600z:02) ist. Weiterhin wird die Anzahl der in die EtherCAT Input Data eingetragenen Messages (Entries 0x600z:05-0x600z:03+NoOfRxMessages) in die NoOfRxMessages (Entry 0x600z:03) der EtherCAT Input Data geschrieben. Dann wird noch die Transaction Number (0x600z:04) der zuletzt gesendeten CAN TxMessage in die EtherCAT Input Data eingetragen und die RxCounter (Entry 0x600z:02) in den EtherCAT Input Data inkrementiert.

Die CAN Interface Zyklus endet mit dem Aktualisieren des CAN Status in den EtherCAT Input Data.

Fast CAN Queue

Der Fast CAN Queue Modus unterscheidet sich im Wesentlichen dadurch, dass es keine lokale CAN Rx Queue gibt und er auch mit Distributed Clocks synchronisiert werden kann. Die empfangenen CAN Rx Messages werden direkt in die EtherCAT Input Data eingetragen, es erfolgt keine lokale Speicherung mehr. Damit der CAN Receiver immer Zugriff auf EtherCAT Input Data hat, funktioniert die Fast CAN Queue nur im 3-Buffer Mode der Sync Manager.

Das folgende Flussdiagramm zeigt den Ablauf des CAN-Zyklus im Fast CAN Queue Mode.

Synchronisierung CAN Interface 2:
Flussdiagramm CAN-Zyklus im Fast CAN Queue Mode

Synchronisation mit SM2 Event

In Senderichtung ist der Ablauf identisch mit dem Buffered CAN Queue Modus. In Empfangsrichtung entfällt das Kopieren der empfangenen CAN Messages aus der lokalen Rx Queue in die EtherCAT Input Data.

Synchronisation mit SYNC0/SYNC1 Event

Wenn Distributed Clocks eingeschaltet sind, würde der CAN Interface Zyklus durch das SYNC0-Event gestartet. Vor dem Senden der ersten CAN Tx Message wird auf das SYNC1-Event gewartet, so dass das Senden der ersten CAN Tx Message mit einem Jitter von maximal 500 ns erfolgt. Die Output Delay Time gibt die Zeit zwischen dem SYNC1-Event und dem starten der CAN-Übertragung der ersten CAN Tx Message im CAN-Controller an. Der weitere Ablauf des CAN Interface Zyklus entspricht dem bei der Synchronisation mit SM2 Event.

EtherCAT Update

Beim EtherCAT Update ist zu beachten, dass die Prozessdaten i.d.R. mit einem LRW-Telegramm übertragen werden. Dadurch vergehen in der Task, mit der der EtherCAT Master Zyklus synchronisiert ist, zwei Zyklen, bis das Inkrementieren des TxCounters von der EL6751 bestätigt wird. Diese Totzeit kann man umgehen, wenn bei der Task das "Separate input update" angewählt wird, da in diesem Fall die EtherCAT Output Data mit einem LWR- und die EtherCAT Input Data kurz vor dem Start des nächsten Task-Zyklus mit einem LRD- Telegramm übertragen werden. Eine zweite Alternative wäre, die Task (und damit den EtherCAT-Masters) mit der halben Zykluszeit des CAN Interface Zyklus laufen zu lassen.