Showcase: Preempt RT und Time Sensitive Networking

Schon J. R. R. Tolkien wusste...

"Echtzeit ist nie zu spät, ebensowenig zu früh. Sie passiert genau dann, wenn sie es beabsichtigt."

Heutzutage verfügen selbst einfache und günstige Mikrocontroller über ausreichend Rechenleistung, um zeitkritische Aufgaben im industriellen Umfeld zu bearbeiten. Sind jedoch die Aktoren und Sensoren in einer größeren Anlage verteilt und sollen mittels Ethernet vernetzt werden, ist der tatsächliche Verarbeitungszeitpunkt eines Ereignisses nicht ohne weiteres vorhersehbar. Linux mit Preempt RT und ein Netzwerk mit Time Sensitive Networking (TSN) Funktionalitäten kann hier Abhilfe schaffen.

Verzögerungen bei der Übertragung der Daten können dabei sowohl innerhalb der Systeme als auch auf dem Übertragungsweg entstehen, wenn etwa kritische Daten von mehreren Quellen gleichzeitig übertragen werden. Je mehr moderne eingebettete und vernetzte Systeme zu schnellen Berechnungen und Datenverarbeitung in der Lage sind, desto mehr stellt sich nicht nur die Frage, ob das System "schnell genug" arbeitet, sondern ob die Ergebnisse auch "rechtzeitig" ankommen.

Der Einsatz von komplexen Netzwerk-Stacks auf Basis von 'Standard'-Ethernet ist in vielen Fällen ein Grund für einen Wechsel von einem Mikrocontroller zu einem Mikroprozessor samt vollwertigem Linux-Betriebssystem. Die Echtzeiteigenschaften auf dem System stellt dabei der Preempt RT Mechanismus im Linux-Kernel sicher, und auch für die zeitkritische Datenübertragung wandern derzeit zunehmend mehr TSN-Features in den Kernel.

TSN-Demonstrator

Das Thema TSN ist sehr heterogen und besteht aus einer Vielzahl von einzelnen Technologien: Einerseits stehen noch nicht alle bereits standardisierten Verfahren schon unter Linux zur Verfügung, andererseits werden aber auch nicht alle Mechanismen für jede Anwendungen benötigt.

Um tiefergehende Einblicke in die technischen Detailfragen zu erlangen, die sich während des Entwicklungsprozesses stellen, haben wir bei Pengutronix einen TSN-Demonstrator entwickelt:

Die "Schwebende Kugel" ist ein beliebtes Experiment, bei dem das Grundkonzept eines PID-Regelkreises demonstriert wird. Zur Durchführung wird ein Magnet an einem leichten Objekt (z. B. einer Papierschlaufe) befestigt. Dieses wird dann im Feld eines Elektromagneten zum Schweben gebracht: Ein Sensor erfasst die Position der Kugel und meldet sie an einen Regler, welcher wiederum den Strom durch den Elektromagneten entsprechend auf einen konstanten Abstand zum Sensor einstellt. Richtig umgesetzt schwebt die Kugel in einem Gleichgewicht, solange der Aufbau mit Strom versorgt wird.

Zur Simulation eines mittels TSN Ethernet vernetzten Systems werden Sensor, Aktor und Regler jeweils auf Einplatinencomputern auf Basis des STM32MP1 betrieben, auf denen ein aktueller Linux-Kernel (5.11) mit Preempt RT läuft. Die Geräte sind mittels Ethernet verbunden, das Precision Time Protocol (PTP) wird zur Synchronisation der Uhren der Teilnehmer verwendet.

Ziele

Im Demonstrator-Aufbau treten verschiedene Latenzen im Regelprozess der Position der Papierschlaufe auf:

  • Die vom Sensor gesammelten Informationen müssen vom ersten System verarbeitet werden.
  • Das Datenpaket muss dann seinen Weg durch das Netzwerk und zum Board mit der Controller-Software finden.
  • Der Regler muss den nächsten Zustand des Elektromagneten berechnen und dabei die Systemressourcen des Boards mit anderen Programmen und Diensten teilen.
  • Die resultierenden Werte müssen wiederum über das Netzwerk gesendet werden, um schließlich das System des Aktors zu erreichen und im richtigen Moment angewandt zu werden.

Um trotz auftretender Verzögerungen die Position der Kugel regeln zu können, müssen die Aktionen der einzelnen Komponenten in Echtzeit aufeinander abgestimmt werden.

Die PID-Regelschleife ist deshalb wie folgt realisiert:

  • Durch den Einsatz von PTP (IEEE 802.1AS) werden die internen Uhren der Systeme auf weniger als einer Mikrosekunde genau synchronisiert.
  • Latenz-Anomalien innerhalb der Software wurden analysiert und behoben.
  • Der Positionssensor wird synchron zum PTP-Timer ausgelesen und mit Zeitstempeln versehen; die Daten benötigen dabei etwa 600 µs vom Sensor bis zum Aktor.
  • Der PID-Regler läuft mit einer Frequenz von 1,25 kHz / 800 µs.
  • Schließlich muss die Software des Aktors dafür sorgen, dass der neue Zustand des Elektromagneten zum richtigen Zeitpunkt angewendet wird.

Das Ergebnis ist auf den Bildern zu sehen.

Nächste Schritte

