Echtzeit-Timer – Real-Time-Multitasking

Für PC-gestützte Automatisierung wünscht man sich Folgendes von einer Windows-Echtzeiterweiterung:

  • deterministische Ausführung einzelner Aufgaben
  • koordiniertes Verhalten mehrerer Anwendungen
  • genaue Zeitstempel
  • sofortige Reaktion auf externe Ereignisse
  • geringste Abweichungen (Jitter) bei zyklischer Erfassung von Messwerten
  • exakte Überwachung von Prozesszuständen in Echtzeit
  • nicht nur „relativ schnelle Rechner“ bei Schönwetter, sondern wirkliche „harte“ Echtzeit

Echtzeit unter Windows

Kithara RealTime Suite stellt mit einem modularen System verschiedene Mechanismen bereit, um für derartige Aufgabenstellungen eine perfekte Lösung zu bieten. Hier einige grundlegende Eigenschaften:

  • Ausnutzung der höchsten Systempriorität (vor allen anderen Windows-Aktivitäten).
  • Dadurch ungestörte Ausführung vorrangiger Funktionen für wichtige Aufgaben.
  • Hohe Genauigkeit in der Reaktion auf externe Ereignisse wie Timer, Interrupts, Kommunikationsschnittstellen etc.
  • Hochfrequente, regelmäßige Timer programmierbar (zeitäquidistant).
  • Prioritätsgesteuertes, präemptives Echtzeit-Multitasking.
  • Ausnutzung der Hardware-Parallelität (mehrere CPU-Kerne, Verteilung der Echtzeitaufgaben).
  • Skalierbarkeit der Echtzeitausführung bis hin zu extremer Echtzeit auf exklusiv benutzten CPU-Kernen.
  • Unterstützung von Windows 10 und 11 (32 und 64 Bit) sowie Windows Server 2016, 2019 und 2022

Unsere hochfrequenten Timer für Windows werden verwendet in Mess-, Steuerungs- und Regelungs­appli­kationen, Automatisierung, Robotik sowie Bilderfassung und -verarbeitung. Im Kithara-Echtzeitsystem, dessen Leistung dem eines reinen Echtzeitbetriebssystems entspricht, sind Echtzeit-Timer mit Frequenzen von mehreren Kilohertz und darüber programmierbar. Die Abweichung (Jitter) beträgt nur wenige Mikrosekunden. Auf exklusiv benutzten CPU-Kernen sind extreme Echtzeiteigenschaften realisierbar: Der maximale Jitter von Timern beträgt nur etwa eine Mikrosekunde. Damit lassen sich genaue, zyklische Timeraufrufe mit Frequenzen von über 20 kHz programmieren. Für den schnellen Datenaustausch zwischen Echtzeit- und Anwendungsebene stehen Events, Shared Memory und komfortable Pipe-Mechanismen oder auch Sockets bereit.

Viele Anwendungen sind nur durch ein komplexes Modell der Abläufe zu formulieren. Sie erfordern daher entsprechend leistungsfähige Mittel zur Umsetzung. Der dafür am besten geeignete Ansatz ist ein prioritätsgesteuertes, präemptives Multitasking-System. Echtzeit-Tasks mit bis zu 255 Prioritätsstufen sorgen zuverlässig dafür, dass jeweils nur der am höchsten priorisierte Task ausgeführt wird.

Echtzeit-Timer, Echtzeit-Multitasking

Module

Echtzeit-Multitasking besteht im modularen System von Kithara RealTime Suite aus folgenden Komponenten:

  • hochgenaue und kalibrierte Ermittlung der Systemzeit sowie Kurzzeitverzögerungen Timer Module,
  • Programmierung hochfrequenter Echtzeit-Timer-Routinen und prioritätsgesteuertes, präemptives Echtzeit-Multitasking RealTime Tasking Module,
  • Präzise Synchronisierung mehrerer Netzwerkteilnehmer PTP Module.

Timer Module

