Auch für komplexe Aufgaben Echtzeit unter Windows 7

Die Anforderungen an Steuerungen in der Automatisierung, zum Beispiel 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. Neben klassischen Steuerungsaufgaben wird immer häufiger auch eine Verbindung mit Robotik, komplexen mathematischen Berechnungen oder Bildverarbeitung benötigt. Hier zeigt sich vor allem der Vorteil PC-basierter Lösungen. Dazu ist auch das neue Windows 7 gut geeignet, wenn ihm eine leistungsfähige Echtzeiterweiterung zur Seite gestellt wird. Zwei Dinge müssen hierbei erfüllt werden. Die Echtzeit-Umgebung muss die zugrunde liegende Hardware direkt ansprechen, damit die geforderten Eigenschaften für zeitkritische Aufgaben erreicht werden können. Und zweitens sollte der normale Betrieb von Windows nicht beeinflusst werden. Ausnahmen sind in der Regel nur kurzzeitig zulässig. Das Echtzeit-Multitasking-System der \’Real-Time-Suite\‘ fasst Windows als einen sehr niedrig priorisierten Task auf. 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. Dazu ist kein eigenständiges RTOS (Real-Time-Operating-System) erforderlich. Der Anwender kann seinen zeitkritischen und hardwarenahen Programmcode in Form einer speziellen DLL in den Echtzeit-Kontext verlagern. So können gewohnte Entwicklungsumgebungen und Programmiersprachen weiterhin verwendet werden, was den Einarbeitungsaufwand in Grenzen hält. Bedingung ist, dass der verwendete Compiler nativen Maschinencode erzeugt. Dies gilt für die verschiedenen Entwicklungssysteme für C/C++ sowie für die Delphi-Entwicklungsumgebung. Grundsätzlich wird auch eine Anbindung für C# bereitgestellt, so dass sämtliche Ressourcen der industriellen Applikation 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. Dynamische Anpassung Insgesamt stehen 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. Zur Synchronisation der Tasks stehen Semaphore und Events bereit. Der Echtzeit-Teil kann mit der übrigen Anwendung einfach und direkt kommunizieren, da durch die \’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 vereinfachen die Kommunikation. Die Zugriffe der beiden Seiten sind automatisch gegeneinander abgesichert. Der Programmierer muss sich nicht um die Synchronisation eventuell konkurrierender Zugriffe kümmern. Einfach und direkt kommunizieren Mittels Event-Objekten ist es möglich, Anwendungsthreads in bestimmten Situationen aufzuwecken. Das in den meisten Fällen angestrebte Ziel besteht darin, externe Hardware von der Echtzeitumgebung aus auf verschiedene Weise anzusprechen. Hierzu stehen zum einen die üblichen 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 Kommunikations-Schnittstellen (zum Beispiel seriellen COM-Schnittstellen oder USB-Devices). Unterstützt werden weiterhin CAN-Schnittstellenkarten verschiedener Hersteller mit einem allgemeingültigen API mit Echtzeit-Treibern. Außerdem werden verschiedene Feldbusse, wie zum Beispiel Profibus, mit einer eigenen DP-Master Implementierung direkt unterstützt. Da Automatisierungstechnologien zunehmend auf Ethernet aufsetzen, werden echtzeitfähige Netzwerktreiber für die weit verbreiteten Controller von Intel und RealTek bis zu Gigabit-Raten bereitgestellt. Diese Treiber wurden auf hohe Effizienz und niedrige Latenzzeiten ausgelegt. Auf Basis dieser speziell entwickelten Treiber kann Ethernet auch in Echtzeit-Anwendungen als Kommunikationsstandard eingesetzt werden. Dies ist nicht nur für anwendungsspezifische Protokolle verwendbar, sondern beispielsweise auch für Echtzeit-TCP und -UDP. Industrial Ethernet im Trend \’Industrial Ethernet\‘ ist groß im Trend: Nahezu alle bedeutenden 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 PowerLink oder Sercos III. 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 erfolgt ähnlich wie bei CANopen. Bei einer EtherCAT-Topologie verwaltet ein Master, das ist die PC-basierte Managementsoftware, die angeschlossenen Slaves. Diese sind unterteilt in einzelne Objekte, die mehrere Variablen enthalten können. Sie sind durch einen Namen eindeutig identifiziert und besitzen einen festgelegten Datentyp. Die Werte der Variablen sind les- und/oder beschreibbar. Der EtherCAT Master der \’RealTime Suite\‘ unterstützt einige besondere Betriebsarten wie zum Beispiel 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 Kabelredundanz-Modul erhöht die System-Verfügbarkeit. Alle bisher genannten Funktionsmodule der Echtzeiterweiterung stellen jeweils die spezifische Funktionalität zur Verfügung. Einfache Programmierung Sollen in einer Automatisierungslösung verschiedene Kommunikationsprotokolle, zum Beispiel Profibus und EtherCAT, miteinander verknüpft werden bei dennoch neutral gehaltenem Steuerungsablauf, kann die Applikation auf einer noch abstrakteren Ebene erstellt werden. 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 in welcher konkreten Topologie sich diese befinden. Die bekannten PLC-Programmiersprachen Anweisungsliste und Strukturierter Text werden unterstützt. Künftige Versionen der Echtzeiterweiterung \’RealTime Suite\‘ werden das Vorhandensein mehrerer CPU-Kerne noch besser berücksichtigen und einzelne Aufgaben gezielt den verschiedenen CPU-Kernen zuordnen. Mit einem allgemein gültigen Ansatz werden sowohl 32- als auch 64-Bit-Systeme unterstützt werden bei weiterhin einfacher Programmierung. 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 erweitert werden. Autor: Uwe Jesgarz, GF der Kithara Software GmbH in Berlin