Safety / Funktionale Sicherheit
Sicher programmieren auf Basis der IEC 61131-3
Bei der Programmierung von Applikationssoftware sind Standard und Sicherheit bislang weitgehend getrennte Welten. Ein Wechsel zwischen den verschiedenen Sprachen und Editoren bedeutet Komplexität und erhöht die Engineering-Aufwendungen. Ziel muss es daher sein, Standard und Sicherheit bei der Programmierung zu verschmelzen.
Heutige Sicherheitssteuerungen zeichnen sich nicht zuletzt durch die Möglichkeit der freien Programmierung ähnlich einer Standard-SPS aus. Hierzu verfügen diese bereits über eine große Anzahl an Editoren, die den Ansprüchen der unterschiedlichen Branchen und Zielgruppen Rechnung tragen. Komplexe Sicherheitsfunktionen benötigen „mächtige“ und zugleich effiziente Programmiersprachen, in denen Softwareteile erstellt und getestet werden können. Für eine möglichst einfache Weiterverwendung macht es Sinn, im Anschluss an die Testphase die erstellten Softwaremodule in eine grafische Darstellung zu überführen.
In der anderen „Welt“ – sprich im Umfeld der nicht sicherheitsgerichteten Automatisierung – kommen für die Programmierung der SPS standardisierte Sprachen nach EN/IEC 61131-3, dem international akzeptierten Standard für speicherprogrammierbare Steuerungen, zum Einsatz. Zu den geläufigsten Sprachen gehören Strukturierter Text (ST) und die Anweisungsliste beziehungsweise Instruction List (AWL/IL). Die Pascal-ähnliche Programmiersprache ST bietet mehr Strukturierungsmöglichkeiten als IL und löst diese daher immer mehr ab. Allerdings halten viele Entwickler noch immer an der Programmierung mit IL fest. Teilweise aus reiner Gewohnheit, aber auch wegen der allgemeinen Auffassung, dass ST-Programme nach der Compilierung meist mehr Speicherplatz benötigen. Das kann auf kleineren Steuerungen mit begrenztem Speichervolumen zu Problemen führen.
Die sichere Applikationssoftware
Für die Sicherheit von Applikationssoftware (SRASW – Safety-related Application Software) gelten im Maschinen- und Anlagenbau die Anwendernormen EN/IEC 62061 sowie die EN ISO 13849-1. Beide unterscheiden zwischen FVL-Sprachen (Full Variability Language) und LVL-Sprachen (Limited Variability Languages). Sprachen, die als FVL klassifiziert sind, bieten alle Möglichkeiten der Programmierung. Aufgrund ihres großen Funktions- und Befehlsumfangs zählen IL und ST neben Hochsprachen wie C beziehungsweise C++ üblicherweise zu dieser Kategorie.
Die Software-Plattform PAS4000 bietet die nach EN/IEC 61131-3 etablierten Programmiersprachen an. Darüber hinaus ist ein eigener und einfach anzuwendender grafischer Programm-Editor enthalten.
© PilzDemgegenüber besitzen LVL-Sprachen einen eingeschränkten Sprachumfang und eine übersichtliche Ausdrucksweise. Diese Sprachen beschränken sich meist auf die Möglichkeit, vordefinierte Bibliotheksfunktionen zu parametrieren und zu kombinieren, um die Sicherheitsanforderungen im Programm umzusetzen. In diesem Zusammenhang werden oft Kontaktplan (KOP/LD) und Funktionsbaustein-Sprache (FBS/FBD) genannt. Dabei unterscheidet sich beispielsweise die Ausdrucksmächtigkeit von FBD überhaupt nicht zu IL – lediglich die grafische Repräsentation gibt dem Anwender eine übersichtlichere Darstellung.
Die Einschränkungen sollen den LVL-Anwender vor den sonst in der Programmierung üblichen Fehlerquellen schützen. Dazu gehört beispielsweise das Bilden von Schleifen oder die Verwendung von Zeigern (Pointer). Bei der Programmierung in FVL bestehen keine Einschränkungen; allerdings bleiben damit auch die Fehlerquellen erhalten.
Die Sektornormen zur EN/IEC 61508 sowie der EN ISO 13849-1 empfehlen für die Erstellung von Sicherheitsrelevanter Applikations-Software (SRASW) LVL-Programmiersprachen. Bei Verwendung einer FVL-Sprache wird auf den wesentlich aufwendigeren Entwicklungs- und Validierungsprozess nach der Sicherheitsgrundnorm EN/IEC 61508 verwiesen.
Konfiguration mittels Bausteinen – die Grenzen
Hersteller von Sicherheitssteuerungen stellen die Sicherheitsfunktionen in so genannten zertifizierten Anwendungsbausteinen bereit. Akkreditierte Stellen wie die Berufsgenossenschaft (BG) oder der TÜV haben diese vorab sicherheitstechnisch geprüft. Mithilfe dieser sicheren Anwendungsbausteine und per Logikverknüpfung der Bausteine untereinander erstellt der Maschinen- oder Anlagenbauer die geforderte sicherheitsgerichtete Applikation, welche er früher umständlich und zeitaufwendig über die Verdrahtung von Schützen und Schaltgeräte realisiert hätte. Grafische Linien am Bildschirm zwischen den vorgefertigten Anwendungsbausteinen ersetzen Kontakte und Drähte. Die Erstellung eines elektrischen Schaltplanes mit der Abbildung der Logikfunktionalitäten entfällt.
So weit, so gut. Der freien Programmierung sind aber Grenzen gesetzt: Um sicherzustellen, dass Programme übersichtlich und verständlich bleiben, hat man bei den meisten Systemen den Befehlssatz und/oder die Anzahl der verfügbaren Editoren begrenzt. Dies war und ist kein Problem, solange Maschinen und Anlagen nur einfache Sicherheitsmaßnahmen erfordern. Jedoch vollzieht sich im Hinblick auf die Anforderungen an Sicherheitstechnik aktuell ein struktureller Wandel: Die Prozesse werden immer dynamischer, der Bedarf an kontrollierten Eingriffen in den Prozess sowie die Anforderungen an die Produktivität steigen und verändern somit sukzessive auch die Sicherheitstechnik.
Angesichts dieses Wandels ist bei Pilz die Idee gereift, alle SPS-Sprachen nach EN/IEC 61131-3 auch für die Programmierung von Sicherheitsaufgaben einzusetzen. Zentrales Element hierfür ist die Software-Plattform PAS4000 im Automatisierungssystem PSS 4000 mit ihren verschiedenen Editoren und Bausteinen. Die Besonderheit dabei: Der Anwender erhält einheitliche Editoren, die für automatisierungs- wie auch sicherheitstechnische Aufgabenstellungen verwendbar sind. Er bekommt somit die Freiheit, die Konfigurierung mit Funktionsbausteinen oder Programmierung mit Quellcode in EN/IEC-61131-3-konformen Editoren zu kombinieren.
In einem System: Konfigurieren von Bausteinen…
Mit dem grafischen Programm-Editor lassen sich Programmstrukturen aus vordefinierten Software-Bausteinen per „Drag & Drop“ zusammenstellen.
© PilzFür Konstrukteure steht die einfache, bausteinorientierte Sprache PASmulti zur Verfügung. Die identische Programmierumgebung des grafischen Programm-Editors und der Editoren nach EN/IEC 61131-3 erlauben eine einfache Handhabung. So sind etwa Softwarebausteine, die durch den Anwender zum Beispiel in PAS IL (Anweisungsliste) individuell für Standard- oder sicherheitsgerichtete Funktionen geschrieben werden, ohne weiteres auf PASmulti übertragbar. Auf diese Weise lassen sich komplexe Projekte mit Softwareteilen aus verschiedenen Editoren übersichtlich strukturieren und der Anwender muss dabei keine Programmiersprache beherrschen.
Zudem steht in PASmulti eine Bibliothek an bereits zertifizierten Softwarebausteinen zur Verfügung, beispielsweise zur Positionserfassung oder für allgemeine Funktionen wie Not-Halt, die der Anwender um selbst erstellte Softwarebausteine ergänzen kann. Diese Bausteine vereinfachen die Erstellung von Automatisierungsprogrammen enorm und erlauben auch eine funktionale Gliederung und Strukturierung der Programme. Des Weiteren lassen sich Änderungen im Softwarebaustein zentral dokumentieren und verwalten. Damit ist eine hohe Wiederverwendbarkeit gegeben was letztendlich in Kosteneinsparungen resultiert.
… oder Programmieren nach EN/IEC 61131-3
Bei der Anweisungsliste handelt es sich um eine maschinennahe Programmiersprache nach EN/IEC 61131-3 für die SPS-Programmierung.
© PilzFür „echte“ Programmierer stehen in PAS4000 aber auch die Editoren PAS IL für Anweisungsliste und PAS STL für Strukturierten Text zur Verfügung. Die Besonderheit ist, dass diese EN/IEC-61131-3-Sprachen erstmals im Umfeld der industriellen Automatisierung auch als LVL eingestuft werden, wodurch die Anforderungen an die Erstellung von sicherheitsbezogener Anwendersoftware der Anwendungsnormen wie EN/IEC 62061 und EN ISO 13849-1 erfüllt sind. Der Programmierer kann so seine gewohnte Programmiersprache weiter nutzen und sich der Ausdrucksweise und Funktionen dieser Programmiersprachen bedienen, um seine Applikationssoftware zu erstellen. Und er muss dabei nicht seinen kompletten Entwicklungs- und Validierungsprozess auf das wissenschaftliche Niveau der IEC 61508 anheben.
Die Bestätigung als LVL geht allerdings nicht ohne Einschränkungen. Durch systembedingte Abwandlungen und Einschränkungen beim Sprachumfang sind bereits die „gefährlichsten“ Sprachkonstrukte des vollständigen EN/IEC-61131-3-Befehlssatzes ausgeschlossen. Auch Laufzeitfehler wie Division durch Null oder ähnliches führen bei PSS4000 zum definierten Anhalten der Task und nicht in einen undefinierten Zustand. Weiterhin bietet das System eine Tool-Unterstützung schon bei der Eingabe sowie eine Führung des Programmierers beispielsweise zur strikten typisierten Verwendung von Konstanten oder ähnlichem. Somit können auch nach Auffassung des TÜV Süd die in PAS4000 zur Verfügung gestellten IEC-61131-3-Sprachen als LVL eingestuft werden.
Strukturierter Text ist ebenfalls eine der in EN/IEC 61131-3 standardisierten Sprachen, bietet jedoch mehr Strukturierungsmöglichkeiten als die Anweisungsliste.
© PilzKurzum: Die einfache Kombination von STL, IL und dem grafischen Programm-Editor ermöglicht eine strukturierte Arbeit, übersichtliche Programme und eine umfangreiche Bibliothek für Failsafe- und Standard-Bausteine. Letztlich vereinen moderne Sicherheitssteuerungen sinnvoll die Möglichkeiten der Programmierung einer SPS mit den Vorzügen der Konfiguration der Geräteklasse „konfigurierbare Sicherheitssteuerung“. Der Anteil wiederverwendbarer Lösungen lässt sich so steigern und Engineering-Prozesse vereinfachen sich erheblich.
Autor: Marcel Wöhner ist Mitarbeiter im Produktmanagement bei Pilz, Ostfildern.














