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 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

Texas Instruments TDA4VM, with TDA4VH-Q1, Jacinto 8x Cortex™-A72 up to 2000 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 Measurement Results

Date Silicon Vendor CPU Core Arch. Board Operating
System
EC-Master
Version
Build
Spec
RtEth DC Cycle Time
Avg [us]
Cycle Time
Max [us]
JOB Total
Avg [us]
JOB Total
Max [us]
CPU_Load
Avg %
2022-02-17 NXP iMX8   ARM_64Bit Toradex Apalis QNX_7.1 3.1.3.99 Full emllFslFec Yes 1000,0 1043,1 38,7 56,8 4%
2022-08-08 NXP iMX8   ARM_64Bit Variscite Xenomai 3.1.4.99 Full emllFslFec No 1000,0 1014 22,2 39,3 2%
2022-08-08 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Xenomai 3.1.4.03 Full emllI8254x No 1000,0 1015,2 26,2 52,6 3%
2022-08-08 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Xenomai 3.1.4.03 Full emllI8254x Yes 999,9 1023,1 28,8 56,5 3%
2022-11-17 Texas Instruments Sitara AM64xx R5 Cortex ARM_32Bit   FreeRTOS 3.1.4.06 Full emllTiEnetIcssg No 1000,3 1019,8 83,1 121,8 8%
2022-11-17 Xilinx Zync-7000 A15 Cortex ARM_32Bit ZC702 FreeRTOS 3.1.4.06 Full emllGEM No 1000,1 1031,5 93,9 171,5 9%
2022-11-17 Xilinx Zync-7000 R5 Cortex ARM_32Bit ZCU104 FreeRTOS 3.1.4.06 Full emllGEM No 1000,0 1027,2 87,6 164,8 9%
2023-01-16 Texas Instruments Sitara AM64xx   ARM_64Bit IDK Linux 3.1.4.07 Full emllSockRaw No 1000,0 1055,6 43,2 188,4 4%
2023-01-16 Texas Instruments Sitara AM64xx   ARM_64Bit IDK Linux 3.1.4.07 Full emllSockRaw Yes 999,9 1073,9 57,8 214,6 6%
2023-01-16 NXP iMX8   ARM_64Bit Toradex Apalis Linux 3.1.4.07 Full emllSockRaw No 1999,9 2023,7 29,4 72,7 1%
2023-03-27 Intel Celeron 827E   x86_64Bit CX2020 QNX_8.0 3.1.4.99 Full emllCCAT No 999,3 1009,8 13,4 32,6 1%
2023-05-30 Rockchip RK3399   ARM_64Bit OrangePi4 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1055,5 52,1 115,5 5%
2023-05-30 Rockchip RK3588s   ARM_64Bit OrangePi5 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1028,4 10,3 16,9 1%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock3 Linux 3.1.4.10 Full emllDW3504 No 1000,0 1039,2 20,7 53,4 2%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock3 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1031,4 26,3 43,8 3%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock64 Linux 3.1.4.10 Full emllDW3504 No 1000,0 1068,9 19,2 71,2 2%
2023-05-30 Rockchip RK3568   ARM_64Bit Rock64 Linux 3.1.4.10 Full emllDW3504 Yes 1000,0 1045,3 26,2 65,6 3%
2023-07-25 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Linux 3.1.4.11 Full emllBcmGenet Yes 1000,0 1088,6 35,4 131,5 4%
2023-07-25 Broadcom BCM2711   ARM_64Bit Raspberry Pi CM4 Linux 3.1.4.11 Full emllBcmGenet Yes 1000,1 1070,7 28 92,5 3%
2023-08-15 NXP iMX93   ARM_64Bit i.MX93EVK Linux 3.1.4.99 Full emllFslFec Yes 1000,1 1065,7 21,7 65,7 2%
2023-10-05 Texas Instruments Sitara AM64xx R5 Cortex ARM_32Bit   FreeRTOS 3.1.4.99 Full emllTiEnetCpswg Yes 1000,1 1035,4 133,4 261,4 13%
2023-12-20 Intel Core-i5   x86_64Bit MinisForum U820 Linux 3.2.1.02 Full emllIntelGbe No 1000,0 1012,1 5,3 15,8 1%
2023-12-20 Intel Core-i5   x86_64Bit MinisForum U820 Linux 3.2.1.02 Full emllIntelGbe Yes 1000,0 1017,8 6 20,5 1%
2024-02-21 Texas Instruments Sitara AM64xx   ARM_64Bit SolidRun Hummingboard Linux 3.2.1.99 Full emllCPSWG Yes 1000,0 1099,3 50,5 122,8 5%
2024-03-03 ST STM32H7   ARM_32Bit STM32H747I-Disco CMSIS-RTOS 3.2.1.99 Full emllCmsisEth No 1000,3 1000,9 306,1 312,6 31%
2024-04-18 Intel Core-i5   x86_64Bit MinisForum U820 QNX_8.0 3.2.1.99 Full emllIntelGbe No 999,3 1008,7 4 17,3 0%
2024-04-29 NXP   A72 Cortex ARM_64Bit LS1046A Linux 3.2.1.99 Full emllDpaa Yes 1000,0 1022,3 44,9 93,6 4%
2024-05-14 Texas Instruments Sitara AM64xx   ARM_64Bit   Linux 3.2.1.05 Full emllCPSWG Yes 1000,0 1069,6 35,1 127,1 4%
2024-05-14 Texas Instruments Sitara AM64xx   ARM_64Bit   Linux 3.2.1.05 Full emllIntelGbe Yes 1000,0 1051,4 34,9 136,9 3%
2024-05-27 Texas Instruments Sitara AM243x R5 Cortex ARM_32Bit TIAM243EVM FreeRTOS 3.2.1.05 Full emllTiEnetIcssg Yes 1000,1 1148,1 107,7 219,1 11%
2024-06-07 ST STM32H7   ARM_32Bit STM32H743 uCOS-III 3.2.1.99 Full emllCmsisEth No 1000,0 1000,9 77,4 119,1 8%
2024-06-13 Texas Instruments   R5 Cortex ARM_32Bit J784S4XEVM FreeRTOS 3.2.1.99 Full emllTiEnetCpswg Yes 240,6 321,9 163,8 308,9 68%
2024-08-08 Texas Instruments Sitara AM335x   ARM_32Bit WAGO PFC200 Linux 3.2.1.99 Full emllCPSW No 1000,0 1063,3 75,4 190,4 8%
2024-10-28 Moxa     x86_64Bit DA820E Linux 3.2.2.03 Full emllIntelGbe No 1000,0 1030,3 12,2 41,2 1%
2024-10-28 Moxa     x86_64Bit DA820E Linux 3.2.2.03 Full emllIntelGbe Yes 1000,0 1022,9 12,7 42,2 1%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.3.99 Full emllGEM Yes 1000,0 1017,4 10 32,5 1%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.3.99 Full emllGEM No 1000,0 1019,6 9,6 25,1 1%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.3.99 Full emllGEM Yes 100,0 118,2 9,2 31,5 9%
2025-02-20 Texas Instruments Jacinto TDA4VM R5 Cortex ARM_32Bit J784S4XEVM FreeRTOS 3.2.2.05 Full emllTiEnetCpswg No 250,0 265,8 99,9 187,8 40%
2025-02-20 Texas Instruments Jacinto TDA4VM R5 Cortex ARM_32Bit J784S4XEVM FreeRTOS 3.2.2.05 Full emllTiEnetCpswg Yes 250,0 255,9 86,8 147,5 35%
2025-05-12 Broadcom BCM2712 A76 Cortex ARM_64Bit Raspberry Pi Compute Modul 5 Linux 3.2.2.05 Full emllIntelGbe Yes 1000,0 1013,5 11,9 38,1 1%
2025-06-05 Nvidia Orin A78 Cortex ARM_64Bit Nvidia AGX Orin 32Gb H01 Kit Linux 3.2.3.01 Full emllIntelGbe Yes 1000,0 1003,2 9,7 15,8 1%
2025-06-05 Nvidia Orin A78 Cortex ARM_64Bit Nvidia AGX Orin 32Gb H01 Kit Linux 3.2.3.01 Full emllIntelGbe Yes 100,0 106,9 9,7 15,5 10%
2024-02-14 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit SK-TDA4VM Linux 3.2.1.03 Full emllCPSWG Yes 1000,0 1027,4 18,1 58,2 2%
2025-02-14 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit SK-TDA4VM Linux 3.2.1.03 Full emllCPSWG No 1000,0 1022,7 14,4 42,1 1%
2025-07-17 Qualcomm Qualcomm Kryo A78 Cortex ARM_64Bit Qualcomm Dragonwing IQ-9075 EVK Linux 3.2.3.99   emllIntelGbe No 1000,0 1005,4 5,2 15,4 1%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 1000,0 1001,9 4,6 17,1 0%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 500,0 510,8 4,5 15,1 1%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 250,0 257,6 4,3 11,7 2%
2025-09-11 Intel Core-i5   x86_64Bit HP ProDesk 600 G5 MT Linux 3.2.3.99 Full emllIntelGbe Yes 100,0 109,6 4,2 15,3 4%
2025-09-12 AMD Ryzen 7 8700 G   x86_64Bit Gigabyte B650 EAGLE AX RTX 3.2.3.01 Full emllIntelGbe No 1000,0 1015,4 4,3 20,6 0%
2025-09-12 AMD Ryzen 7 8700 G   x86_64Bit Gigabyte B650 EAGLE AX RTX 3.2.3.01 Full emllIntelGbe No 250,0 274,8 4,2 40,4 2%
2025-12-15 Xilinx Zynq UltraScale+ A53 Cortex ARM_64Bit Custom Encustra Mercury-XU5 FreeRTOS 3.2.3.05 Full emllTemac No 1002,0 1002,5 96,5 118,9 10%
2026-01-26 Qualcomm Octa-Core Kryo Gen 6 A78 Cortex ARM_64Bit Qualcomm Dragonwing IQ-9075 EVK Linux 3.2.3.05 Full emllDW3504 No 1000,0 1005 11,3 27 1%
2026-03-03 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit TI j784s4-evm Linux 3.2.3.06 Full emllCPSWG Yes 1000,0 1021,6 27,8 47,6 3%
2026-03-03 Texas Instruments Jacinto TDA4VM A72 Cortex ARM_64Bit TI j784s4-evm Linux 3.2.3.06 Full emllCPSWG No 1000,0 1029,2 18,2 41,4 2%
2026-03-03 Texas Instruments Sitara AM65xx A53 Cortex ARM_64Bit Ti Am654xEVM Linux 3.2.3.06 Full emllCPSWG Yes 1000,0 1038,1 40 124,3 4%
2026-03-09 Texas Instruments Sitara AM67xx A53 Cortex ARM_64Bit BeageleY-AI Linux 3.2.3.06 Full emllCPSWG Yes 1000,0 1037,1 29,4 86 3%
2026-03-09 Texas Instruments Sitara AM67xx A53 Cortex ARM_64Bit BeageleY-AI Linux 3.2.3.06 Full emllCPSWG No 1000,0 1044,2 26,6 97,6 3%
2026-03-09 Texas Instruments Sitara AM67xx A53 Cortex ARM_64Bit BeageleY-AI Linux 3.2.3.06 Full emllCPSWG Yes 250,0 287,3 28,8 87,6 12%

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.

Stay Up to Date