Kithara 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, preemptives 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 der Windows-Betriebssysteme 7, 8, 10 einschließlich 32-Bit und 64-Bit

Unsere hochfrequenten Timer für Windows werden verwendet in Mess-, Steuerungs- und Regelungsapplikationen, 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 100 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, preemptives 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-Multitasking besteht im modularen System von Kithara RealTime Suite aus folgenden Komponenten:

Clock Module

Hochgenaue und kalibrierte Ermittlung der Systemzeit sowie Kurzzeitverzögerungen

  • Allgemein
  • Features

Das Clock Module bildet 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.

  • 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

RealTime Module

Programmierung hochfrequenter Echtzeit-Timer-Routinen

  • Allgemein
  • Features

Das RealTime Module ergänzt das Clock Module und ermöglicht die Programmierung von 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 sowie Callbacks auf Anwendungs- oder Kernel-Ebene sein, in Verbindung mit dem MultiTasking Module auch Echtzeit-Tasks.

  • 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
  • Timer unterbrechen sich nicht gegenseitig
  • Startzeitpunkt lässt sich in 0,1-µs-Auflösung vorgeben (etwa zur Synchronisation mit anderen Abläufen)
  • Timerperiode dynamisch justierbar
  • Abweichungen betragen nur wenige Mikrosekunden
  • setzt das Clock Module voraus

MultiTasking Module

Prioritätsgesteuertes, preemptives Echtzeit-Multitasking

  • Allgemein
  • Features

Das MultiTasking Module ergänzt das RealTime Module und unterstützt prioritätsgesteuertes, preemptives Echtzeit-Multitasking. Es ermöglicht damit über die Funktionen des RealTime Modules hinaus die gegenseitige Priorisierung der einzelnen Echtzeitaufgaben. 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. Die Mittel des MultiTasking Moduls entsprechen damit denen eines reinrassigen Echtzeitbetriebssystems (RTOS). Im Dedicated Mode lässt sich die Echtzeitleistung darüber hinaus drastisch erhöhen. Dazu werden ein oder mehrere separate CPU-Kerne ausschließlich mit dem Echtzeitsystem betrieben, um eine Beeinflussung durch Windows zu vermeiden.

  • Preemptives 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
  • Jitter geringer als 1 Mikrosekunde im Dedicated-Modus möglich
  • Task-Frequenz bis zu 100 kHz und mehr
  • Speedloop-Modus für hochgenaue zyklische Ausführung
  • Setzt das RealTime Module voraus

Storage Module

Echtzeit-Datenspeicherung über SSD-Laufwerke

  • Allgemein
  • Features
  • Hardware-Unterstützung

Das Storage Module ermöglicht Echtzeit-Datenspeicherung über SSD-Laufwerke mit den jeweils aktuell angebotenen Kapazitäten. So lassen sich über die NVMe-Schnittstelle große Datenmengen mit Schreib- und Lese­geschwindigkeiten von deutlich mehr als 2 Gbyte/s übertragen. Als Dateisystem wird UDF bereitgestellt, wodurch Packet-Writing ermöglicht wird.

  • Echtzeit-Datenspeicherung über NVMe-SSD mit den jeweils aktuell angebotenen Kapazitäten
  • Highspeed-Lesen und -Schreiben bis über 2 Gbyte/s
  • UDF-Dateisystem

Im Zusammenhang mit dem Storage Module können alle mit der NVMe-Spezifikation-1.0-kompatiblen Speichermedien auf Anfrage verwendet werden. Folgende Geräte wurden getestet:

  • Intel Solid-State Drive P3700/P3600/P3520/750 Series
  • Intel Solid-State Drive DC P3520 Series
  • Intel Solid-State Drive 600p Series
  • Samsung 950 SSD
  • HGST Ultrastar SN200 Series
  • VirtualBox Solid State Disk

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++ oder Delphi (Win32 native)

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.