Automatisieren mit Windows XP: Echtzeit ohne klassische SPS-Sprache

Die Windows-XP-Plattform bietet zahlreiche Visualisierungs- und Datenverwaltungsprogramme, die auch Automatisierer gerne nutzen würden. Zudem gibt es ausgereifte Entwicklungssysteme in C++ und Delphi. Viele C++- oder Delphi-Softwareingenieure wären begeistert, ihre Steuerungssoftware in der gewohnten Entwicklungsumgebung zu realisieren. Die Anforderungen an den Komfort von Maschinensteuerungen in der Automatisierungstechnik steigen bei gleichzeitig kürzeren Entwicklungszyklen ständig. Auf der anderen Seite zwingt der zunehmende Kostendruck die Hersteller immer mehr, von einer Multiprozessorlösung auf eine Einprozessorlösung umzusteigen. Diese Umstellung wird begünstigt durch immer leistungsfähigere PC-Hardware, deren Rechenleis-tung ausreicht, sowohl die Steuerungssoftware als auch die Mensch-Maschine-Schnittstelle zu bearbeiten. Zugleich ist die Steuerung mit diesem Konzept leicht in den Fab­rikbus (LAN) zu integrieren. Die hier vorgestellte Software mit dem Namen rtAIDiA (= real time-Automation API for Immediate Direct io-Access) stellt die notwendigen Softwaremodule zur Verfügung, um eine Echtzeit-Steuerung auf einem Standard-PC oder IPC mit XP-Betriebssystem zu realisieren. Die Echtzeitfähigkeit wird mit dem Timer-Modul der Firma Kithara realisiert. In der Entwicklungsphase wird die Software auf der Anwenderebene, also konventionell ausgeführt. Nach Fertigstellung und Test der Software wird eine DLL generiert, deren Funktionen im Kernel-Mode, also mit höchster Priorität, des Betriebssystems ausgeführt werden (Bild 1). Debuggen Das Software-Schema wird in einer Anlagensteuerung eingesetzt, deren Zykluszeit 1ms beträgt. Für das \’Austesten\‘ der Funktionalität ist eine Portierung in den Kernel-Mode nicht immer notwendig. Untersuchungen haben gezeigt, dass ­zyk­lisch aufgerufene Applikationssoftware, die mit der höchstmöglichen Priorität in der App­likationsebene ausgeführt wird, einen maximalen Zeit-Jitter von 400µs über die Zeitdauer von 60min aufweist. Bei längeren Betriebszeiten gibt es Ausreißer, die im Bereich von bis zu 300ms liegen können. Testsys­tem war ein Standard-Desktop-PC mit Windows XP SP2 und einem 2,8GHz HT-Prozessor. Das zeigt, dass das \’Debuggen\‘ auf der Applikationsebene durchaus möglich ist, die Anwendung im realen Betrieb nur auf Kernel-Ebene sinnvoll einzusetzen ist (Bild 2). Klippen Nicht jeder Anwender kann oder möchte mit einer klassischen SPS-Sprache arbeiten. Viele wollen die Leistungsfähigkeit eines PCs auch in ihrer Steuerungssoftware voll ausschöpfen. Dazu gehört eine leistungsfähige Entwicklungsumgebung und die objektorientierte Programmierung. Die hier vorgestellte Lösung ermöglicht es, die Steuerungssoftware in MSVC oder Delphi zu entwickeln. Dazu sind weitreichende Vorarbeiten notwendig, damit die Steuerungssoftware modular und wartbar aufgebaut werden kann. Die notwendigen Software-Komponenten können wie folgt eingeteilt werden: -Kithara Timer Aufruf -> Aufruf Protokoll-Stack und Steuerung, -Protokoll-Stack für die Ansteuerung der E/A-Komponenten, -Feldbus-Basiskommunikation (Data Link Layer im ISO-OSI-Modell), -Aufzeichnung der Feldbus-Statusdaten, -Synchroner Datenaustausch zwischen Protokoll-Stack und Steuerung/Applikation bzw. Datenaustausch zwischen Steuerung und Protokoll-Stack/Applikation, -Synchroner Status der Steuerungssoftware, -Synchroner Schrittketten- und Timer-Software für die Steuerung, -Management und Visualisierung der Prozessdaten, -Steuerungssoftware (d.h. Anwendersoftware). Entwicklung & Konfiguration Die Steuerungssoftware muss und soll vom Spezialisten erstellt werden. Alle anderen benötigten Softwaremodule sind in rt-AIDiA enthalten. Die Timer-Komponente von Kithara wird mit dem Aufruf der AIDiA-Software gestartet. Nach dem Anlegen des Shared-Memory wird der Protokollstack (hier canOpen) aufgerufen. Die Konfiguration des canOpen-Stack erfolgt wahlweise über ein Konfigurationsfile, das mit geeigneten Tools elektronisch erzeugt wurde oder über das Shared-Memory-Modul direkt aus dem Steuerungsprogramm. Die Feldbus-Basiskommunikation wird vom Protokollstack verwendet, um Daten von und zu den angeschlossenen Feldbus-Knoten zu transportieren und das Netzwerkmanagement auszuüben. Die Automatisierungsanlagen werden immer komplexer. Deshalb ist es wünschenswert, dem Anwender bzw. dem Service-Techniker ein Maximum an Informationen zur Verfügung zu stellen. Alle Daten, die im System bereits zur Verfügung stehen, sollten deshalb der Steuerungssoftware zur Verfügung gestellt, aber auch visualisiert werden. Im rt-AIDiA-Treiber werden deshalb die CAN-Bus-Parameter wie Error-Frame-Counter, Anzahl der Bus-Off-Unterbrechungen, die Buslast, die Anzahl der Tx- und Rx-Nachrichten dem Anwender zur Auswertung und zum eventuellen Eingreifen übermittelt. Diese Daten werden ebenfalls im Data Link Layer (Feldbus-Basiskommunikation) ermittelt. Für die Funktionsüberwachung von Sensoren bei der Inbetriebnahme und dem Betrieb selbst ist es sehr wichtig, die Prozessdaten auch visuell darstellen zu können. Alle Aktor- und Sensordaten stehen dem Anwender im Shared-Memory-Bereich zur Verfügung. Ein \’refresh\‘ der visuellen Anzeige kann nicht im Takt der Steuerungssoftware (400µs bis 1ms) dargestellt werden. Dazu dient das Prozess-Parameter-Modul, das die Daten im 100ms-Takt synchronisiert mit den im Protokoll Stack erfassten Kernel-Daten darstellt. Die Datenübermittlung zwischen Steuerung und Visualisierung erfolgt über synchronisierte multithread-sichere Mechanismen, die automatisch abgearbeitet werden. So können alle Prozessparameter der angeschlossenen Hardware-Module über standardisierte Datenausgabefenster visuell inspiziert werden. Die Praxis zeigt, dass kleine Softwareänderungen oft große Auswirkungen haben können. Ein Fehler wird beseitigt – und schon ist der Leistungsdurchsatz der Maschine um 30% vermindert. Um solche Effekte im Keim zu ersti­cken, sind die Auswertung der Leistungsdaten der Steuerungs-Software Pflicht. Die Prozessparameter wie maximaler Jitter, ­Zykluszähler und die maximale und durchschnittliche Zykluszeit in Mikrosekunden erleichtern es dem Anwender, leistungsfähige und damit schnelle Steuerungssoftware zu schreiben und zu warten. Last but not least gibt es ein Anwenderdatenaustausch-Modul für den Transport zwischen der Steuerungssoftware und der Applikationsebene. Steuerung Für die Abarbeitung der Steuerung selbst werden Objekte zur Verfügung gestellt, die es ermöglichen, bis zu 256 autarke Tasks abzuarbeiten. Timerfunktionen, Schrittketten sowie die Datenübergabe zur Applikation bzw. zur E/A-Ebene sind bereits realisiert. Bild 4 zeigt, wie einfach die Ansteuerung eines digitalen Ausgangs eines über Feldbus angeschlossenen Moduls ist. In Bild 3 wird der Ausgang im Takt der Zykluszeit in Echtzeit geschaltet. Zusammenfassung rt-AIDiA bietet jedem C- und Delphi-Programmierer die Möglichkeit, Steuerungen ohne Verzicht auf objektorientierte Technologie zu realisieren. Die harte Echtzeitfähigkeit unter Windows XP ermöglicht es zudem, verfügbare getestete Software-Technologie mit der Steuerungswelt zu verknüpfen.