EtherCAT Distributed Clocks

Im Folgenden wird eine Einführung in die Distributed Clocks Technologie als Feature des EtherCAT-Protokolls gegeben. In diesem Abschnitt wird ein anwendernaher Überblick mit den prinzipiellen Aspekten aufgeführt, der für die übliche Anwendung im EtherCAT-System ausreichend sein sollte. Im nachfolgenden Abschnitt werden für den interessierten Anwender Interna und genauere Beschreibungen geliefert, für den üblichen Betrieb eines EtherCAT-Slave sind diese Kenntnisse nicht erforderlich.

EtherCAT Distributed Clocks 1:

Inhalt dieser Dokumentation

Diese Einführung bleibt auf die anwendungsrelevante Funktionsbeschreibung beschränkt. Weitere und ausführlichere Informationen zu EtherCAT im Allgemeinen und Distributed Clocks im Besonderen sind unter http://www.ethercat.org/verfügbar.

Wichtige neueingeführte Begriffe sind im folgenden kursiv gedruckt.

Die folgende Seite besteht aus den Abschnitten

Prinzip der Distributed Clocks

Der Begriff "Distributed Clocks" bezeichnet in der EtherCAT-Terminologie einen logischen Verbund aus verteilten Uhren. Mit den Distributed Clocks ist es bei dem Echtzeit-Ethernet-Protokoll EtherCAT möglich, in allen Busteilnehmern lokal eine in einem sehr engen Bereich gleiche Uhrzeit vorzuhalten. Falls ein EtherCAT-Slave die Distributed Clocks-Funktionalität unterstützt, beinhaltet er eine eigene Uhr, die nach dem Einschalten zunächst lokal arbeitet, basierend auf einem eigenen Taktgeber im EtherCAT-Slave (Quarz, Oszillator, ...). Im EtherCAT-Strang existiert ein ausgewählter EtherCAT-Slave, der die Referenzuhr/Reference Clock (M, siehe Abb. Distributed Clocks im EtherCAT-System) darstellt, auf die sich die Slave Clocks (S) der anderen Teilnehmer und der Steuerung synchronisieren. Diese Reference Clock stellt somit die Systemzeit/System Time dar. Diese Abstimmung und Synchronisierung wird automatisch und fortlaufend vom EtherCAT-Master vorgenommen, wenn dieser die Distributed Clocks Funktionalität unterstützt - wie z. B. der Beckhoff TwinCAT EtherCAT-Master. Dazu sendet der EtherCAT-Master in kurzen Abständen (so häufig, dass die Slave-Clocks innerhalb der spezifizierten Grenzen nicht auseinander laufen) ein spezielles EtherCAT-Datagramm, in das der EtherCAT-Slave mit der Reference Clock seine aktuelle Uhrzeit einträgt. Diese Information wird dann von allen anderen EtherCAT-Slaves mit Slave-Clock aus demselben umlaufenden Datagramm gelesen. Dies ist auf Grund der Ringstruktur von EtherCAT möglich, wenn die Reference Clock topologisch vor allen anderen Slave-Clocks angeordnet ist. Deshalb wird standardmäßig der erste Distributed Clocks fähige EtherCAT-Slave vom EtherCAT-Master als Reference Clock ausgewählt.

In einer EtherCAT-Konfiguration gibt es also einen EtherCAT-Master, der den Bus mit den angeschlossenen EtherCAT-Slaves betreibt und verwaltet. Von diesen EtherCAT-Slaves beinhaltet ein Teilnehmer die Reference Clock, alle anderen EtherCAT-Teilnehmer (also auch der EtherCAT-Master) stellen Slave-Clocks dar.

