Schwerpunkte

Teil 6 der TSN-Serie

Mit offenen Lösungen zum eigenen Endpunkt

14. Dezember 2020, 11:01 Uhr   |  Meinrad Happacher

Mit offenen Lösungen zum eigenen Endpunkt
© WEKA Fachmedien

Das TSN-Ökosystem basiert auf einer großen Anzahl an Standards. Für spezifische Anwendungsfälle und dazu benötigte Endpunkte werden oft nur wenige davon benötigt. Das Tutorial vermittelt einen Praxis-Einstieg, wie mit offenen Lösungen ein TSN-Endpunkt entwickelt werden kann.

Welche Standards Endpunkte in einem TSN-Netzwerk unterstützen müssen, ist sehr applikationsspezifisch. Für viele Anwendungen ist eine Zeitsynchronisation der lokalen Applikationen bereits ausreichend, andere benötigen lediglich synchronisierte Zeitstempel für Daten, weitere sollten Datenströme oder Datenklassen zu exakten Zeitpunkten oder Zeitschlitzen senden können. All dies lässt sich mit verfügbaren offenen Lösungen und verfügbarer Hardware bereits heute schon realisieren. 

Für das folgende Tutorial wird ein lauffähiges Linux-System mit PREEMPT_RT Echtzeit-Kernel vorausgesetzt. Als Hardwareplattform dient ein Standard-PC, inklusive Netzwerkkarte mit hardwarebasierter Zeitstempel-Einheit (beispielsweise Intel i210). Für die Erzeugung und Installation des Echtzeit-Kernels sei auf die Anleitung „HOWTO setup Linux with PREEMPT_RT properly“ im Realtime Linux Wiki der Linux Foundation verwiesen [1]. 

Zur Verwendung der TSN-Funktionalitäten ist mindestens die Kernelversion 5.3 nötig (für die Beispiele kam die Version 5.6 17-rt10 zum Einsatz). Die gegebenen Konfigurations- und Code-Beispiele beziehen sich auf ein Debian-basiertes System, sollten sich jedoch auch auf andere Distributionen leicht übertragen ­lassen. Die Ausführungen und Beispiele basieren auf den ­Anleitungen des Open-Source-Projekts AccessTSN [2], „TSN Documentation Project for Linux“ von Intel/AVnu [3], der Anleitungen im Realtime Linux Wiki der Linux Foundation [4] sowie dem „PubSub_realtime“-Beispiel des open62541-Projekts [5]. 

Auf diese Anleitungen sowie den Manpages der verwendeten Software-Werkzeuge sei auch hinsichtlich weiterer Details und Hintergründe verwiesen.

Zeitsynchronisation mit LinuxPTP (802.1AS)

Listing 1. Installieren von LinuxPTP
© ISW

Listing 1. Installieren von LinuxPTP

Für die bei TSN benötigte Zeitsynchronisation der Netzwerk-Teilnehmer kann LinuxPTP (ptp4l) verwendet werden. Es sollte mindestens die Version 2.0 zum Einsatz kommen. LinuxPTP kann über die Paketquellen der Distributionen installiert oder der Quellcode selbst compiliert werden (siehe Listing 1). 

Listing 2. Starten der Zeitsynchronisierung LinuxPTP in IEEE-802.1AS-Konfiguration
© ISW

Listing 2. Starten der Zeitsynchronisierung LinuxPTP in IEEE-802.1AS-Konfiguration

Im Beispiel kommt die Zeitsynchronisierung entsprechend IEEE 802.1AS zum Einsatz. LinuxPTP bringt eine passende Konfigurationsdatei bereits mit. Diese wird nach der Installation vom Installationsverzeichnis ins Konfigurationsverzeichnis kopiert. Zur Zeitsynchronisation wird ptp4l mit der 802.1AS Konfigurationsdatei auf der gewünschten Netzwerk.Schnittstelle (im Beispiel eine Intel i210) gestartet (siehe Listing 2).

Listing 3. Konfiguration UTC-TAI Offset
© ISW

Listing 3. Konfiguration UTC-TAI Offset

Das Schlüsselwort -2 legt das OSI-Layer für die PTP-Kommunikation fest, für IEEE 802.1AS wird in diesem Beispiel Ethernet spezifiziert. Der Parameter step_threshold=1 sorgt für eine schnellere Konvergenz.

LinuxPTP synchronisiert die Hardware Clock im Netzwerk-Interface (PHC) mit den anderen Netzwerk-Teilnehmern. Um Anwendungen auf diese synchronisierte Netzwerkzeit beziehen zu können, muss die Systemuhr auf die PHC synchronisiert werden. Da die PHC die internationale Atomzeit (TAI) und die Systemuhr die koordinierte Weltzeit (UTC) als Zeitbasis verwenden, muss der Offset zwischen den beiden Zeitbasen konfiguriert werden. Hierzu lässt sich der Befehl in Listing 3 nutzen.

Listing 4. Starten der Zeitsynchronisierung zwischen PHC und Systemuhr
© ISW

Listing 4. Starten der Zeitsynchronisierung zwischen PHC und Systemuhr

Anschließend gilt es, die Synchronisation der Systemuhr mit dem Werkzeug phc2sys zu starten (Listing 4). Hierzu sind die zu verwendende PHC als Master und die Systemuhr als Slave anzugeben. Auch bei phc2sys kann über den Parameter step_threshold=1 für eine schnellere Konvergenz gesorgt werden. Zusätzlich kann mit dem Schlüsselwort w darauf gewartet werden, dass die PHC durch ptp4l synchronisiert ist.

Das Network-Time-Protokoll (NTP) muss auf dem System deaktiviert werden, um Interferenzen mit phc2sys zu vermeiden. Ebenso dürfen nur jeweils eine Instanz von ptp4l und phc2sys ausgeführt werden.
Die beiden genannten Werkzeuge zur Zeitsynchronisierung können auch als Systemdienste ausgeführt werden, dazu sind die Dienstkonfigurationen entsprechend der gezeigten Startbefehle zu ändern.
Je nach Systemkonfiguration und Auslastung sollten die Ausführungsprioritäten der Zeitsynchronisierungsdienste erhöht werden, damit diese Dienste genügend Rechenzeit erhalten. Ein Beispiel dazu findet sich im ‚Pub/Sub_realtime‘-Beispiel von open62541.
Da durch eine Konfiguration der Netzwerk-Warteschlangen die Netzwerk-Schnittstellen neugestartet werden müssen und es damit zu Zeitsprüngen kommen kann, sollte die Netzwerk-Konfiguration vor dem Start der Zeitsynchronisation abgeschlossen sein.

Seite 1 von 3

1. Mit offenen Lösungen zum eigenen Endpunkt
2. Zeitgesteuerte Datenübertragung
3. Senden in Traffic-Klassen nach Qbv (TAPRIO)

Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenVia Mail teilen

Das könnte Sie auch interessieren

Die Schlüsselrolle der Konfiguration
Ein TSN Starterpaket
TSN-Umgebungen schnell aufbauen
Die Firmen-Roadmap zu TSN

Verwandte Artikel

Institut für Steuerungstechnik der Werkzeugmaschinen- und Fertigungsindustrie (ISW), WEKA FACHMEDIEN GmbH