Der Demonstratoraufbau gibt einen ersten Einblick in die verschiedenen Techniken rund um TSN unter Linux. Bei der Entwicklung wurden derzeit aktuelle SoCs auf ihre TSN-Eigenschaften untersucht: Nicht alle Mechanismen stehen dabei auf jeder Hardware zur Verfügung, sodass das SoC passend zur jeweiligen Aufgabe ausgesucht werden muss. Auf der Software-Seite gibt es ebenfalls noch Verbesserungsmöglichkeiten - viele der eingesetzten Techniken sind noch jung und entwickeln sich von Kernel zu Kernel schnell weiter. Es empfiehlt sich daher, eine aktuelle Linux-Version einzusetzen.

Wie kann Pengutronix bei TSN-Projekten helfen?

Mehr zu TSN und PTP

Die Kollegen bei OSADL führen fortlaufend Performance-Messungen zu RT- und TSN-Anwendungen durch. Bei Interesse sei ihr Artikel "Real-time Ethernet (TSN) synchronization analysis" empfohlen. (osadl.org)

Das Pengutronix Kernel-Team kann Industriekunden bei der Entwicklung von TSN-Systemen beraten und mit Entwicklungsdienstleistungen unterstützen. Eine wichtige Aufgabe ist dabei die Weiterentwicklung und Anpassung des Linux Kernels an die Anforderungen des Kundenprojekts, etwa durch neue Treiber für Switch-Chips und für TSN-Features in Netzwerkhardware.

Zu Beginn eines Projekts stehen die Evaluierung geeigneter Hardware- und Systemkomponenten im Mittelpunkt. In späteren Projektphasen können kritische Bereiche des Systems durch Software-bedingte Latenzen ausgebremst werden, die von unseren Kernel-Entwicklern lokalisiert und behoben werden.

Zurück zur Messeseite

Weiterführende Links

Showcase: Embedded off-the-shelf

Ein Firmware-Upgrade ist fällig. Eine neu implementierte Funktion muss ausgerollt, eine Sicherheitslücke gepatcht oder neue Hardware-Unterstützung hinzugefügt werden. Die Software ist zwar leistungsfähig, aber komplex. Pengutronix' Strategie, mit dieser Komplexität umzugehen, ist die Arbeit an einem versionskontrollierten Board Support Package (BSP) mit kontinuierlichen Updates und Tests auf dem neuesten Mainline-Linux-Kernel.


Showcase: Continuous Testing

In den Linux-Kernel wandern jedes Jahr etwa 70.000 Patche, viele davon sind Bugfixes. Das Gleiche gilt für die meisten anderen Open-Source-Projekte, die Teil eines modernen Linux-Systems sind. Um von der Arbeit in der Community profitieren zu können, bleibt als sinnvolle Strategie, ständig auf dem neusten Softwarestand aufzusetzen und das System aktuell zu halten. Natürlich können bei dieser Menge an Änderungen auch neue Fehler hinzukommen oder Inkompatibilitäten entstehen.


Showcase: Remote Working

Zur Projektarbeit mit unseren Kunden gehört die Arbeit mit Prototypen-Hardware. Da wir grundsätzlich parallel für mehrere Kunden an vielen verschieden Projekten arbeiten, bedeutet das eine Flut von Prototypen auf den Schreibtischen unserer Entwickler. Spätestens wenn im Team an einem Prototypen gearbeitet werden soll oder längere Zeit nicht aktiv an einem Projekt gearbeitet wird, muss die Hardware regelmäßig umgezogen und am neuen Arbeitsplatz verkabelt werden. Erschwerend kommt hinzu, dass die Entfernung zwischen unseren Entwickler-Schreibtischen durch die aktuelle Homeoffice-Situation, nicht wie gewohnt in Metern, sondern in Kilometern gemessen wird.


umpf - Git on a New Level

Moderne Softwareentwicklung ohne begleitende Versionsverwaltung wie Git ist heutzutage unvorstellbar - Änderungen am Quellcode sollen schließlich nachvollziehbar dokumentiert und beliebige Verssionsstände jederzeit einfach reproduziert werden können. Für Arbeiten an komplexeren Projekten wie etwa dem BSP ("Board Support Package") eines eingebetteten Systems mit mehreren Entwicklungssträngen skaliert ein bloßes Aufeinanderstapeln der einzelnen Änderungen jedoch nicht.


Pulse Width Modulation (PWM) is easy, isn't it? - Turning it off and on again

Part of Uwe Kleine-König's work at Pengutronix is to review PWM (Pulse Width Modulation) drivers. In addition, he also sometimes refactors existing drivers and the Linux kernel PWM subsystem in general.


Yes we CAN... add new features

Have you ever experienced an otherwise fine product that is missing just the one feature you need for your application?


DSA in Barebox

The v2022.05.0 Release of barebox introduced initial support for the Distributed Switch Architecture (DSA) Framework. DSA is originally a subsystem from the Linux Kernel, which exposes the individual ports of a network switch IC as virtual network interfaces.


Pengutronix at Embedded World 2022

Welcome to our booth at the Embedded World 2022 in Nürnberg!


First Steps using the candleLight

So you went and got yourself one of our fancy rocket-penguin branded CandleLight dongles or, being the die hard hacker you are, went and soldered one up in your toaster oven labeled "not food safe". What's next then? How do you use this thing? Let's answer these question by grabbing a Raspberry Pi and exploring some of the possibilities.