Allgemeines
Um EtherCAT zu betreiben, braucht man eine CPU, eine kompatible Netzwerkkarte, ein RJ45-Kabel und ein Slave-Gerät.
Echtzeit-Bussystem
EtherCAT ist ein Echtzeit-Bussystem, das auf Ethernet-Technologie basiert. Ein- und Ausgänge, Sensoren, Antriebe und Displays werden alle direkt durch EtherCAT erreicht.
EtherCAT-Telegramm

Das EtherCAT-Telegramm beginnt mit einem Ethernet-Header, gefolgt von den EtherCAT-Daten. Das Telegramm wird von der Frame Check Sequence (FCS) abgeschlossen. Die EtherCAT-Daten beginnen mit einem EtherCAT-Header, gefolgt von den EtherCAT-Datagrammen. Falls der gesamte Ethernet-Frame kleiner als 64 Bytes ist, werden 1 bis 32 Padding Bytes am Ende der EtherCAT-Daten eingefügt. Bis zu 15 Datagramme können in den EtherCAT-Daten enthalten sein. Ein Datagramm besteht aus einem Header, den zu lesenden oder zu schreibenden Daten und einem Working Counter.
„EtherCAT Header“
Der „EtherCAT Header“ teilt sich auf in eine Längenangabe, einem reservierten Bit und einer Angabe für den Protokoll-Typ.

Feld | Datentyp | Wert/Beschreibung |
---|---|---|
Length | 11 Bit | Länge des EtherCAT-Datagrams (ohne FCS) |
Reserved | 1 Bit | Reserviert, 0 |
Type | 4 Bit | Protokoll-Typ. Nur EtherCAT-Kommandos (Typ = 0x1) werden von ESCs unterstützt. |
EtherCAT-Datagramm
Der „Datagram Header“ teilt sich auf in eine Angabe für den EtherCAT Kommando-Typ, einer numerischen Kennung, die vom Master für die Identifizierung von Duplikaten oder verlorengegangenen Datagrammen verwendet wird, und einer Adressenangabe. Es folgen eine Längenangabe, die die Länge der innerhalb des Datagramms folgenden Daten angibt, zwei reservierte Bits, ein Bit, um zirkulierende Frames zu verhindern, noch ein reserviertes Bit, ein Bit, das angibt, ob noch ein weiteres EtherCAT-Datagramm folgt, und schließlich ein EtherCAT Ereignis-Abfrage-Register.

Feld | Datentyp | Wert/Beschreibung |
---|---|---|
Cmd | BYTE | EtherCAT Kommando-Typ |
Idx | BYTE | Der Index ist eine numerische Kennung, die vom Master für die Identifizierung von Duplikaten oder verlorengegangenen Datagrammen verwendet wird. Der Index sollte von den EtherCAT-Slaves nicht geändert werden. |
Address | BYTE[4] | Adresse: Auto-Inkrement, Configured Station Address oder Logische Adresse |
Len | 11 Bit | Länge der innerhalb dieses Datagramms folgenden Daten |
R | 3 Bit | Reserviert, 0 |
C | 1 Bit | Umlaufender Frame: 0: Frame läuft nicht um 1: Frame ist einmal umgelaufen |
M | 1 Bit | Mehrere EtherCAT Datagramme 0: Letztes EtherCAT Datagramm 1: Mindestens ein weiteres EtherCAT Datagramm folgt noch |
IRQ | WORD | EtherCAT Ereignis-Abfrage-Register von allen Slave-Geräten kombiniert mit einem logischen ODER |
Data | BYTE[n] | Zu lesende oder zu schreibende Daten |
WKC | WORD | Working Counter |
Positions-Adressierung
Die Positions-Adressierung sollte nur während des Start-Ups des EtherCAT-Systems verwendet werden, um den Feldbus zu scannen. Später sollte die Positions-Adressierung nur verwendet werden, um neu hinzugefügte Slaves zu erkennen.
Das Datagramm beinhaltet die Positions-Adresse des adressierten Slave-Gerätes als negativen Wert. Jeder Slave erhöht diese Adresse. Der Slave, der diese Adresse gleich null liest, wird adressiert und wird das zugehörige Kommando ausführen, sobald er es erhält.