Hochgenaue und kalibrierte Ermittlung der Systemzeit sowie Kurzzeitverzögerungen

  • Allgemein
  • Features

Das Timer Module bildet mit seinen Zeitgeberfunktionen die Basis für alle Echtzeitaufgaben. Es stellt einen kalibrierten Zugang zu allen Hardware-Zeitbasen im System bereit. Zeitangaben lassen sich in beliebige, auch anwenderspezifische Zeitformate umrechnen. Kurzzeitverzögerungen sind je nach zugrundeliegender Hardware bis auf wenige Nanosekunden genau. Zusätzlich lassen sich einfache Timer ohne Echtzeit in Millisekundenauflösung auf Basis von Windows-Mechanismen erstellen.

  • Erkennung aller im System befindlichen Hardware-Zeitbasen
  • Kalibrierung der verschiedenen Zeitgeber
  • Langzeitsynchronisation bei Systemuhren
  • Ermittlung der Systemzeit in verschiedenen Formaten, Auflösung bis ca. 0,1 µs
  • Hochgenaue Kurzzeitverzögerungen in 0,1-µs-Schritten
  • Programmierung anwenderspezifischer Zeitformate
  • Zuverlässige Verhinderung von Überläufen durch interne 96-Bit-Operation
  • Einfache Timer in Millisekundenauflösung auf Basis von Windows-Mechanismen (keine Echtzeit)

RealTime Tasking Module

Programmierung hochfrequenter Echtzeit-Timer-Routinen und prioritätsgesteuertes, präemptives Echtzeit-Multitasking

  • Allgemein
  • Features
  • Erweiterungen

Das RealTime Tasking Module ergänzt das Timer Module und ermöglicht die Programmierung von Echtzeit-Timern, die den Anwendercode auf verschiedene Weise signalisieren können. Der Kontext der Programmausführung lässt sich wählen. Signalisierbare Objekte können Events und Callbacks auf Anwendungs- oder Kernel-Ebene sowie Echtzeit-Tasks sein. Zudem wird ein prioritätsgesteuertes, präemptives Echtzeit-Multitasking-System zur gegenseitigen Priorisierung einzelner Echtzeitaufgaben bereitgestellt. Damit lässt sich detailliert bestimmen, welche Bearbeitung vor anderen Vorrang hat, weniger wichtige unterbrechen soll und welche sich selbst von wichtigeren Aufgaben unterbrechen lässt, was den Mitteln eines reinen Echtzeitbetriebssystems (RTOS) entspricht.

Für maximal zwei dedizierte CPUs, darüber Dedicated CPU Extension erforderlich.

Real Time

  • Entwicklung hochfrequenter Echtzeit-Timer-Routinen
  • Zyklische oder einmalige Timer programmierbar
  • Einfache Debug- und Testmöglichkeit bei Callback auf Anwendungsebene
  • Timer lassen sich gezielt starten, stoppen, abbrechen
  • Watchdog-Mechanismen einfach umsetzbar
  • Startzeitpunkt lässt sich in 0,1-µs-Auflösung vorgeben (etwa zur Synchronisation mit anderen Abläufen)
  • Timer-Frequenz bis zu 20 kHz und mehr
  • Jitter im einstelligen Mikrosekundenbereich
  • Timerperiode dynamisch justierbar

Multitasking

  • Präemptives Echtzeitsystem
  • Echtzeit-Tasks mit bis zu 255 Prioritätsstufen programmierbar
  • Dynamische Anpassung der Prioritätsstufe möglich
  • Mehrere Tasks mit der gleichen Prioritätsstufe als „Round-Robin“
  • Inklusive Prioritätsvererbung zur Vermeidung der Prioritätsinversion
  • Echtzeit-Semaphore zur Synchronisation zwischen Echtzeit-Tasks
  • Echtzeit-Events zur Signalisierung von Tasks von außerhalb
  • Tasks lassen sich suspendieren, fortsetzen, triggern, vorzeitig beenden („exit“) und abbrechen („kill“)
  • Tasks lassen sich verzögern (in 0,1-µs-Auflösung)
  • Betrieb von CPU-Kernen ausschließlich im Echtzeitmodus zur Vermeidung von Windows-Beeinflussung
  • sehr kurze Taskwechselzeiten
  • Speedloop-Modus für hochgenaue zyklische Ausführung