Das Handling der EtherCAT-Kommunikation und insbesondere der Distributed Clocks Funktionalität in einem EtherCAT-Slave übernimmt der EtherCAT-Slave-Controller (ESC). Dies ist ein elektronisches Bauteil (Chip), das als ASIC oder programmierbares FPGA o.ä. ausgeführt sein kann. Jeder EtherCAT-Slave verfügt über solch einen ESC, damit zyklische und azyklische Prozessdaten vom Master mit dem Slave über den EtherCAT-Feldbus ausgetauscht werden können. Dieser ESC kann direkt einfache Funktionen wie digitale Ein-/Ausgänge verwalten, er kann aber auch über serielle/parallele Interfaces an einen weiteren Prozessor im EtherCAT-Slave angeschlossen werden, der komplexere Aufgabe wie z. B. eine Antriebsregelung übernimmt. Insbesondere aber verwaltet der ESC die lokale Distributed Clocks Funktionalität mit den zugehörigen Aktionen, wenn der EtherCAT-Slave dieses Feature unterstützen soll.

In Abb. Beispielhafter Funktionsumfang eines ESC und seine Einbettung in einen typischen EtherCAT-Slave sei das Schema eines EtherCAT-Slaves dargestellt. Dazu die Einbettung des ESC in diesen mit einer Auswahl seiner Grundfunktionen.

EtherCAT Distributed Clocks 2:
Beispielhafter Funktionsumfang eines ESC und seine Einbettung in einen typischen EtherCAT-Slave

Von der RJ45-Buchse werden die elektrischen Signale über den Trafo zum PHY (PHYsikalische Schnittstelle) geleitet. Er extrahiert aus dem codierten Ethernet-Signal die Nutzdaten und leitet sie dem ESC zur Verarbeitung weiter. Minimal verzögert (da im Durchlauf verarbeitet) wird das EtherCAT-Telegramm dann wieder über PHY und Buchse zum nächsten EtherCAT-Slave weitergeleitet. Der ESC parametriert sich beim Slave-Start selbsttätig mit Konfigurationsdaten aus einem EEPROM. Falls eine weitere CPU im Slave existiert, kann er mit dieser über Schnittstellen kommunizieren.

Folgende Features bietet die Distributed Clocks Einheit des ESC im Vollausbau (geräteimplementierungsabhängig):

In Abb. Distributed Clocks im EtherCAT-System ist die Reference Clock (M) der erste Slave im EtherCAT-Strang mit Distributed Clocks Funktionalität nach dem EtherCAT-Master-IPC. Da jeder Slave auf dem Hin- und Rückweg eine geringe Verzögerung – sowohl im Teilnehmer (S) selbst als auch durch die dazwischen liegende Übertragungsstrecke – verursacht, sind die Laufzeiten (∆t) zwischen Reference Clock und jeweiliger Slave Clock bei der Synchronisierung der Slave Clocks zu berücksichtigen. Es ist also nicht zweckmäßig, einfach die lokale Uhrzeit der Reference Clock in alle nachfolgenden Slave-Uhren zu kopieren, sondern für jeden Slave ist ein eigener Offset-Wert in Abhängigkeit von mehreren Parametern zu berechnen.

Zur Messung der Offset-Zeiten sendet der EtherCAT-Master in der Startphase ein Broadcast-Read-Datagramm auf eine spezielle Adresse in allen ESC's, womit jeder Slave veranlasst wird, den Empfangszeitpunkt des Telegramms (bezüglich seiner lokalen Uhr) sowohl auf dem Hin- als auch auf dem Rückweg zu speichern. Diese gespeicherten Zeitpunkte werden dann vom Master eingelesen und entsprechend verrechnet. Diese Messzyklen finden für alle EtherCAT-Slaves mehrmals statt. Dadurch kann der EtherCAT-Master ein sehr exaktes Abbild der Topologie erstellen, bezogen auf die Frame-Verzögerungen zwischen den EtherCAT-Slaves.

