Einführung

Acontis EC-Master Software unterstützt den ARM Cortex-A7 Chip, wie er auf dem STM32MP135F-DK Board von STMicroelectronics (ST) verwendet wird. Die Implementierung läuft in der von ST bereitgestellten Linux-Distribution OpenSTLinux und unterstützt sowohl den enthaltenen Linux-Netzwerktreiber als auch den von acontis optimierten Echtzeittreiber. Der Standard-Linux-Netzwerktreiber ist ein zuverlässiger, voll funktionsfähiger Ethernet-Treiber, der für die meisten Linux-Distributionen verfügbar ist und die einfache Installation des EC-Masters ermöglicht, ohne dass eine Anpassung an die Linux-Distribution und den Kernel erforderlich ist. Dadurch kann EC-Master "out of the box" betrieben werden. Der acontis Echtzeittreiber ist ebenfalls eine Option für EC-Master und kann die Leistung und die Latenzzeit erheblich verbessern, allerdings erfordert seine Installation einen speziellen Build des Linux-Kernels, der das acontis Open-Source-Kernelmodul atemsys enthält. Diese Architektur sorgt für eine schnellere Ausführung der Frames durch den Ethernet-Controller in den EC-Master-Hauptstapel sowie für eine geringere Latenzzeit und einen deterministischeren Jitter in der gesamten Netzwerkkommunikation. Der acontis Echtzeittreiber ist eine zuverlässige, robuste Lösung, die sich ideal für Anwendungen eignet, die eine leistungsstarke Echtzeitkommunikation erfordern.

Systemarchitektur

Aufgrund der intelligenten Architektur des EC-Master Stacks und unserer internen Erfahrung mit Hardware-Treibern ist es ein unkomplizierter und einfacher Prozess, EC-Master auf dem STM32MP135F-DK Entwicklungsboard zu implementieren. Das Diagramm unten zeigt die gesamte Systemarchitektur für den Start mit der Erstellung der Netzwerkkonfiguration (ENI) mit EC-Engineer, dem Export der ENI-Datei auf die Zielhardware, auf der der Master läuft (in diesem Fall das STM32-Dev-Board), und der Anwendung, die entwickelt und mit der EC-Master Application Programming Interface (API) integriert wird.

Download

Wenn Sie daran interessiert sind, selbst eine EtherCAT-Master-Implementierung auf dem STM32MP135F-DK Board zu testen, kontaktieren Sie uns bitte für weitere Informationen oder fordern Sie eine kostenlose Evaluierungsversion von EC-Master an. Mit dieser können Sie die von uns durchgeführten Messungen auf Ihrem eigenen System reproduzieren und mit der Entwicklung Ihrer eigenen Anwendung beginnen. Die Schritte dazu sind im Folgenden beschrieben.

Erster Schritt

Wir empfehlen die OpenSTLinux-Distribution von ST, da EC-Master mit dieser Distribution sofort funktioniert. Der erste Schritt ist der Download und die Installation der OpenSTLinux-Distribution. Sie können den STM32CubeProgrammer verwenden und die OpenSTLinux-Distribution auf einer SD-Card installieren. Weitere Anweisungen zur Installation der OpenSTLinux-Distribution auf dem STM32MP135F-DK finden Sie im STM32MP135F-DK-Wiki oder im Getting Started-Video auf unserem YouTube-Kanal. (Link zum YouTube Video kommt noch).

Architektur 1: Verwendung des Standard-Linux-Netzwerktreibers

Der EC-Master-Stack kommuniziert mit den Geräten im Netzwerk durch das Senden und Empfangen von EtherCAT-Frames unter Verwendung eines Standard-Ethernet Media Access Controllers (MAC). Durch die Verwendung von Linux-Netzwerktreibern, die in der Linux-Distribution enthalten sind, kann der Master-Stack auf die erforderlichen Informationen vom Ethernet-Controller zugreifen und EtherCAT-Frames über eine Raw-Socket-Schnittstelle namens SOCK_RAW senden und empfangen. Aufgrund der Einbeziehung des Linux-Netzwerkstacks und der Linux-Treiber ist die Leistung jedoch begrenzt und es ist nicht möglich, Echtzeitbedingungen einzuhalten. Um diese Einschränkung zu überwinden, müssen die Netzwerktreiber für leistungsstarke zyklische Operationen optimiert werden, was wir in unserem optimierten Echtzeit-Treiber in der Architektur 2-Implementierung unten anbieten.

Da die Raw-Socket-Schnittstelle in der Regel in den Kerneln der meisten Linux-Distributionen verfügbar ist, unterstützt die vorkompilierte Beispielanwendung, die im Lieferumfang von EC-Master (EcMasterDemo) enthalten ist, SOCK_RAW und kann daher zur Evaluierung der allgemeinen Funktionalität der EC-Master-Bibliothek verwendet werden, ohne dass irgendwelche Dateien für das Host-System kompiliert werden müssen.

