EtherCAT Master Stack Performance

Beim Einsatz der EtherCAT Technologie als Feldbus spielt die Performance oftmals eine entscheidende Rolle. Was ist jedoch mit dem Überbegriff Performance im Detail gemeint? In den meisten Fällen wird Performance mit Geschwindigkeit gleichgesetzt. Bei einem EtherCAT Netzwerk bedeutet dies in der Regel eine schnelle Zykluszeit um schnelle Regelzyklen, z. B. 1 kHz, umsetzen zu können.

Aber eine gute Performance kann auch gleichbedeutend mit einer großen Datenmenge oder dem Betrieb von vielen Feldgeräten an einer Steuerung (dem EtherCAT-Master) sein.

Eine EtherCAT Master Software soll alle diese Anforderungen:

  • Schnelle Zykluszeiten
  • Große Datenmengen
  • Viele Feldgeräte

bei möglichst geringer Belastung der Steuerung gewährleisten. Dabei sollen keine Abstriche bei Funktionalität, Fehlerprüfungen, Diagnosemöglichkeiten und Zuverlässigkeit bei Störungen gemacht werden.

Design-Überlegungen

Damit dies gelingt, muss die EtherCAT Master Software auf eine möglichst effiziente Nutzung der Rechenzeit ausgelegt sein. Dies sind unter anderem:

  • Hochperformante und echtzeitfähige Ethernet Treiber (Link Layer) für die direkte Anbindung des Ethernet Controllers an die Master Software
  • Verzicht auf jegliche Abhängigkeit vom Betriebssystem im zyklischen Teil
  • Betrieb ohne Interrupts möglich
  • Keine internen Tasks
  • Aufteilung der Abarbeitung von unkritischen, nichtzyklischen Aufgaben auf mehrere Zyklen
  • Begrenzung des azyklischen (Mailbox) Datenverkehrs
  • Verwendung von „C“ Macros und optimierten Compilern

Neben der Reduzierung des mittleren Rechenzeitverbrauchs ist insbesondere die Spitzenbelastung (maximaler Rechenzeitverbrauch bzw. maximale Busauslastung) der Steuerung eine kritische Maßzahl. Eine EtherCAT Master-Software muss daher eine Reihe von Parametern zur Verfügung stellen, damit diese Spitzenbelastung reduziert wird. Ziel ist es immer, dass ausreichend Rechenleistung für die eigentliche Applikation, die oberhalb des Masters läuft, zur Verfügung steht und dass das vorgegebene Timing immer eingehalten wird.

System Parameter

EtherCAT kommt inzwischen in sehr vielen unterschiedlichen Anwendungen zum Einsatz. Dabei werden als Steuerungshardware kleine Embedded Boards (Cortex-M4 etc.), leistungsfähige ARM Multi Core Boards (Cortex A57 etc.), oder high-end Industrie PCs (Intel Core i5, i7 etc.) verwendet. Auf all diesen Systemen kann der EtherCAT Master EC-Master betrieben werden, allerdings ist die maximale Anzahl von Slaves, die maximale Größe der zyklischen Daten und die kürzest mögliche Zykluszeit sehr unterschiedlich. Bei der Auswahl der erforderlichen CPU für eine bestimmte Anwendung ist aber nie der EtherCAT Master die bestimmende Größe, sondern immer die eigentliche Applikation welche die Daten zu verarbeiten hat.

Folgende Faktoren und Parameter bestimmen die erzielbare Performance bzw. die Auswahl der erforderlichen Steuerungshardware:

  • Anzahl und Typ der Slaves
  • Größe der zyklischen Daten
  • Erforderliche Zykluszeit
  • Notwendige EtherCAT Master Funktionen, z. B. Distributed Clocks, und Optionen, z. B. Hot Plug
  • Notwendige Rechenleistung für die Applikation

Unsere Erfahrungen haben gezeigt, dass der EtherCAT Master EC-Master, in der Regel, nur 10-20% der zur Verfügung stehenden CPU Leistung benötigt.

Messmethodik

Um die Auswahl der Steuerungshardware zu unterstützen bzw. um Aussagen treffen zu können was mit einer bestehenden Hardware hinsichtlich EtherCAT möglich ist, kann man auf bereits vorhandene Performancewerte zurückgreifen oder auch eigene Messungen durchführen. Wichtig ist hierbei, dass im kritischen zyklischen Teil der Applikation der Rechenzeitverbrauch sämtlicher Ablaufpfade, welche der Master Stack durchläuft korrekt und vollständig gemessen wird. Acontis hat in den letzten Jahren sehr viele Performancemessungen auf unterschiedlichen Systemen mit verschiedenen Betriebssystemen mit der gleichen Referenzkonfiguration durchgeführt. Diese Daten können für eine grobe Einschätzung der erzielbaren Performance herangezogen werden.