Erfordert Timer Module

Dedicated CPU Extension

erfordert RealTime Tasking Module
Erweiterung um zusätzliche logische dedizierte CPUs

  • Extended Level: bis 8
  • Maximum Level (benötigt Extended Level): bis 47 (darüber auf Anfrage)

PTP Module

Echtzeit-Synchronisation mit Precision Time Protocol

  • Allgemein
  • Features
  • Erweiterungen

Mit dem PTP Module lassen sich mehrere Netzwerkteilnehmer in einem verteilten System präzise synchronisieren und in Echtzeit ansteuern. Das Kithara Echtzeitsystem sorgt dafür, dass genaue Zeitstempel mit Abweichungen im Sub-Mikrosekundenbereich erzeugt werden, um so die Zeitgeber aller Teilnehmer genau abzugleichen. Die API ermöglicht die Verwendung des BMCA (Best Master Clock Algorithm), der den bevorzugten Zeitgeber nach konfigurierbaren Parametern ermittelt. Alternativ können Master und Slaves manuell gesetzt werden.

  • Präzise Synchronisation mehrerer Netzwerkteilnehmer
  • Genaue Zeitstempel mit Abweichungen im Sub-Mikrosekundenbereich
  • Konfigurierbarer BMCA (Best Master Clock Algorithm)
  • Manuelle Einstellung von Master und Slaves
  • Erfordert Network Module

NMEA Extension

Echtzeit-Kommunikation und -synchronisation mit NMEA 0183.

gPTP Extension

Die gPTP Extension erweitert das PTP Module um die Unterstützung für das „generalized Precision Time Protocol“ (definiert in IEEE 802.1AS), einem vereinfachten PTP-Profil. Die gPTP Extension ermöglicht das hochgenaue Synchronisieren aller Zeitgeber in einem verteilten System, beschränkt sich jedoch auf einen übersichtlichen Satz an Funktionen und ist damit für ein breiteres Anwendungsspektrum geeignet. So müssen Zeitgeber beispielsweise nicht mehr einzeln konfiguriert werden, sondern sind vereinheitlicht.

  • Präzise Synchronisation mehrerer Netzwerkteilnehmer
  • Vereinfachtes PTP-Profil
  • Alle Zeitgeber vereinheitlicht
  • Einfachere Konfiguration des BMCA (Best Master Clock Algorithm)


Weitere Eigenschaften

Voraussetzung zur Erreichung von „harten“ Echtzeiteigenschaften ist die Ausführung Ihres Anwendungscodes auf der Kernel-Ebene des Systems.

  • Nutzung der Kernel-Ebene unterstützt C, C++ und Delphi sowie C# (durch Verlagern das Codes in eine DLL)

Da wir Ihnen Funktionsbibliotheken zur Verfügung stellen, profitieren Sie von einer schlanken, am Bedarf orientierten Programmierung, die Ihre Entwickler bis ins Detail beherrschen und so Anpassungen selber vornehmen können, also keine „Black Box“.

Realisieren Sie mit unserem Know-How komplexe Applikationen! Nutzen Sie Multitasking und Echtzeit-Ethernet-Kommunikation mit bis zu 40 Gbit/s für vielfältige Automatisierungsanwendungen, zum Beispiel mit EtherCAT oder CAN- bzw. CANopen-basierten Feldbusanwendungen. Passende und leistungsfähige Entwicklungswerkzeuge, wie Kithara Kernel Tracer zur mikrosekundengenauen Beobachtung aller Vorgänge oder Kithara Master Monitor zur grafischen Visualisierung und Kontrolle angeschlossener I/O-Klemmen, Sensoren und Aktoren vervollständigen das Konzept.