Mit den bisher beschriebenen Aktionen ist ein synchroner Betrieb aller Distributed Clocks im EtherCAT-Verbund gegeben, z. B. in einer Produktionsanlage - hochgenaue relative Zeitangaben sind damit innerhalb der Applikation möglich. Der absolute Bezug zur globalen Realität wird über die Master Clock hergestellt - sie trägt i.d.R. eine Ausprägung der globalen Weltzeit (DCF77, GPS, Internetzeitserver, ...) oder eine andere, als systemübergreifend gültig bezeichnete Zeit (Netzwerkserver, PC-Uhr, BIOS-Uhr, IEEE1588, ...). So startet ein Beckhoff TwinCAT EtherCAT-Master mit den Angaben der lokalen PC-Uhr als Master Clock, um damit die Reference Clock zu initialisieren. Sowohl beim Systemstart als auch im weiteren Betrieb ist allerdings die Nachregelung der Reference Clock (M) nach einer Master Clock möglich, entweder über direkten Kontakt der Master Clock zur Steuerung (z. B. Netzwerkserver) oder über Einspeisung in einen speziellen EtherCAT-Slave (z. B. Beckhoff EL6692, EtherCAT-Bridge-Klemme).
Diese übergeordnete Master Clock verletzt nicht das Primat der Reference Clock, da die kurzfristige und für Echtzeitsteuerungen kritische Synchronisierung im sub-Millisekundenbereich allein von der Reference Clock bestimmt wird - die Synchronisierung der gesamten EtherCAT-Applikation inkl. Steuerungs-PC mit der Master Clock verläuft dagegen in längeren Intervallen.

Folgende Effekte müssen somit von der Distributed-Clocks-Regelung im EtherCAT-Master berücksichtigt werden:

EtherCAT Distributed Clocks 3:
Distributed Clocks im EtherCAT-System

Wenn bei einer Busunterbrechnung ein EtherCAT-Slave nicht mehr mit Synchronisierungsdatagrammen versorgt wird, kann er dennoch weiterhin durch seine lokale Uhr alle Aufgaben erfüllen. Die Distributed Clocks Regelung erfolgt ruckfrei - im Normalbetrieb und auch beim Wiedereinsetzen des EtherCAT-Verkehrs.

Zusammenfassung Technische Daten

Die Distributed Clock Funktion im EtherCAT-Slave-Controller (ESC) hat folgenden Eigenschaften:

Bis jetzt wurde die Distributed Clocks Funktion im ESC ohne Interaktion zur Umgebung betrachtet. Auf der Basis dieser lokalen/globalen Uhrzeit können nun aber zusätzliche Funktionen im EtherCAT-Slave realisiert werden.

Nutzbare Zusatzfunktionen des ESC

Die hochgenau synchronisierte Distributed Clocks Zeit wird vom ESC genutzt, mittels einer Capture/Compare-Einheit auf vorgebbare Zeiten oder Signale von außerhalb des ESC zu reagieren. Wie sich der ESC verhält, wird während des Startups durch die Konfiguration des EtherCAT-Slaves definiert und ist vom Anwender i.d.R. nicht veränderbar.

Aktion nach Zeitvorgabe: Compare - Sync0/1

Die Distributed Clock Einheit im ESC verfügt i.d.R. über 2 Interrupts, die zeitgesteuert ausgelöst werden können. Diese Interrupts heißen SYNC0 und SYNC1. In diesem Fall wäre die Compare-Einheit im ESC aktiv: stimmt die lokale Distributed Clocks Zeit mit einer vom Anwender definierten Vorgabezeit überein, löst der ESC einen Interrupt und die damit verbundenen Vorgänge aus. Dabei kann diese Vorgabezeit einmalig gesetzt werden, was dann auch eine einmalige Aktion im ESC zur Folge hat - Verwendung z. B. bei Beckhoff Timestamp Klemmen.
Der ESC kann aber auch selbsttätig neue Vorgabewerte nachladen, was in diesem Fall eine zyklische Abfolge von ESC-Aktionen zur Folge hat - Verwendung z. B. bei Beckhoff Oversampling Klemmen. Durch die beim ESC-Start z. B. aus einem Slave-eigenen EEPROM geladene Konfigurationsdaten ist parametrierbar, welche Aktion ein ESC beim Auftreten eines SYNC0/SYNC1-Signals letztendlich durchführt. Beispielsweise kann er dann Ausgangsdaten schreiben, Eingangsdaten einlesen oder die Kommunikation mit einem angeschlossenen Microcontroller beginnen.