Node-Adressierung
Node-Adressierung wird typischerweise für Registerzugriff auf einzelne und schon identifizierte Geräte verwendet.
Die Configured Station Address wird vom Master beim Start-Up zugewiesen und kann vom EtherCAT-Slave nicht verändert werden. Die Configured Station Alias Adresse ist im ESI-EEPROM (ESI: EtherCAT Slave Information) gespeichert und kann vom EtherCAT-Slave verändert werden. Der Configured Station Alias muß vom Master aktiviert werden. Das jeweilige Kommando wird ausgeführt, wenn die Node Address entweder mit der Configured Station Address oder mit dem Configured Station Alias übereinstimmt.
Modus | Feld | Datentyp | Wert/Beschreibung |
---|---|---|---|
Position Address / Auto Increment Address | Position | WORD | Jeder Slave erhöht den Wert Position. Der Slave wird adressiert, wenn Position = 0. |
Offset | WORD | Lokale Registeradresse oder lokale Speicheradresse des ESCs | |
Node Address / Configured Station Address und Configured Station Alias | Address | WORD | Der Slave wird adressiert, wenn Address der Configured Station Address entspricht oder dem Configured Station Alias (wenn aktiviert) entspricht. |
Offset | WORD | Lokale Registeradresse oder lokale Speicheradresse des ESCs | |
Broadcast | Position | WORD | Jeder Slave erhöht das Feld Position (, welches nicht für die Adressierung verwendet wird). |
Offset | WORD | Lokale Registeradresse oder lokale Speicheradresse des ESCs | |
Logical Address | Address | DWORD | Logische Adresse (konfiguriert von den FMMUs) Der Slave wird adressiert, wenn die FMMU Konfiguration dem Feld Address entspricht |
Broadcast-Adressierung
Die Broadcast-Adressierung wird zum Beispiel für die Initialisierung aller Slave-Geräte verwendet.
Logische-Adressierung
Logische Adressierung unterstützt die bitweise Zuordnung von Daten. Logische Adressierung verringert überflüssige Kommunikationsinhalte bei der Prozessdaten-Kommunikation.
Alle Geräte lesen von und schreiben zu demselben Adressbereich des EtherCAT-Telegramms. Jeder Slave benutzt eine Abbildungseinheit (FMMU, Fieldbus Memory Management Unit), um Daten vom logischen Prozeßdatenabbild auf seinen lokalen Adress- und Speicherbereich abzubilden. Während des Start-Ups konfiguriert der Master die FMMUs eines jeden Slaves. Indem ein Slave die Konfigurationsinformation seiner FMMUs benutzt, weiß ein Slave, welche Teile des logischen Prozessdatenabbildes auf welchen lokalen Addressbereich und Speicherbereich abgebildet werden sollen.
EtherCAT-Kommando-Typen
In der nachfolgenden Tabelle werden alle unterstützten EtherCAT-Kommando-Typen aufgelistet. Bei kombinierten Lese- und Schreibeoperationen wird die Leseoperation vor der Schreibeoperation ausgeführt.
Cmd | Abkürzung | Name | Beschreibung |
---|---|---|---|
0 | NOP | No Operation | Ein Slave ignoriert das Kommando. |
1 | APRD | Auto Increment Read | Ein Slave erhöht die Adresse. Ein Slave schreibt die gelesenen Daten in das EtherCAT-Datagramm, wenn die erhaltene Adresse gleich null ist. |
2 | APWR | Auto Increment Write | Ein Slave erhöht die Adresse. Ein Slave schreibt Daten in einen Speicherbereich, wenn die erhaltene Adresse gleich null ist. |
3 | APRW | Auto Increment Read Write | Ein Slave erhöht die Adresse. Ein Slave schreibt die gelesenen Daten in das EtherCAT-Datagramm und schreibt die neu mitgebrachten Daten in denselben Speicherbereich, wenn die erhaltene Adresse gleich null ist. |
4 | FPRD | Configured Address Read | Ein Slave schreibt die gelesenen Daten in das EtherCAT-Datagramm, wenn seine Slave-Adresse mit einer der im Datagramm konfigurierten Adressen übereinstimmt. |
5 | FPWR | Configured Address Write | Ein Slave schreibt Daten in einen Speicherbereich, wenn seine Slave-Adresse mit einer der im Datagramm konfigurierten Adressen übereinstimmt. |
6 | FPRW | Configured Address Read Write | Ein Slave schreibt die gelesenen Daten in das EtherCAT-Datagramm und schreibt die neu mitgebrachten Daten in denselben Speicherbereich, wenn seine Slave-Adresse mit einer der im Datagramm konfigurierten Adressen übereinstimmt. |
7 | BRD | Broadcast Read | Alle Slaves schreiben ein logisches ODER der Daten vom Speicherbereich und der Daten vom EtherCAT-Datagramm in das EtherCAT-Datagramm. Alle Slaves erhöhen das Feld Position. |
8 | BWR | Broadcast Write | Alle Slaves schreiben Daten in einen Speicherbereich. Alle Slaves erhöhen das Feld Position. |
9 | BRW | Broadcast Read Write | Alle Slaves schreiben ein logisches ODER der Daten vom Speicherbereich und der Daten vom EtherCAT-Datagramm in das EtherCAT-Datagramm, alle Slaves schreiben Daten in den Speicherbereich. BRW wird typischerweise nicht benutzt. Alle Slaves erhöhen das Feld Position. |
10 | LRD | Logical Memory Read | Ein Slave schreibt gelesene Daten in das EtherCAT-Datagramm, wenn die erhaltene Adresse mit einem der für das Lesen konfigurierten FMMU Bereiche übereinstimmt. |
11 | LWR | Logical Memory Write | Slaves schreiben Daten in ihren Speicherbereich, wenn die erhaltene Adresse mit einem der für das Schreiben konfigurierten FMMU Bereiche übereinstimmt. |
12 | LRW | Logical Memory Read Write | Ein Slave schreibt gelesene Daten in das EtherCAT-Datagramm, wenn die erhaltene Adresse mit einem der für das Lesen konfigurierten FMMU Bereiche übereinstimmt. Slaves schreiben Daten in ihren Speicherbereich, wenn die erhaltene Adresse mit einem der für das Schreiben konfigurierten FMMU Bereiche übereinstimmt. |
13 | ARMW | Auto Increment Read Multiple Write | Ein Slave erhöht das Feld Adresse. Ein Slave schreibt gelesene Daten in das EtherCAT-Datagramm, wenn die erhaltene Adresse null ist, anderenfalls schreibt ein Slave Daten in den Speicherbereich. |
Working Counter
Der Working Counter wird erhöht, wenn ein EtherCAT-Teilnehmer erfolgreich adressiert worden ist und eine Leseoperation, eine Schreibeoperation oder eine Lese- und Schreibeoperation erfolgreich durchgeführt worden ist. Jedem Datagramm kann ein Wert für den Working Counter zugeordnet werden, der erwartet wird, nachdem das Telegramm alle Teilnehmer durchlaufen hat. Der Master kann überprüfen, ob ein EtherCAT-Datagramm erfolgreich verarbeitet worden ist, indem er den für den Working Counter zu erwartenden Wert mit dem nach dem Durchlaufen aller Teilnehmer ankommenden und tatsächlichen Wert des Working Counters vergleicht.
Kommando | Erfolg | Erhöhung |
---|---|---|
Lese-Kommando | Keinen Erfolg | Keine Änderung |
Erfolgreiches Lesen | +1 | |
Schreibe-Kommando | Keinen Erfolg | Keine Änderung |
Erfolgreiches Schreiben | +1 | |
Lese-/Schreibe-Kommando | Keinen Erfolg | Keine Änderung |
Erfolgreiches Lesen | +1 | |
Erfolgreiches Schreiben | +2 | |
Erfolgreiches Lesen und Schreiben | +3 |
„EtherCAT Slave Controller“

