Wenn Schnell nicht schnell genug ist

Windows als Echtzeitbetriebssystem
Kommentare

Gerade in industriellen Applikationen werden Echtzeitbetriebssysteme oft als Grundlage vorausgesetzt. Inwiefern Windows allein hier geeignet ist, darüber mag man nach wie vor geteilter Meinung sein – und doch, mit einem Echtzeitunterbau lässt sich durchaus auch Windows für zeitkritische, industrielle Anwendungen heranziehen.

Viele in Consumer-Geräten angewandte Technologien werden anfänglich für nicht industrietauglich oder zumindest als dort weniger geeignet eingeschätzt. Nach einiger Zeit, wenn sich die Technologie aufgrund der immens hohen Stückzahlen in der Consumer-Branche weit verbreitet hat, lässt sich beobachten, dass diese dann doch noch Einzug in industrielle Anwendungen hält. Die Gründe dafür sind vor allem darin zu suchen, dass aufgrund der hohen Stückzahlen die Produktion sehr kostengünstig und das Know-how der Technologie breit verfügbar ist. Und nach einiger Reife erfüllt die Technologie trotz der in der Regel strengen Anforderungen seitens der Industrie oft auch die Kriterien für entsprechende Anwendungen. So ist es nicht nur beispielsweise Ethernet als Kommunikationstechnik ergangen (bei der oftmals Echtzeit gefordert wird), das noch in den 90er Jahren des vergangenen Jahrhunderts für die industrielle Kommunikation gänzlich ungeeignet erschien. Im Gegensatz dazu gibt es heute bereits über 20 verschiedene Ethernet-basierte Automatisierungsprotokolle und es ist aus der Automatisierung nicht mehr wegzudenken.

Ein weiteres Beispiel für späteren Ruhm ist die Verwendung der PC-Technik im Allgemeinen und Windows als Betriebssystem im Besonderen – im Rahmen von industriellen Applikationen. Dabei ist die Einschätzung, ob Windows überhaupt für Echtzeitaufgaben geeignet sei, sehr unterschiedlich. Einerseits sind die aktuellen PC-Prozessoren so leistungsfähig, dass man meinen könnte, Windows selbst würde schon Aufgaben in Echtzeit bearbeiten können, was aber allenfalls als „Schön-Wetter-Echtzeit“ zu bezeichnen wäre, denn der Begriff schließt bekanntlich alle Situationen ein, auch und gerade die unerwünschten. Allgemein anerkannt ist daher, dass man selbstverständlich eine spezielle Echtzeiterweiterung benötigt, um unter Windows zeitkritische industrielle Anwendungen realisieren zu können. Andererseits hält sich dennoch bis heute mitunter eine generelle Skepsis, ob denn selbst eine Kombination aus Windows als Standardbetriebssystem und einem Echtzeitunterbau ausreichend sein würde. Dies kann heute als erwiesen angesehen werden – und das untermauern auch die seit vielen Jahren realisierten Lösungen auf dieser Basis.

Windows-basierte Echtzeitlösungen sind in vielfältigen Anwendungen im Einsatz und bieten eine Leistungsfähigkeit, die auch komplexe Aufgaben zu lösen gestattet. Im Folgenden bezieht sich der Beitrag auf die Echtzeiterweiterung RealTime Suite des Berliner Unternehmens Kithara Software, deren Anfänge bis ins Jahr 1996 zurückreichen. Sie liegt aktuell in der Version 9.1 vor und enthält mehr als 20 verschiedene Module mit insgesamt aktuell über 250 API-Funktionen, aus denen sich der Anwender den benötigten Funktionsumfang maßgeschneidert zusammenstellen kann.

Echtzeit unter Windows

Wie funktioniert nun eine Echtzeiterweiterung für Windows? Grundsätzlich sind hierbei mehrere Ziele zu erfüllen: Einerseits muss es eine Echtzeitumgebung geben, die die zugrunde liegende Hardware direkt anspricht, um die geforderten Eigenschaften für zeitkritische Aufgaben zu erreichen. Andererseits sollte der normale Betrieb von Windows nicht beeinflusst werden. Ausnahmen sind in der Regel nur kurzzeitig zulässig. Bei der RealTime Suite wird ein Echtzeit-Multitasking-System errichtet, das Windows selbst als eine sehr niedrig priorisierte Task auffasst. Die Behandlung der zeitkritischen Interrupts von Timern und industriespezifischen Kommunikationskarten wird direkt an der Interrupt-Controller-Hardware vorgenommen. Nur durch die Absicherung der höchsten Systempriorität wird die geforderte Echtzeitfähigkeit gewährleistet.