Reaktion auf externes Signal: Capture - Latch 0/1

Wird ein ESC entsprechend konfiguriert, kann er beim Eintreten eines externen Ereignisses die aktuelle lokale Uhrzeit speichern, sie also mit einer Capture-Einheit ohne Zeitverzug in einen Puffer legen. Solche externen Ereignisse können sein: Ankunft des EtherCAT-Frames, Ende des EtherCAT-Frames, Flanke an einem dezidierten Pin des ESC, Kommunikation mit einem angeschlossenen Microcontroller und noch viele andere mehr.

Anschluss an eine externe Logik - SPI/µC parallel/IO/IRQ

Ein ESC ist nicht nur als Stand-Alone-Einheit zu verwenden, sondern verfügt über Schnittstellen, um mit anderen elektronischen Einheiten zu kommunizieren. Das kann z. B. ein Controller sein, der einen Leistungsantrieb regelt, oder eine Auswertungselektronik eines Drehgebers, s. Abb. Beispielhafter Funktionsumfang eines ESC und seine Einbettung in einen typischen EtherCAT-Slave. Auch die Kommunikation über diese Schnittstellen kann Distributed Clocks gesteuert erfolgen. Damit ist z. B. die Positionsabfrage an eine Drehgeberelektronik zeitlich im ns-Bereich äquidistant.

EtherCAT Distributed Clocks 4:
Schnittstellen der Distributed Clocks Unit

In Abb. Schnittstellen der Distributed Clocks Unit ist die Distributed Clocks Unit mit Ihren Schnittstellen und dem Zusammenwirken mit dem EtherCAT Bus schematisiert.

Anwendung der Distributed Clocks und Synchronität mit der Steuerung im PC

Durch den Distributed Clocks Verbund werden alle EtherCAT-Slaves, die dieses Feature unterstützen, mit einer Abweichung von <100 ns synchron betrieben. An einer Beispielanwendung mit Eingangskanälen soll dieses Prinzip verdeutlicht werden. Auf die Anwendung auf Ausgangskanäle wird im Anschluss eingegangen.

Im Folgenden wird an einem Beispiel mit drei Beckhoff EL1202-0010 die synchrone Erzeugung von SYNC-Signalen zum gleichzeitigen Lesen der Eingänge beschrieben. Andere Funktionen des ESC (Latch-Signale, Anschluß externer Logik) werden ausführlich in den entsprechenden Slave Dokumentationen beschrieben.

Distributed Clocks mit Eingangskanälen

EtherCAT Distributed Clocks 5:
Beispielanwendung Distributed Clocks, Zykluszeit 100 µs

In Abb. Beispielanwendung Distributed Clocks, Zykluszeit 100 µs betreibt der Master PC mit seiner PLC an einem EtherCAT-Master eine EtherCAT-Konfiguration mit 3 digitalen zweikanaligen Eingangsklemmen EL1202-0100 mit Distributed Clocks Unterstützung (die Distributed Clocks-Unterstützung wird durch Umstellung der EL1202 auf die EL1202-0100 im System Manager erreicht, siehe die entsprechende Dokumentation). Welche EtherCAT-Slaves noch eingesetzt werden und welche Entfernungen zwischen den Slaves liegen, spielt dabei keine Rolle. Die steuernde PLC und damit der EtherCAT-Feldbus werden mit 1 ms Zykluszeit betrieben, das heißt alle 1 ms werden die Eingangsklemmen EL1202-0100 nach ihren Eingängen abgefragt. In der EL1202-0100 wird nun die lokale Distributed Clock zum Samplen der beide Eingangskanäle verwendet: mit jedem SYNC-Interrupt liest der ESC direkt den anliegenden Eingangswert (0 oder 1) ein. Passiert dann kurz darauf der EtherCAT-Frame die Klemmen, legt jede EL1202-0100 ihre beiden Bits an der vorgesehenen Stelle im Frame ab. Durch die Verwendung der Distributed Clock erfolgt so das Samplen der Eingänge hochkonstant im fortlaufend gleichen Abstand mit einer Abweichung von < 100 ns. Außerdem lesen alle EL1202-0100 im gesamten EtherCAT-Verbund in der Standardeinstellung ihre Eingänge zum gleichen globalen Zeitpunkt ein, unabhängig von ihrer Anordnung. In einem Zeitdiagramm sieht das wie folgt aus:

EtherCAT Distributed Clocks 6:
Zeitdiagramm Einlesen der EL1202-0100

In Abb. Zeitdiagramm Einlesen der EL1202-0100 ist der Ablauf von 4 kompletten I/O-Zyklen am Beispiel einer EL1202-0100 (vgl. Abb. Beispielanwendung Distributed Clocks, Zykluszeit 100 µs) dargestellt. Die Vorgänge während eines solchen Zyklus' lassen sich wie folgt aufschlüsseln:

Es folgen nähere Erläuterungen zu den Vorgängen in der beispielhaften EL1202-0100:

Nachführung der PC-Echtzeit

In Abb. Zeitdiagramm Einlesen der EL1202-0100 arbeiten 2 Zeiträume nebeneinander: der PC mit seinem Echtzeit-Tick und das Distributed Clocks System mit seinen verteilten Uhren in den EtherCAT-Slaves und dem EtherCAT-Master (der gleichwohl im PC sitzt) - dargestellt durch die grauen Trennlinien A//B.
Der Hintergrund für die Einführung einer zweiten Zeitbasis für die EtherCAT-Slaves mit den daraus abgeleiteten SYNC-Interrupts liegt in dem Jitter, mit dem die EtherCAT-Frames die einzelnen EtherCAT-Slaves passieren. Durch den Durchlauf durch die Slaves, die evtl. variable PLC-Laufzeit und die Qualität des Echtzeit-Ticks kann der Zeitpunkt, wann ein Frame vom PC abgeschickt wird und er dann endlich einen Slave passiert, im µs-Bereich variieren. Wenn Slave-lokale Ereignisse z. B. allein durch die Passage des Kommunikationsframes gestartet werden würden, ergäben sich so gleichermaßen variante Aktionen im Slave. Dies ist für hochgenaue Anwendungen nicht tolerabel. Durch die Einführung von Slave-lokalen geregelten Uhren besitzt nun jeder entsprechende EtherCAT-Slave ein hochgenaue lokale Zeitbasis mit einer Abweichung von < 100 ns zu allen anderen Uhren, was die Qualität aller zeitbasierten Aktionen um mehrere Größenordnungen verbessert.

Durch die beiden unterschiedlichen Zeitbasen würde jedoch schon nach kurzer Zeit die "Feldzeit" (Distributed Clocks/System Time) von der "PC-Zeit" (Betriebssystem/BIOS Uhr) abweichen - und der Abstand würde fortlaufend größer.

Deshalb greift der TwinCAT EtherCAT-Master in die Uhr des PCs ein und stellt diese zyklisch der EtherCAT Reference Clock nach - so bleiben dauerhaft der Echtzeit-Tick der Steuerung und die klemmenlokalen SYNC-Interrupts synchron mit der eingestellten/berechneten globalen Shift Time (Abb. Zeitdiagramm Einlesen der EL1202-0100, blau)

EtherCAT Distributed Clocks 7:

Abgleich auf eine externe Master Clock