Jeder Teilnehmer sieht den EtherCAT-Frame durch ein schmales Datenfenster. Die Daten werden zur Laufzeit gelesen und geschrieben. Dabei können dem EtherCAT-Telegramm einzelne Bits oder auch größere Datenpakete entnommen oder eingefügt werden.
Bis zu 65535 Teilnehmer können am Datenaustausch teilhaben. EtherCAT ist flexibel im Hinblick auf die topologische Anordnung seiner Teilnehmer: Linien-, Baum- und Sterntopologie können konfiguriert und aufgebaut werden. Eine Ringtopologie ermöglicht Kabel-Redundanz.
EtherCAT-Schnittstellen
Ein ASIC ist ein applikationsspezifischer integrierter Schaltkreis. Der ET1100 ASIC ist zum Beispiel ein EtherCAT Slave Controller (ESC). Er kümmert sich um die EtherCAT-Kommunikation als eine Schnittstelle zwischen dem EtherCAT-Feldbus und der Slave-Applikation. Ein FPGA ist ein „Field Programmable Gate Array“.
Media Access Control „MAC“ steht für Stationszugriff auf ein Kommunikationsmedium. Mit vollem Duplex-Ethernet kann jede Station zu jeder Zeit Daten senden. Ein Physical Layer Device „PHY“ konvertiert Daten vom Ethernet Kontroller zu elektrischen oder optischen Signalen. Das Media Independent Interface „MII“ ist ein standardisiertes Interface zwischen einem Ethernet-Media Access Controller und einem Physical Layer Device. „RMII“ steht für Reduced Media Independent Interface.
Die EtherCAT-Schnittstellen und Ports verbinden den ESC mit anderen EtherCAT-Slaves und dem Master. Die MAC-Schicht ist integraler Bestandteil des ESCs. Die physikalische Schicht kann Ethernet oder EBUS sein. Die physikalische Schicht für EBUS ist voll in FPGAs oder ASICs integriert. Für Ethernet Ports stellen externe Ethernet PHYs die Verbindung zu den MII/RMII Ports des ESCs her. Die Übertragungsgeschwindigkeit für EtherCAT ist fest auf 100 Mbit/s mit voller Duplex-Kommunikation eingestellt. Der Verbindungsstatus und der Kommunikationsstatus werden dem überwachenden Gerät mitgeteilt. EtherCAT-Slaves unterstützen zwei bis vier Ports. Die logischen Ports werden im Bild mit 0-1-2-3 nummeriert, in TwinCAT werden sie mit A-B-C-D bezeichnet.

