topic_timer_multitasking

Kithara Echtzeit-Timer – RealTime 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®

Die modulare Kithara »RealTime Suite« stellt 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 (z.B. 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: das maximale Jitter von Timern beträgt nur ca. 1 Mikrosekunde. Damit lassen sich genaue, zyklische Timeraufrufe mit Frequenzen von >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. Die Echtzeit-Tasks mit bis zu 255 Prioritätsstufen sorgen zuverlässig dafür, dass jeweils nur die am höchsten priorisierte Task ausgeführt wird.

Echtzeit unter Windows besteht in der modularen Kithara »RealTime Suite« aus folgenden Komponenten:

  • hochgenaue und kalibrierte Ermittlung der Systemzeit sowie Kurzzeitverzögerungen (“Clock Module”),
  • Programmierung hochfrequenter Echtzeit-Timer-Routinen (“RealTime Module”),
  • prioritätsgesteuertes, preemptives Echtzeit-Multitasking (“MultiTasking Module”)

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 zugrunde liegender Hardware bis auf wenige Nanosekunden genau.

  • Erkennung aller im System befindlichen Hardware-Zeitbasen
  • Kalibrierung der verschiedenen Zeitgeber
  • Langzeitsynchronisation bei System-Uhren
  • 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.

  • Programmierung 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 (z.B. 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 haben und weniger wichtige damit unterbrechen soll und welche sich selbst nur 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 auschschließlich mit dem Echtzeitsystem betrieben, um Windows-Beeinflussung 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”
  • inkl. 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 (bis zu 2 TByte Laufwerkgröße). So lassen sich über die NVMe-Schnittstelle große Datenmengen mit Schreib- und Lesegeschwindigkeiten von deutlich mehr als 1 GByte/s schreiben bzw. lesen. Als Dateisystem wird UDF bereitgestellt, wodurch packet-writing ermöglicht wird.

  • Echtzeit-Datenspeicherung über NVMe-SSD (bis 2 TByte)
  • Highspeed Lesen und Schreiben mit über 1 GByte/s
  • UDF-Dateisystem

Im Zusammenhang mit dem Storage Module können alle mit der NVMe Spezifikation 1.0 kompatiblen Speichermedien 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

*Diese Liste bezieht sich stets auf die aktuelle Version unserer Software.

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 bis zu 10 GBit/s für vielfältige Automatisierungsanwendungen, zum Beispiel mit EtherCAT oder CAN- bzw. CANopen-basierten Feldbusanwendungen. Passende und leistungsfähige Entwicklungswerkzeuge, wie der »Kernel Tracer« zur mikrosekundengenauen Beobachtung aller Vorgänge oder der »Master Monitor« zur grafischen Visualisierung und Kontrolle angeschlossener I/O-Klemmen, Sensoren und Aktoren vervollständigen das Konzept.