Mit Hochsprache in die Zukunft der Automatisierung

Setzt sich die Hochsprachenprogrammierung in der SPS-Welt durch? Viele Experten sind der Meinung, dass dies zur Lösung heutiger Aufgaben erforderlich ist. Wenn die Experten in ihrer Einschätzung richtig liegen, dann stellt sich also eher die Frage wann sich die Hochsprache durchsetzt. In der Tat ist die Entscheidung für Unternehmen schwierig, da an Berufsschulen, Technikerschulen und an den Hochschulen immer noch FOP, KUP und AWL gelehrt wird. Die Mitarbeiter auf moderne Programmiertechniken umzuschulen, scheint auf den ersten Blick kostspielig. Trotzdem ist die Entwicklung kaum mehr aufzuhalten, da der Leidensdruck der Anlagenbauer ein rascheres Time-to-Market zu erreichen immer größer wird. Zudem bringt der Nachwuchs, im Bereich der Automatisierungstechnik, mittlerweile auch Hochsprachenkenntnisse mit. Breit gefächerte Anforderungen Betrachtet man eine Anlage mit höherem Automatisierungsgrad, so erkennt man schnell, dass die Anforderungen an das System und insbesondere an die Programmiersprache vielseitig und anspruchsvoll sind. Abgedeckt sein sollte von der reinen Ein-Ausgangsverknüpfung über komplexe Arithmetik, Analogwertverarbeitung bis zu Positionieraufgaben mit Antrieben und Datenverwaltung mit gemischten Datentypen. Außerdem müssen die Systeme differenzierten Ansprüchen aus dem klassischen Anlagenbau sowie jenen aus verwandten Bereichen wie z.B. HLK (Heizung, Lüftung, Klima) oder Mobile Automation genügen. In nahezu allen Fällen enthält ein System mehrere Prozesse, die parallel und in den meisten Fällen völlig autark ablaufen. Häufig sind die Anlagen vernetzt und an ein Scada-System angeschlossen, das die Daten der verschiedenen Steuerungen in den Anlagen verarbeitet. Parallele Prozesse verarbeiten All diese Anforderungen aus der Praxis des Maschinen- und Anlagenbaus stellen höchste Ansprüche an die Programmiersprache eines Steuerungssytems. Bereits hier kann die Frage konkretisiert werden, ob die klassische Form der SPS-Programmierung dazu geeignet ist, diesen Anforderungen gerecht zu werden. Oder ob es nicht sinnvoll ist, Konzepte aus der IT-Welt in die Automatisierungstechnik zu transferieren und an deren spezifischen Anforderungen anzupassen. So wie dies zum Beispiel bei der Programmiersprache JetSym STX realisiert wurde. Im Gegensatz zu den verbreiteten SPS-Systemen ist JetSym STX von Grund auf als Multitasking ausgelegt. Das bedeutet, dass das Programm nicht zyklisch abgearbeitet wird, sondern ereignis- beziehungsweise prozessorientiert. Das Multitaskingbetriebssystem von STX verwaltet bis zu 100 Tasks, die in sich selber völlig autark sind. Dies entspricht auch dem natürlichen Abbild der verschiedenen Prozesse einer Anlage. Jedem dieser Task kann eine eigene Priorität zugeordnet werden. Nahezu unendlich viele Möglichkeiten JetSym STX basiert auf Strukturiertem Text nach der IEC-61131-3 Norm, bietet jedoch gegenüber dem Standard deutliche Vorteile bei Funktionalität und Komfort. So verfügt es über leistungsfähige Befehle für die integrierte Positionierung von Antriebsachsen und die Bedienerführung. Dadurch vereinfacht sich die Programmierung und es ergeben sich neue Möglichkeiten bei der Realisierung komplexer Funktionalitäten. Das umfangreiche Hilfesystem gibt dabei eine optimale Unterstützung. Die Befehle können in folgende Kategorien aufgeteilt werden: – Befehle für die Task-Verwaltung – Ablauf- und Schleifenbefehle wie z.B. WHEN, IF, CASE, FOR oder WHILE – Boolsche Ausdrücke (Merker, Eingänge, Ausgänge und Zahlenwerte) – Arithmetik – Vergleiche wie <>, = und Wertebegrenzungsbefehle – Diverse Timer-Befehle – Zeiger (Pointer) – Funktionen – Objekte – Ausnahmebehandlung – Netzwerkbefehle zur Kommunikation über Ethernet – Befehle für die Bedienerführung – Befehle für die Textverarbeitung – Befehle für Datei-Operationen wie Laden, Speichern und Löschen von Dateien für das integrierte Datei-System. Der Appetit kommt mit dem Essen Gibt man SPS-Programmierern ein Werkzeug an die Hand, das nahezu keine Einschränkungen mehr hat, werden diese erfahrungsgemäß im positiven Sinne äußerst kreativ. Ein Alarmhandling über eine HTML-Seite angezeigt, ist für sich gesehen nichts Ungewöhnliches. Dass diese Seite durch den Quellcode der Steuerung erzeugt wird, schon eher. JetSym STX ist in der Lage, eine Datei auf dem Dateisystem einer Jetter JetControl-Steuerung zu erzeugen. Dadurch ist eine für die SPS-Welt ungewöhnliche Aufgabe einfach realisierbar. Unabhängige Plattformen Man stelle sich vor, dass mit einer beliebigen Plattform, die in der Lage ist, HTML-Seiten anzuzeigen, Fehler- oder Statusmeldungen einer Anlage abgerufen und angezeigt werden können. Zum Beispiel mit einem Standardbrowser eines Pocket-PCs oder iPhones. Man stelle sich weitrehin vor, dass diese Seite über das Internet aufrufbar ist. In solchen Funktionalitäten liegen sowohl für den Maschinen- und Anlagenbauer als auch für den Endkunden erhebliche Sparpotentiale in Bezug auf die Servicekosten. Da Jetter für die Kommunikation primär auf Standard-Ethernet-TCP/IP setzt und Dienste wie FTP oder HTTP unterstützt, ist eine solche Funktion ohne weiteres realisierbar. Der Befehlsumfang von JetSym STX enthält Befehle für String- und Dateiverarbeitung. Datenstrukturen wie ein indiziertes Array of String lassen sich ebenfalls uneingeschränkt deklarieren und im Quellcode verwenden. Mittels dieser Kommandos lässt sich nun eine HTML-Seite auf dem integrierten Dateisystem erstellen. Beispiel gefällig: Quellcode erzeugt HTML-Seite Bild eins zeigt, wie in HTML-Code die Grundseite ohne die dynamischen Elemente wie Datum Uhrzeit, User usw. erzeugt wird. In ein dynamisches, indiziertes Array of String werden die HTML Befehle geschrieben. Eine Funktion erzeugt danach eine Datei mit dem Namen Alarm.html und schreibt sie auf das Dateisystem der JetControl-Steuerung. Das Unterprogramm in Bild zwei schreibt dann die HTML-Datei auf das Dateisystem des JetControls. Mittels einer repeat … until-Schleife werden die Zeilen mit dem FilePutString() erzeugt bis die Seite vollständig ist. Zuletzt werden die dynamischen Felder wie Datum, Zeit, Alarmtext, User und Bemerkungen als Stringvariable, wie in Bild drei gezeigt, erzeugt und anschließend in die HTML-Datei geschrieben. Tritt ein neuer Alarm auf, wird eine neue Zeile in der Alarmtabelle erzeugt. Die Anzahl der Alarme lässt sich per Konstante bestimmen. Ist diese Anzahl überschritten, wird der älteste Alarm automatisch entfernt. Die komplette Seite lässt sich nun über einen Browser aufrufen und wird wie in Bild vier angezeigt. Nicht nur klassische Steuerungsaufgaben