Die zuverlässigsten Werte erhält man jedoch mit einer aktuellen Messung auf der echten Hardware unter dem gewünschten Betriebssystem und der echten Netzwerkkonfiguration (ENI Datei). Diese Messungen erfordern kein spezielles Knowhow oder zusätzliches Equipment und können sehr einfach mit den im Lieferumfang des acontis EtherCAT Master Stack EC-Master enthaltenen Beispielanwendungen EcMasterDemo und EcMasterDemoDc durchgeführt werden. Es werden jeweils die Min-, Max- und Mittelwerte für die Ausführung der einzelnen Master-Jobs und die Zykluszeit bestimmt und regelmäßig ausgegeben.

Messungen mit den EC-Master Beispielanwendungen

Die Einbindung des EtherCAT Master in den zyklischen Teil der Applikation erfolgt durch den synchronen Aufruf von Funktionen, welche jeweils eine bestimmte Aufgabe erfüllen. Diese Aufrufe, auch Jobs genannt, erfolgen aus einer hoch priorisierten, meist schon bestehenden Task heraus und steuern dadurch auch das Netzwerktiming. Diese Jobs werden im Kontext der Applikation aufgerufen, es erfolgt keine Interaktion mit weiteren Tasks der Applikation. Somit kann der Rechenzeitverbrauch des Masterstack über die Messung des Rechenzeitverbrauchs dieser Funktionen sehr einfach und auch vollständig ermittelt werden.
Die Funktionen im Einzelnen sind:

Die meisten Anwendungen arbeiten gemäß diesem Timing auf dem EtherCAT Netzwerk:

Nach dem Start werden zunächst die Eingangsdaten aktualisiert. Dies erfolgt durch die Auswertung der zuvor empfangenen EtherCAT Frames. Auf Basis der aktuellen Eingänge berechnet die Applikation die resultierenden Ausgänge und löst zum Abschluss das Senden des zyklischen Frames aus. Der Frame wird mit Hilfe von Direct Memory Access (DMA) ohne Belastung der CPU vom Speicher in den Ethernet Controller transportiert und über das Netzwerk gesendet. Der Frame durchläuft dann alle EtherCAT Slaves und wird nach der Rückkehr automatisch empfangen ohne dass ein Interrupt notwendig ist. Innerhalb der Funktion „Master Administration“ werden die Zustandsmaschinen des Masters und jedes einzelnen Slaves ausgeführt. Während des Aufstartvorgangs müssen alle Slaves aus dem Zustand INIT schrittweise in den Zustand OPERATIONAL überführt werden. Die Zustandsmaschinen werden aber auch noch danach benötigt, um, z. B. den Download eines Parameters über das Mailbox Protokoll CANOpen over EtherCAT (CoE) abzuwickeln. All dies kann dazu führen, dass ein weiteres Frame mit Slave spezifischen Kommandos (Read/Write) erforderlich ist. Dieses azyklische Frame wird anschließend mittels des Jobs „Acyclic Send“ gesendet. Wichtig ist, dass der Master in der Lage ist, den azyklischen Datenverkehr zu begrenzen, da ansonsten entweder das Netzwerk, oder die CPU überlastet werden könnte.

Performancemessungen anhand der Beispielanwendung EcMasterDemo

Alle mitgelieferten Beispielanwendungen messen im zyklischen Teil der Anwendung (bei Aktivierung mittels des Kommandozeilenparameters –perf) die Ausführungszeiten der zyklisch aufzurufenden Funktionen des Master-Stack (Jobs), sowie den Gesamtrechenzeitverbrauch der zyklischen Task selbst. Die Anwendungen nutzen hierbei die entsprechenden Master Funktionen ecatPerfMeasStart() und ecatPerfMeasEnd() zur hochgenauen Messung von Laufzeiten. Die ermittelten Werte werden regelmäßig in dieser Form ausgegeben:

PerfMsmt 'JOB_ProcessAllRxFrames' (min/avg/max) [usec]:   12.5/  15.9/  25.6
PerfMsmt 'JOB_SendAllCycFrames  ' (min/avg/max) [usec]:    3.6/   5.7/  14.8
PerfMsmt 'JOB_MasterTimer       ' (min/avg/max) [usec]:    2.1/   3.7/   8.2
PerfMsmt 'JOB_SendAcycFrames    ' (min/avg/max) [usec]:    0.3/   0.6/   2.6
PerfMsmt 'Cycle Time            ' (min/avg/max) [usec]:  918.4/ 999.6/1067.9
PerfMsmt 'myAppWorkPd           ' (min/avg/max) [usec]:    0.1/   0.4/   0.8
PerfMsmt 'JOB_Total             ' (min/avg/max) [usec]:   19.0/  25.9/  39.2

Messergebnisse

Die folgenden Messungen wurden jeweils mit 16, 32 und 64 Slaves auf verschiedenen Controllern mit unterschiedlichen Zykluszeiten durchgeführt. Die prozentuale Belastung der CPU durch den EtherCAT Master ergibt sich aus dem Verhältnis der aufsummierten Laufzeiten der Jobs und der Zykluszeit.

Texas Instruments AM3359, ARM Cortex-A8, 32-Bit, 600 MHz

NXP i.MX 8, ARM Cortex-A72, 64-Bit, 1000 Mhz

Intel Atom,  D510, 64-Bit, 1600MHz