Windows für Echtzeit-Anwendungen durch Real-time Accelerator Technologie

Überblick

Immer mehr Anwendungen, insbesondere im Markt für industrielle Automatisierung, der Medizintechnik, der Datenerfassung und Messtechnik, erfordern deterministisches Echtzeitverhalten. Mit der Real-time Accelerator (RtaccWin) Technologie ist es möglich, unter Windows hart echtzeitfähige Anwendungen deterministisch auszuführen. Dies gelingt durch die exklusive Reservierung von einer oder mehreren CPUs für die Echtzeitanwendung, der entsprechenden Parametrierung von Windows und den acontis Kernel-Treibern für präzises Timing und für den direkten Hardware-Zugriff.

Software Architektur

Auf PCs mit Windows IoT Enterprise ermöglicht die acontis RtaccWin Technologie einen stabilen, echtzeitfähigen Betrieb von Applikationen mit einer garantierten Zykluszeit von 1 ms. Auch schnellere Zykluszeiten sind grundsätzlich realisierbar. Dazu wird mindestens eine CPU exklusiv für die Echtzeitanwendung reserviert. Die anderen CPUs stehen den Standard Windows Anwendungen zur Verfügung.

Der RtaccTimer.sys Windows System Treiber von acontis liefert den präzisen, einstellbaren Takt für die gesamte Anwendung. Um deterministisches Verhalten sicherzustellen, darf die Echtzeitanwendung in der Regel keine Standard Windows Treiber verwenden. Der RtaccDevice.sys Kernel Treiber von acontis ermöglicht den direkten Zugriff auf Hardware, z. B., Netzwerkkarten, Feldbuskarten, etc. aus dem Windows User-Mode. Dies ermöglicht, z. B., das Senden und Empfangen von Ethernet-Frames ohne Verwendung des Windows Netzwerk-Stacks. Das Ergebnis ist ein deterministisches Verhalten, ein geringerer Jitter, eine deutlich geringere CPU-Auslastung und keine negativen Auswirkungen bei paralleler Nutzung von anderen Netzwerkinterfaces.

Konfigurationswerkzeug RtaccWinConfig

Mit dem Tool RtaccWinConfig erfolgt die Einrichtung des Windows Systems für Echtzeitanwendungen. In einem ersten Schritt wird mindestens eine CPU isoliert. Dies bedeutet, dass Standard Windows Prozesse und Dienste diese CPU nicht mehr verwenden. Die isolierte CPU steht dann exklusiv für die Echtzeitanwendungen zur Verfügung.

Eine weitere Funktion des RtaccWinConfig Tools ist die Zuweisung von Hardware an die Echtzeitanwendung. Dies bedeutet, dass der Standard Windows-Treiber entladen wird und fortan der Zugriff auf die Hardware aus dem Windows User Space erfolgen kann. Der acontis Kernel-Treiber RtaccDevice.sys ermöglicht den schnellen, direkten Zugriff auf alle Speicherbereiche der Karte.

Softwareentwicklung

Die Entwicklung der Echtzeitanwendung unterscheidet sich nicht grundlegend von der einer normalen Windows Anwendung. Folgende Schritte sind prinzipiell durchzuführen:

  • Einrichten des Systems mit dem Tool RtaccWinConfig
  • Ein oder mehrere Threads für die Echtzeitaufgaben erzeugen
  • Diese Threads der zuvor isolierten CPU zuweisen
  • Den Threads eine sehr hohe Priorität zuweisen → „Real-time Threads“ sind verfügbar
  • Optional: Erzeugung eines stabilen und präzisen Taktes durch Windows System Treiber RtaccTimer.sys

Ein Windows Prozess kann sich somit aus mehreren „non-Real-time Threads” und mehreren “Real-time Threads” zusammensetzen. Alle Threads haben Zugriff auf die globalen Variablen und können die Standard Mechanismen (Event, Critical Section, Mutex, Semaphore, etc.) zur Synchronisation verwenden. Das vertraute Win32 Standard API steht auch in den „Real-time Threads“ zur Verfügung. Für den gesamten Entwicklungsprozess kann die volle Funktionalität von Microsoft Visual Studio genutzt werden. Im Debug-Mode kann auf alle Ressourcen von allen Threads zugriffen werden. Selbstverständlich können auch die „Real-time Threads“ wie gewohnt nur Schritt-für-Schritt ausgeführt werden, dann allerdings ohne Echtzeitverhalten.

Performance

Für Echtzeitanwendungen ist ein stabiler, präziser Takt mit möglichst geringem Jitter sehr wichtig. Dieser Takt wird z. B. benötigt, um eine Regelschleife jede Millisekunde auszuführen. In der Theorie soll dabei die Anwendung exakt nach jeweils 1000 Mikrosekunden getriggert werden. In der Praxis gibt es jedoch hiervon Abweichungen nach oben (größeres Zeitinterval) und nach unten (kürzeres Zeitinterval). Mit der Real-time Accelerator Technologie können unter Windows diese Abweichungen, sprich der Jitter, um Größenordnungen reduziert werden.

Mit dem Programm RtaccWinConfig kann eine Performance Messung auf der isolierten CPU mit einer bestimmten Zykluszeit durchgeführt werden. Die Abweichungen nach oben (= Maximalwert) und nach unten (=Minimalwert) werden grafisch angezeigt. Wie groß der maximale Jitter sein darf, hängt von der Anwendung ab. In der Regel sind 10% der Zykluszeit noch akzeptabel, d.h., bei einer Zykluszeit von 1000 usec, sollte der Minimalwert >= 900 usec und der Maximalwert <= 1100 usec sein.

Ohne die Real-Time Accelerator Technologie schwankt Zykluszeit sehr stark. Nach acht Stunden ergeben sich auf einen Minis Forum U820 (i5-8279U CPU) mit Windows IoT folgende Messwerte.
Hinweis: Neben der Messroutine von acontis wurde das System mit Burn-In Test von Passmark stark belastet.

Mit aktivierter Real-Time Accelerator Technologie kann ein präziser Takt mit geringen Abweichungen garantiert werden. Nach acht Stunden ergeben sich auf einen Minis Forum U820 (i5-8279U CPU) mit Windows IoT folgende Messwerte.
Hinweis: Neben der Messroutine von acontis wurde das System mit Burn-In Test von Passmark stark belastet.

Funktionen

  • Schnelle Reaktionszeiten innerhalb von Mikrosekunden
  • Harte Echtzeit mit Real-Time Accelerator Technologie mit Hilfe von CPU-Isolation
    • Echtzeitfunktionen und Standardfunktionen in einem Prozess auf einer isolierten CPU
    • RtaccTimer Treiber zur Erzeugung eines präzisen, stabilen Taktes
    • RtaccDevice Treiber für den direkten Zugriff auf Hardware ohne Kernel-Treiber
  • Komfortables Konfigurationswerkzeug RtaccWinConfig

Vorteile

  • Echtzeitanwendungen können wie normale Windows-Anwendungen entwickelt werden
  • Standard Win32 API auch in Real-time Threads verfügbar
  • Unterstützung von Microsoft Visual Studio. Komfortables Entwickeln und Debuggen der gesamten Echtzeitanwendung
  • Einfacher Datenaustausch über Variablen. Keine komplizierte Kommunikation zwischen Real-time und non-Real-time Teil der Anwendung erforderlich
  • Sehr einfache Handhabung und geringer Einarbeitungsaufwand

Systemvoraussetzungen

  • Windows 10 IoT Enterprise oder Windows 11 IoT Enterprise
  • Quad Core CPU

Weitere Informationen