Soll ein solcherart geregeltes Automatisierungssystem auf Dauer mit einer äußeren Referenzuhr übereinstimmen (z. B. Weltzeit oder Netzwerk-lokale Zeit), sind z. B. entsprechende EtherCAT-Slaves zu verwenden, die den EtherCAT-Master über die Uhrzeit der Master Clock informieren oder die Master Clock ist direkt an der Steuerung anzuschließen. Der EtherCAT-Master unternimmt dann die entsprechenden Schritte zur Einhaltung einer dauerhaft konstant geringen Regeldifferenz zwischen Master und Reference Clock.

Berechnung der globalen Shift Time

In Abb. Zeitdiagramm Einlesen der EL1202-0100 ist eine blaue "globale Shift Time" angeben. Deren Wert bestimmt, wann in Relation zum Gesamtsystemverhalten der ESC z. B. eine SYNC0/1-Aktion lokal im Slave startet. Die globale Shift Time setzt sich aus verschiedenen, mitunter auch vom Anwender veränderbaren Elementen zusammen, s. Abb. Zeitliche Festlegung des Slave-lokalen SYNC-Pulses in Bezug auf den Echtzeit-Tick des Master-PCs.

EtherCAT Distributed Clocks 8:
Zeitliche Festlegung des Slave-lokalen SYNC-Pulses in Bezug auf den Echtzeit-Tick des Master-PCs

Die Elemente der globalen Shift Time nach Abb. Zeitliche Festlegung des Slave-lokalen SYNC-Pulses in Bezug auf den Echtzeit-Tick des Master-PCs sind

Da sich die o.a. Elemente zur globalen Shift Time aufaddieren lassen, kann es u.U. sinnvoll sein, in den entsprechenden Dialogen negative Werte einzutragen - etwa um mit einer negativen Slave Sync0 Shift Time (s. Abb. Zeitliche Festlegung des Slave-lokalen SYNC-Pulses in Bezug auf den Echtzeit-Tick des Master-PCs) ein früheres Einlesen von Eingangssignalen auszulösen als vom EtherCAT-Master standardmäßig vorgesehen.

Hinweis

Achtung! Keine Plausibilitätskontrolle!

Die aufgeführten Hinweise und Erläuterungen sollten mit Bedacht angewendet werden! Die genannten Einstellungen werden vom EtherCAT-Master automatisch mit Werten belegt, die eine zuverlässige und aktuelle Prozessdatenerfassung unterstützen.
Anwenderseitige Eingriffe an dieser Stelle können zu unerwünschtem Verhalten führen!
Bei der Manipulation dieser Einstellungen im Beckhoff TwinCAT System Manager wird softwareseitig keine Plausibilitätskontrolle durchgeführt!
Eine korrekte Funktion der EtherCAT-Slaves in allen denkbaren Einstellungsvarianten kann nicht gewährleistet werden!
Falls in der entsprechenden Slave-Dokumentation nicht anders angeben, wird dringend davon abgeraten, die automatisch gesetzten Einstellungen zu verändern.

Distributed Clocks mit Ausgangskanälen

Im Wesentlichen unterscheidet sich die Logik die bei Ausgangskanälen angewendet wird nicht von der bereits beschriebenen bei Eingangskanälen. Der einzige Unterschied ist, dass der Slave-lokale SYNC-Takt nun meist zweckmäßigerweise nach der Passage eines datenbringenden EtherCAT-Frames zu erfolgen hat, statt wie bei den Eingangskanälen vor dem Frame. Deshalb findet die Berechnung der oben angegebenen globalen Shift Time (Abb. Zeitdiagramm Einlesen der EL1202-0100, blau) für Ein- und Ausgangs-Slaves getrennt statt. Die standardmäßig ermittelte globale Shift Time für die Gruppe der Ausgangsbaugruppen ist damit größer als die, die für die Gruppe der Eingangsbaugruppen berechnet wird. Beide liegen jedoch in dem sinnvollen Bereich von 0..100% der EtherCAT-Zykluszeit.

In den folgenden Abschnitten wird nun der Zugriff auf die Distributed Clocks-Einstellungen aus dem TwinCAT System Manager heraus erklärt.