Wenn die Anwendung es erfordert, und insbesondere für bestimmte Slave-Geräte, wie z.B. solche, die Distributed Clocks implementieren und verwenden, müssen die Echtzeitbedingungen eingehalten werden. In diesem Fall ist die Raw-Socket-Option höchstwahrscheinlich nicht in der Lage, Frames deterministisch genug zu senden und zu empfangen, und die EtherCAT-Geräte werden nicht korrekt arbeiten. Daher sollte SOCK_RAW nur für anfängliche Evaluierungszwecke verwendet werden und durch den acontis Echtzeittreiber ersetzt werden, wie unten beschrieben.

Für das von uns verwendete ST Dev Board mit ARM Cortex-A7 Prozessor ist es notwendig, das EC-Master-armv6-vfp-eabihf Evaluierungspaket und die darin enthaltene Demo (EcMasterDemo) zu verwenden. Folglich können Sie die vorkompilierte binäre Beispielanwendung des EcMasterDemo mit der folgenden Befehlszeile starten:

./EcMasterDemo -sockraw eth1 1 -b 4000 -t 20000 -v 3

Der Befehl -sockraw benötigt 2 Argumente: Das erste ist der Name des Netzwerkgeräts, das für die EtherCAT-Kommunikation verwendet werden soll, und das zweite ist die Angabe des Betriebsmodus, der entweder Polling oder Interrupt sein kann. In unserem Fall geben wir die erste Netzwerkadapterinstanz (eth1) an, und für den Modus verwenden wir den Polling-Modus (1). Die vollständige Liste der verfügbaren Befehlszeilenparameter und der zugehörigen Argumente kann mit dem Argument -help (Auszug unten) überprüft werden und ist auch in unserer Online-Dokumentation enthalten.

-sockraw         Link layer = raw socket
     Device        network device (e.g. eth1)
     Mode            Interrupt (0) or Polling (1) mode
     --nommaprx            disable PACKET_MMAP for receive

Nachdem wir den zu verwendenden Ethernet-Adapter und den Modus festgelegt haben, setzen wir die Zykluszeit des EtherCAT-Netzwerks auf 4 Millisekunden (-b 4000), die Dauer der Beispielanwendung auf 20 Sekunden (-t 20000) und den Verbosity-Level für die Protokollierung auf 3 (-v 3), damit wir einige hilfreiche Ausgaben sehen können. Zusätzlich ist es möglich, den EC-Engineer über TCP mit dem Ziel-Controller zu verbinden, um nützliche Fehlersuche zu betreiben und einige benutzerdefinierte Tests durchzuführen. Wenn Sie dies aktivieren möchten, können Sie das Kommandozeilenargument -sp hinzufügen, das den in EC-Master enthaltenen Remote Access Service (RAS) aktiviert, so dass EC-Engineer eine Verbindung herstellen kann. Schließlich wird das Befehlszeilenargument -f verwendet, um die ENI-Datei an den Master zu übergeben.

Architektur 2: Verwendung des optimierten Echtzeit-Ethernet-Treibers von acontis

Der acontis Real-time Driver ist ein Ethernet-Netzwerkadapter-Treiber für die Echtzeitnutzung von EtherCAT. Dieser Treiber, der im Userspace läuft, ermöglicht den direkten Zugriff auf den MAC und bietet eine hohe Leistung, deterministischen, zyklischen Betrieb. Um den Treiber zu verwenden, muss ein Linux-Kernelmodul namens atemsys kompiliert werden, das dem verwendeten Linux-Kernel entspricht. Linux-Distributionen bieten in der Regel Methoden zum Kompilieren von Kernelmodulen an. acontis stellt auch ein Yocto-Build-Rezept zur Verfügung, das diesen Prozess erleichtert.

Der acontis Echtzeittreiber bietet Entwicklern erhebliche Vorteile, da er eine leistungsstarke Möglichkeit zur Datenkommunikation zwischen User-Space-Anwendungen und dem physischen Ethernet-Controller bietet. Der Treiber ist notwendig, wenn Echtzeitbedingungen eingehalten werden müssen und eine Hochgeschwindigkeitskommunikation erforderlich ist, da er den Linux-Netzwerkstack umgeht und die MAC-Hardware voll ausnutzt. Um den Treiber verwenden zu können, muss das atemsys-Kernelmodul auf dem Linux-Zielsystem geladen und der Standard-Linux-Netzwerktreiber aus dem System entfernt werden. Dies kann durch Aufhebung der Bindung der Instanz mit Hilfe des virtuellen sysfs oder durch Änderung des Linux-Gerätebaums geschehen, je nach Art des verwendeten Systems. Sobald der Treiber installiert ist und läuft, können Daten schnell und zuverlässig gesendet und empfangen werden, so dass Entwickler die Anwendungsleistung maximieren und die Latenzzeit minimieren können.

