EtherCAT MainDevice 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 (EtherCAT MainDevice) sein.

Eine EtherCAT MainDevice 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 MainDevice 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 MainDevice Software
  • Verzicht auf jegliche Abhängigkeit vom Betriebssystem im zyklischen Teil
  • Betrieb ohne Interrupts möglich
  • Keine internen Tasks
  • Aufteilung der Abarbeitung von unkritischen, nicht zyklischen 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 MainDevice 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 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 MainDevice EC-Master betrieben werden, allerdings ist die maximale Anzahl von SubDevices, 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 die EtherCAT MainDevice Software 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 SubDevices
  • Größe der zyklischen Daten
  • Erforderliche Zykluszeit
  • Notwendige EtherCAT MainDevice Software Funktionen, z. B. Distributed Clocks, und Optionen, z. B. Hot Plug
  • Notwendige Rechenleistung für die Applikation

Unsere Erfahrungen haben gezeigt, dass die EtherCAT MainDevice Software 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 EC-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 der EC-Master Software enthaltenen Beispielanwendungen EcMasterDemo und EcMasterDemoDc durchgeführt werden. Es werden jeweils die Min-, Max- und Mittelwerte für die Ausführung der einzelnen EC-Master-Jobs und die Zykluszeit bestimmt und regelmäßig ausgegeben.

Messungen mit den EC-Master Beispielanwendungen

Die Einbindung des EC-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 EC-Master ü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 SubDevices und wird nach der Rückkehr automatisch empfangen ohne dass ein Interrupt notwendig ist. Innerhalb der Funktion „EC-Master Administration“ werden die Zustandsmaschinen des EC-Masters und jedes einzelnen SubDevices ausgeführt. Während des Aufstartvorganges müssen alle SubDevices 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 CAN application protocol over EtherCAT (CoE) abzuwickeln. All dies kann dazu führen, dass ein weiteres Frame mit SubDevice spezifischen Kommandos (Read/Write) erforderlich ist. Dieses azyklische Frame wird anschließend mittels des Jobs „Acyclic Send“ gesendet. Wichtig ist, dass der EC-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 der EC-Master Software (Jobs), sowie den Gesamtrechenzeitverbrauch der zyklischen Task selbst. Die Anwendungen nutzen hierbei die entsprechenden EC-Master Funktionen ecatPerfMeasStart() und ecatPerfMeasEnd() zur hochgenauen Messung von Laufzeiten. Die ermittelten Werte werden regelmäßig in dieser Form ausgegeben:

PerfMsmt 'Cycle Time                     ' (min/avg/max) [usec]:  948.3/1000.0/1053.5
PerfMsmt 'Task Duration (JOB_Total + App)' (min/avg/max) [usec]:    7.4/  12.2/  77.0
PerfMsmt 'JOB_Total                      ' (min/avg/max) [usec]:    7.0/  11.4/  67.5
PerfMsmt 'JOB_ProcessAllRxFrames         ' (min/avg/max) [usec]:    1.3/   3.4/  46.2
PerfMsmt 'JOB_SendAllCycFrames           ' (min/avg/max) [usec]:    3.0/   3.9/  41.5
PerfMsmt 'JOB_MasterTimer                ' (min/avg/max) [usec]:    0.4/   1.5/  37.9
PerfMsmt 'JOB_SendAcycFrames             ' (min/avg/max) [usec]:    1.5/   2.4/  36.9
PerfMsmt 'myAppWorkPd                    ' (min/avg/max) [usec]:    0.0/   0.2/  27.9

Messergebnisse

Die folgenden Messungen wurden jeweils mit 16, 32 und 64 SubDevices auf verschiedenen Controllern mit unterschiedlichen Zykluszeiten durchgeführt. Die prozentuale Belastung der CPU durch den EC-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, 1 GHz

Intel Atom, Elkhart Lake x6425E, 64-Bit, 1.80 GHz

NVIDIA®Jetson AGX Orin™, Cortex®-A78AE, 64-Bit, 2.2 GHz

EC-Master Performance Data Sheet

EC-Master Performance-Messergebnisse auf vielen verschiedenen CPUs, Architekturen, Boards, Betriebssystemen sind verfügbar im EC-Master Performance Data Sheet.