Um dem Anwender diese Zusicherung weiterzugeben, ist kein eigenständiges RTOS (Real-Time Operating System) aufzusetzen. Stattdessen wird ihm eine Möglichkeit geboten, seinen zeitkritischen und hardwarenahen Programmcode in Form einer speziellen DLL in den Echtzeitkontext zu verlagern. Der Vorteil besteht darin, dass die gewohnte Entwicklungsumgebung und Programmiersprache weiterhin verwendet werden kann und sich dadurch der Einarbeitungsaufwand in Grenzen hält. Bedingung ist, dass der verwendete Compiler nativen Maschinencode erzeugen muss. Dies gilt für verschiedene Entwicklungssysteme für C/C++ sowie für die Delphi-Entwicklungsumgebung. Damit stellt sich unmittelbar die Frage, wie die .NET-Umgebung und damit beispielsweise die Sprache C# ebenfalls eine Basis für industrielle Anwendungen sein kann. Grundsätzlich wird auch eine Anbindung für C# bereitgestellt, sodass sämtliche Ressourcen der industriellen Applikation auch dort verwaltet werden können. Die zeitkritischen und hardwarenahen Teile lassen sich zum Beispiel in C++ programmieren und in eine DLL auslagern, die dann vom Echtzeitsystem direkt auf die Kernel-Ebene geladen wird.

Abb. 1: Informationsaustausch zwischen User- und Kernel-Ebene

Im Ergebnis ist auch unter Windows ein Echtzeit-Multitasking realisierbar, wie man dies von einem reinen RTOS erwartet. Es stehen insgesamt 255 Prioritätsstufen zur Verfügung. Die für industrielle Anwendungen unbedingt erforderliche Vorhersagbarkeit der Abläufe wird durch eine  Prioritätsvererbung zur Vermeidung der Prioritätsinversion erreicht. Die Prioritäten der Tasks lassen sich auch dynamisch anpassen. Es stehen Semaphore und Events zur Synchronisation der Tasks bereit.

Abb. 2: Multitasking-Umgebung unter Windows

Dialogfähig

Die Kommunikation des Echtzeitteils mit der übrigen Anwendung ist einfach und direkt möglich, da durch die Bereitstellung der RealTime Suite als Funktionsbibliothek ein Bruch zwischen den verschiedenen Welten vermieden wird. Für den direkten gemeinsamen Zugriff stehen Shared-Memory-Datenbereiche von jeweils bis zu ca. 60 Megabyte zur Verfügung. Daten-Pipes und Mailslots mit der gleichen maximalen Größe dienen der vereinfachten Kommunikation, bei der die Zugriffe der beiden Seiten gegeneinander automatisch abgesichert sind und sich der Programmierer nicht mehr um die Synchronisation eventuell konkurrierender Zugriffe kümmern muss. Mittels Eventobjekten ist es möglich, Anwendungs-Threads in bestimmten Situationen aufzuwecken.

Das in den meisten Fällen angestrebte Ziel besteht letztlich sicher darin, externe Hardware von der Echtzeitumgebung aus auf verschiedene Weise anzusprechen. Hierzu stehen zunächst sämtliche übliche Basismechanismen zur Verfügung, um I/O-Register und physischen Speicher anzusprechen und Interrupt-Anforderungen – von PCI- oder PCI-Express-Karten oder auch ISA-Baugruppen – zu bearbeiten. Weiterhin existieren Funktionen für die einfache Benutzung von Kommunikationsschnittstellen (z. B. seriellen COM-Schnittstellen oder USB Devices). Des Weiteren werden CAN-Schnittstellenkarten verschiedener Hersteller mit einem allgemeingültigen API mit Echtzeittreibern unterstützt. Verschiedene Feldbusse (z. B. Profibus) werden mit einer eigenen DP-Master-Implementierung direkt unterstützt. Da künftige Automatisierungstechnologien immer häufiger auf Ethernet als Basis aufsetzen, werden echtzeitfähige Netzwerktreiber für die weit verbreiteten Controller von Intel und Realtek bis zu Gigabit-Raten bereitgestellt.

Auf der Basis dieser speziell entwickelten, auf hohe Effizienz und niedrige Latenzzeiten ausgelegten Treiber kann Ethernet auch in Echtzeitanwendungen als Kommunikationsstandard dienen. Dies ist nicht nur für anwendungsspezifische Protokolle verwendbar, sondern ermöglicht beispielsweise auch Echtzeit-TCP und -UDP.