EtherCAT Processing Unit
Die EtherCAT Processing Unit (EPU) erhält, analysiert und verarbeitet den EtherCAT-Datenstrom. Sie ist logisch zwischen Port 0 und Port 3 angeordnet. Der Hauptzweck der EtherCAT Processing Unit ist es, den Zugriff auf die internen Register und auf den Speicherbereich des ESCs zu ermöglichen und zu koordinieren. Der Speicherbereich des ESCs kann vom EtherCAT-Master und über das Prozess-Daten-Interface (PDI) von der lokalen Applikation adressiert werden. Datenaustausch zwischen der Masterapplikation und der Slaveapplikation ist vergleichbar mit einem Speicher (Prozeßspeicher) mit zwei Ports, wobei der Speicher mit speziellen Funktionen, zum Beispiel für Konsistenzprüfung (SyncManager) und Datenabbildung (FMMU), erweitert worden ist. Die EtherCAT Processing Unit enthält die Hauptfunktionsblöcke der EtherCAT-Slaves neben dem Auto-Forwarding, der Loop-Back-Funktion und dem PDI.
Auto-Forwarder
Der Auto-Forwarder erhält die Ethernet-Frames, führt eine Überprüfung der Frames durch und leitet sie weiter zur Loop-Back-Funktion. Die Zeitstempel der erhaltenen Frames werden vom Auto-Forwarder generiert.
Loop-Back-Funktion
Die Loop-Back-Funktion leitet Ethernet Frames zum nächsten logischen Port weiter, wenn es an einem Port keinen Link gibt, wenn der Port nicht erreichbar ist oder wenn die Schleife für den Port geschlossen ist. Die Loop-Back-Funktion von Port 0 leitet die Frames an die EtherCAT Processing Unit weiter. Die Loop-Einstellungen können vom EtherCAT-Master kontrolliert werden.
FMMU
Fieldbus Memory Management Units werden dazu benutzt, logische Adressen bitweise auf physikalische Adressen des ESCs abzubilden.
SyncManager
SyncManager sind verantwortlich für einen konsistenten Datenaustausch und für die Mailbox-Kommunikation zwischen dem EtherCAT-Master und den EtherCAT-Slaves. Die Kommunikationsrichtung kann für jeden SyncManager eingestellt werden. Lesevorgänge oder Schreibevorgänge können für den EtherCAT-Master und einen angeschlossenen Mikrocontroller Ereignisse erzeugen. Die SyncManager sind für den hauptsächlichen Unterschied zwischen einem ESC und einem Speicher mit zwei Ports verantwortlich, weil sie in Abhängigkeit vom SyncManager Status Adressen auf verschiedene Buffer abbilden und Zugriffe blockieren. Das ist auch der fundamentale Grund für Einschränkungen in der Bandbreite der PDI Schnittstelle.
Monitoring
Die Monitoring-Einheit enthält Bausteine für das Zählen von Fehlern, und sie enthält Watchdogs. Die Watchdogs überwachen die Kommunikation. Die Fehlerzähler helfen bei der Analyse von Fehlern.
Reset
Der integrierte Reset-Kontroller beobachtet die Spannungsversorgung und kontrolliert externe und interne Resets. Ihn gibt es nur in den Beckhoff ET1100 ASICs und den Beckhoff ET1200 ASICs.
Distributed Clocks
Distributed Clocks erlauben eine präzise synchronisierte Erzeugung von Ausgangssignalen, ein präzise synchronisiertes Einlesen von Eingängen und ein Erzeugen von Zeitstempeln für Ereignisse. Die Synchronisierung kann das gesamte EtherCAT-Netzwerk umspannen.
Memory
Ein EtherCAT-Slave kann einen Adressraum von bis zu 64 Kbyte haben. Der erste Block von 4Kbyte, 0x0000-0x0fff, wird für Register und für Benutzerspeicher verwendet. Der Speicher von der Adresse 0x1000 bis zur Adresse 60 Kbyte wird als Prozeßdatenspeicher verwendet. Die Größe des Prozeßdatenspeichers hängt vom Gerät ab. Der ESC Adressbereich ist direkt vom EtherCAT-Master oder einem angefügten Mikrokontroller ansprechbar.
Process Data Interface
In Abhängigkeit vom ESC gibt es mehrere Typen von PDIs: Digitales-I/O, SPI-Slave, 8-16 Bit Mikrokontroller, On-Chip-Bus, Viel-Zweck-I/O.
ESI-EEPROM
Für die ESC-Konfiguration und die Gerätebeschreibung wird ein nicht-flüchtiger Speicher benötigt.
Status
Der Status-Block liefert ESC-Information und Applikationsstatus-Information. Er kontrolliert externe LEDs, wie die Applikations-RUN-LED oder die Applikations-ERR-LED, wie die Port-Link-LEDs oder die Port-Aktivitäts-LEDs.