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 aller aktuellen Windows-Betriebssysteme 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”),
- extreme Echtzeit auf exklusiv benutzten CPU-Kernen, inkl. Echtzeit-Multitasking (“Dedicated 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).
- 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)
- Tasks haben Vorrang vor Windows oder werden im exklusiven Echtzeitsystem betrieben (bei Vorhandensein des Dedicated Modules)
- setzt das RealTime Module voraus
Dedicated Module
Extreme Echtzeit auf exklusiv benutzten CPU-Kernen, inkl. Echtzeit-Multitasking
- Allgemein
- Features
Das Dedicated Module verbessert die Echtzeiteigenschaften des MultiTasking Modules nochmals enorm, indem es extreme Echtzeit auf exklusiv benutzten CPU-Kernen bereitstellt. Während das MultiTasking Module normalerweise auf CPU-Kernen betrieben wird, auf denen auch Windows läuft (jedoch mit niedrigerer Priorität), ermöglicht das Dedicated Module die Echtzeit-Codeausführung auf exklusiv benutzten CPU-Kernen. Dazu kann Windows schon beim Bootvorgang angewiesen werden, auf weniger als den zur Verfügung stehenden logischen CPUs hochzufahren. Die freien CPUs werden dann ausschließlich mit dem Kithara-Echtzeitsystem betrieben. Durch die fehlende Beeinflussung durch Windows werden extreme Echtzeiteigenschaften erzielt (ca. <1 µs Abweichung/“Jitter”).
- einzelne logische CPUs können ausschließlich im Echtzeitmodus betrieben werden
- fehlende Windows-Beeinflussung führt zu extremer Echtzeit
- Abweichungen weniger als eine Mikrosekunde
- Speedloop-Modus für hochgenaue zyklische Ausführung von Echtzeit-Code bis ca. 1 MHz
- Kommunikation mit den übrigen Teilen der Anwendung über Shared Memory, Daten-Pipes, Message-Pipes und Sockets
- unterstützt alle übrigen Funktionsmodule ohne Einschränkung
- setzt das MultiTasking Module voraus
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)
- keine Dongle-Anbindung, keine Netzfreischaltung, ect.
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 1 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.