Ganz allgemein zeigt sich „Industrial Ethernet“ als der große Trend: Nahezu alle bedeutenden herkömmlichen Feldbusse liegen inzwischen in einer an Ethernet als Transportschicht angepassten Variante auch als Industrial Ethernet vor. Zu den bekanntesten gehören das von Profibus abgeleitete Profinet, das an CANopen angelehnte EtherCAT, die vorwiegend im amerikanischen bzw. asiatischen Raum bevorzugten Ethernet/IP und Modbus/TCP als Nachfolger von DeviceNet bzw. Modbus sowie ferner PowerLink oder Sercos III. Unter Feldbusse ist eine Aufstellung über gängige Feldbusse und Industrial-Ethernet-Protokolle zu finden.

EtherCAT und Windows

Am Beispiel EtherCAT soll nun gezeigt werden, wie sich auf einfache Weise PC-basierte Automatisierungslösungen unter Windows realisieren lassen. EtherCAT unterstützt einen Prozessdatenaustausch mit sehr geringen Zykluszeiten, der Servicedatenaustausch ist ähnlich wie von CANopen her bekannt. In einer EtherCAT-Topologie findet man generell die folgende Gliederung vor, nach der ein Master – das ist die PC-basierte Managementsoftware – die angeschlossenen Slaves verwaltet. Diese wiederum sind in einzelne Objekte unterteilt, die wiederum mehrere Variablen enthalten können. Diese sind durch einen Namen eindeutig identifiziert und besitzen einen festgelegten Datentyp. Die Werte der Variablen sind les- und/oder beschreibbar. Es soll nicht unerwähnt bleiben, dass der EtherCAT Master der RealTime Suite auch einige besondere Betriebsarten unterstützt, z. B. Distributed Clocks für zeitlich hochgenaue und synchronisierte Vorgänge. Das System ist zudem Hot-plug-fähig, d. h. die Topologie kann sich während der Laufzeit ändern. Ein Kabelredundanzmodul erhöht die Systemverfügbarkeit.

Abb. 3: EtherCAT als Industrial-Ethernet-Protokoll

Alle bisher genannten Funktionsmodule der Echtzeiterweiterung stellen jeweils die spezifische Funktionalität zur Verfügung. Aus Sicht des Programmierers kann es jedoch darüber hinaus wünschenswert sein, die Applikation auf einer noch abstrakteren Ebene zu erstellen. Dies ist umso interessanter, wenn in einer Automatisierungslösung verschiedene Kommunikationsprotokolle, z. B. Profibus und EtherCAT, miteinander verknüpft werden sollen und der Steuerungsablauf dennoch neutral gehalten werden soll. Hierzu wird in einem weiteren Modul eine Soft-SPS nach IEC 61131-3 bereitgestellt. Dadurch ist ein direkter und einfacher Umgang mit Variablen möglich, unabhängig davon, in welcher konkreten Topologie sich diese befinden. Es werden die bekannten PLC-Programmiersprachen, Anweisungslisten und strukturierter Text unterstützt.

Künftige Versionen der Echtzeiterweiterung RealTime Suite werden das Vorhandensein mehrerer CPU-Kerne noch besser berücksichtigen, und ermöglichen es, einzelne Aufgaben gezielt verschiedenen CPU-Kernen zuzuordnen. Mit einem allgemein gültigen Ansatz werden sowohl 32- als auch 64-Bit-Systeme unterstützt werden. Dennoch wird die Einfachheit der Programmierung beibehalten. Und neben der Ergänzung um weitere Feldbusse und Industrial-Ethernet-Protokolle wird die Funktionsbibliothek künftig um spezielle Bibliotheken für NC, Robotik und Bildverarbeitung ergänzt werden.

Fazit

Die Anforderungen an Steuerungen in der Automatisierung, z. B. im Bereich Spezialmaschinenbau oder bei Prüfständen, steigen stetig. Dabei geht es nicht nur darum, Zykluszeiten zu verringern oder größere Datenmengen in kürzerer Zeit zu verarbeiten. Auch die Breite von Anwendungen steigt und es müssen zusätzliche Aufgaben gelöst werden. Neben klassischen Steuerungsaufgaben wird immer häufiger auch eine Verbindung mit Robotik, komplexen mathematischen Berechnungen oder Bildverarbeitung benötigt oder die Nutzerinteraktion soll ein modernes Erscheinungsbild tragen. Hier zeigt sich vor allem der Vorteil PC-basierter Lösungen. Dazu ist auch Windows 7 gut geeignet, wenn ihm eine leistungsfähige Echtzeiterweiterung zur Seite gestellt wird.

Aufmacherbild: Physical phenomenon von Shutterstock / Urheberrecht: Barbol

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -