Für den Informatiker ist eine Maschinensteuerung, SPS oder PLC oft ein Buch mit sieben Siegeln. Eine Maschine wird programmiert, jedoch ganz anders als eine PC-Applikation, Smartphone-App oder Web Applikation. Und auch innerhalb der Embedded- Anwendungen unterscheidet sich die SPS in vielen Punkten von der Microcontroller-Programmierung.
Was ist eine SPS überhaupt?
Eine SPS (Speicherprogrammierbare Steuerung) oder Englisch, PLC (Programmable Logic Controller) ist im Grunde eine CPU, welche für den Einsatz als Maschinen- und Anlagensteuerung konzipiert ist. Mithilfe verschiedener Input/Output-Module, mit denen die SPS erweitert werden kann, können verschiedene Sensoren und Aktoren angebunden werden. Beispielsweise kann das Modul als Analogeingang zum Anschluss von Temperatursensoren dienen, oder auch eine Busschnittstelle bereitstellen, welche nicht in der SPS integriert ist. Die Module von den jeweiligen SPS-Herstellern werden einfach angesteckt oder per Industriebus (z.B. ProfiBus, ProfiNet, EtherCat) verbunden. Der Industriebus bildet dabei ein kleines, maschineninternes, Netzwerk vergleichbar mit dem CAN-Bus im Automobil.
Historisch gesehen wurde die erste SPS 1968 entwickelt, um elektrische Schütz-Schaltungen abzulösen, welche vorher zur Maschinensteuerung verwendet wurden.
Warum wird nicht einfach ein PC verwendet?
Vorweg ist zu sagen, dass die Grenze zwischen PC und SPS immer mehr verschwimmt. So setzt der SPS Hersteller WAGO zum Beispiel auf ein echtzeitfähiges Linux als Betriebssystem, worauf die SPS emuliert wird und Beckhoff verkauft seine Steuerungen für die Hutschienenmontage als Embedded-PC .
Gegenüber eines konventionellen PCs hat eine SPS für die Maschinenbauer verschiedene Vorteile. Beispielsweise ein Langzeit-Support des Herstellers, sowie die überragende Ausfallsicherheit und Stabilität der Systeme. Diese Stabilität konnte früher mit PCs nicht erreicht werden. Des Weiteren spielt es eine Rolle, dass es sich bei den Steuerungen um einen genormten Standard nach EN 61131 handelt. Dadurch sind viele Spezialisten auf dem Arbeitsmarkt verfügbar und die Bindung an einen Hersteller ist nicht stark.
Die Echtzeitfähigkeit der SPS
Die Echtzeitfähigkeit war immer und ist, zumindest bei manchen Aufgaben, noch heute wichtig. Dadurch können die Maschinensteuerungen Regel- und Positionieraufgaben übernehmen. Es gibt den Begriff der „harten Echtzeit“, das heißt, dass eine Garantie gegeben werden kann, dass das Berechnungsergebnis nach einer definierten Zeit vorhanden ist. Eine SPS kann die Anforderungen der harten Echtzeit erfüllen, indem sie Ihre Zykluszeit überwacht.
Dazu muss kurz der Ablauf eines SPS-Programms erläutert werden: Ein SPS Programm wird immer zyklisch aufgerufen. Ein Zyklus besteht dabei aus drei Teilen. Erstens: Das Einlesen aller anliegenden Eingänge in einen Zwischenspeicher. Zweitens: Das Abarbeiten der definierten Aufgaben, und drittens: Das Ändern der Ausgänge entsprechend der Berechnungen. Um die maximale Dauer eines Zyklus garantieren zu können, wird ein sogenannter „Watchdog“ eingesetzt. Dieser versetzt die SPS in den „STOP“-Zustand, der ein manuelles Eingreifen nötig macht, wenn die definierte Dauer von z.B. 200ms überschritten wird.
Die SPS Programmierung
Zur Programmierung der SPS wird meist die Herstellerspezifische Entwicklungsumgebung (IDE) verwendet. Wegen der Bindung an die Norm ähneln sich die IDEs in den Basisfunktionen sehr.
Die Gliederung des Programms findet in Bausteinen statt, von welchen zwischen drei Typen gewählt werden kann. Eine „Funktion“ ist ein Baustein, der keine Daten über einen Zyklus hinweg speichern kann. Ein „PRG-Baustein“ ist meist der Startbaustein des Programms, von ihm aus werden andere Bausteine aufgerufen. Dieser Baustein kann Daten lokal speichern, kann aber nicht instanziiert werden. Er funktioniert also ähnlich wie eine abstrakte Klasse. Der „Funktionsbaustein“ ist die dritte Variante, ein Funktionsbaustein kann Daten lokal speichern und muss zur Verwendung instanziiert werden. Wie in einer objektorientierten Programmiersprache wie Java oder C++ kann dieser Methoden enthalten, und von einem anderen Baustein erben, oder ein Interface implementieren.
Je Baustein kann ausgewählt werden, in welcher der Sprachen aus der Norm dieser implementiert wird. Es gibt drei verschiedene grafische Sprachen wie das „Function Block Diagram“ (FBD oder FUP) welches einem Logik-Schaltplan der Digitaltechnik ähnelt, das „Sequencial Flow Chart“ (SFC oder Graph) welches ein Zustandsdiagramm darstellt und das schaltplanähnliche „Ladder Diagram“ (LD oder KOP). Außerdem gibt es eine mit Assembler vergleichbare Sprache welche „Instruction List“ (IL oder AWL) genannt wird und Sprünge ermöglicht. Die modernste Variante ist die an Hochsprachen angelehnte Sprache „Structured Text“ (ST oder SCL).
Die Maschinenbedienung
Ein weiteres Thema ist die Bedienung der Maschinen. Abgesehen von übergeordneten Maschinenleitsystemen wie SCADA (Supervisory control and data acquisition), soll eine Maschine auch direkt vor Ort bedienbar sein. Dazu wird ein sogenanntes HMI-Panel (Human-Machine-Interface) eingesetzt. Hierauf läuft eine GUI und Befehle vom Maschinenbediener werden per Industriebus an die SPS weitergegeben. Da es sich heutzutage nicht mehr um reine Maschinensteuerungen handelt, gibt es meist noch die Variante mit einem Webserver direkt auf dem Gerät eine Visualisierungs- und Bedienoberfläche zur Verfügung zu stellen.
Ich hoffe ich konnte hiermit einen kleinen Einblick geben wie die SPS, das Herz der Maschinen die Tagtäglich unsere Produkte herstellen, verwendet wird. Letztendlich sind Maschinensteuerungen auch nur Computer, nur eben sehr langlebig, zuverlässig und, wie ich in meinem nächsten Blogartikel „5 Gründe warum Maschinensteuerungen anders sind“ aufzeigen will, eine Welt für sich. Eine Welt, die sich im Rahmen von Digitalisierung und Industrie 4.0 neuen Herausforderungen stellt.