Das atemsys-Kernelmodul ist im EC-Master enthalten und wird parallel zum EC-Master aktualisiert. Für das von uns verwendete ST-Dev-Board mit ARM Cortex-A7-Prozessor ist es erforderlich, das Evaluierungspaket EC-Master-armv6-vfp-eabihf und die darin enthaltene Demo (EcMasterDemo) zu verwenden. Folglich können Sie die vorkompilierte binäre Beispielanwendung des EcMasterDemo mit der folgenden Befehlszeile starten:

./EcMasterDemo -dw3504 1 1 custom stm32mp135 osdriver 0 -b 1000 -t 20000 -perf -v 3

Der Befehl -dw3504 gibt die Verwendung des acontis Echtzeit-Treibers an, der für den vom ST-Dev-Board verwendeten Ethernet-Controller spezifisch ist, und benötigt 2 Argumente. Das erste ist die Instanz des Netzwerkgeräts, entweder für emac0 (1) oder emac1 (2), und das zweite ist die Angabe des Betriebsmodus, der entweder Polling oder Interrupt sein kann. In unserem Fall geben wir die erste Instanz (1) für emac0 an, und für den Modus verwenden wir den Polling-Modus (1). Die vollständige Liste der verfügbaren Befehlszeilenparameter und der zugehörigen Argumente kann mit dem Argument -help (siehe Auszug unten) eingesehen werden und ist auch in unserer Online-Dokumentation zu finden.

-dw3504         Link layer = Synopsys DesignWare 3504-0 Universal 10/100/1000 Ethernet MAC (DW3504)
     Instance        Device instance 1 for emac0, 2 for emac1
     Mode            Interrupt (0) or Polling (1) mode

Nachdem wir die Instanz des Netzwerkgeräts und den Modus festgelegt haben, setzen wir die Zykluszeit des EtherCAT-Netzwerks auf 1 Millisekunde (-t 1000), die Dauer der Beispielanwendung auf 20 Sekunden (-t 20000) und die Protokollierungsstufe auf 3 (-v 3), damit wir einige hilfreiche Ausgaben sehen können. Zusätzlich ist es möglich, den EC-Engineer über TCP mit dem Ziel-Controller zu verbinden, um nützliche Fehlersuche zu betreiben und einige benutzerdefinierte Tests durchzuführen. Wenn Sie dies aktivieren möchten, können Sie das Kommandozeilenargument -sp hinzufügen, das den in EC-Master enthaltenen Remote Access Service (RAS) aktiviert, so dass EC-Engineer eine Verbindung herstellen kann. Schließlich wird das Befehlszeilenargument -f verwendet, um die ENI-Datei an den Master zu übergeben.

Fazit

Anhand der obigen Informationen können Sie hoffentlich sehen, wie einfach die Einrichtung und der Einstieg in EtherCAT mit EC-Master auf dem STM32MP135F-DK ist. Sie können mit dem Linux-Netzwerktreiber sofort loslegen, da er bereits im Lieferumfang enthalten ist. Für eine bessere Leistung sollte der acontis Echtzeit-Treiber verwendet werden. Um diesen zu verwenden, müssen einige Kernel-Anpassungen mit dem acontis Kernel-Modul (atemsys) vorgenommen werden. Dieser Treiber bietet Entwicklern jedoch eine leistungsstarke Möglichkeit, Daten zwischen User-Space-Anwendungen und dem physischen Ethernet-Controller zu senden und zu empfangen. Der Treiber ist notwendig, wenn Hochgeschwindigkeitskommunikation erforderlich ist, da er den Linux-Netzwerkstack umgeht und die MAC-Hardware voll ausnutzt. Dies kann bei der Hochgeschwindigkeitskommunikation sehr nützlich sein, da keine aufgeblähten Netzwerkstacks benötigt werden und der Datenaustausch auf diese Weise wesentlich effizienter und zuverlässiger ist. Sobald die Anpassungen vorgenommen wurden, arbeiten der acontis Echtzeittreiber und die Beispielanwendung EcMasterDemo in perfekter Harmonie und bieten eine leistungsstarke und zuverlässige Möglichkeit, das Beste aus Ihrem System und Ihrer EtherCAT-Implementierung herauszuholen.

Wir hoffen, dass dieser Artikel Ihnen bei der Entscheidung hilft, welche Architektur Sie in welchem Szenario einsetzen sollten. Und die bereitgestellten Informationen und Beispiele sollten eine einfache Reproduktion auf jeder Hardware, Architektur oder Linux-Distribution mit der gewünschten Netzwerkkonfiguration ermöglichen.