Hello SPS! Teil 2: Mit OpenPLC vom Lernen zum Anwenden

Der zweite Teil der Artikelserie zu speicherprogrammierbaren Steuerungen zeigt, wie Developer die Open-Source-SPS OpenPLC praktisch einsetzen können.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen

(Bild: Stokkete/Shutterstock.com)

Lesezeit: 30 Min.
Von
  • Dr. Michael Stal
Inhaltsverzeichnis

Nachdem Teil 1 der Artikelserie den Grundstein zu speicherprogrammierbaren Steuerungen (SPS) gelegt hat, erklärt der vorliegende Beitrag, wie sich die Open-Source-SPS OpenPLC praktisch einsetzen lässt.

Der erste Teil hat die Grundlagen einer SPS dargelegt. Was sich auf den ersten Blick als zu viel des Guten für den täglichen Gebrauch anhört, besitzt Potenzial, sobald es sich um größere, komplexere Steuerungen und Regelungen wie etwa bei der Heimautomatisierung handelt. Natürlich kaufen sich Hobbyisten in der Regel keine kostspieligen, industriellen Hardware-Fertiglösungen inklusive zugehörigem Software-Werkzeugkasten. Ist es allerdings möglich, eine kostenlose Steuerung auf einem preisgünstigen Standard-Mikrocontroller oder SBC (Single Board Computer) zu betreiben, schaut die Sache schon vielversprechender aus. Die Frage lautet also: Es existieren bereits verschiedene kommerzielle Software-Steuerungen, die auch unter dem Begriff Soft-PLC firmieren (z. B. contrX, logiccloud), aber wie steht es um SPS-Open-Source-Anwendungen für Standardhardware à la Mikrocontroller, SBCs oder Desktopsysteme?

Der Pragmatische Architekt – Michael Stal

Prof. Dr. Michael Stal arbeitet seit 1991 bei Siemens Technology. Seine Forschungsschwerpunkte umfassen Softwarearchitekturen für große komplexe Systeme (Verteilte Systeme, Cloud Computing, IIoT), Eingebettte Systeme, und Künstliche Intelligenz. Er berät Geschäftsbereiche in Softwarearchitekturfragen und ist für die Architekturausbildung der Senior-Software-Architekten bei Siemens verantwortlich.

Wer danach sucht, wird nach kurzer Zeit fündig. OpenPLC ist Open Source, die den IEC-61131-3-Standard implementiert und demzufolge Sprachen wie Ladder Diagram, Function Block Diagram und weitere unterstützt. Die zugehörige Software gibt es kostenlos im Internet. Die Existenz von OpenPLC ist Thiago Rodrigues Alves zu verdanken, der es erdacht und umgesetzt hat.

Bevor es ans Eingemachte geht, sollte man sich eins vor Augen halten: OpenPLC besteht aus zwei Komponenten.

  • OpenPLC-EDITOR: Da ist zum einen der Editor bzw. die IDE, mit deren Hilfe Anwender die SPS programmieren, und danach das Programm auf der gewünschten Zielplattform installieren (hochladen), oder in der IDE simulieren und debuggen.
  • OpenPLC-RUNTIME: Und zum anderen gibt es eine Laufzeitumgebung, in der der Code für die SPS läuft, also die eigentliche Runtime der PLC. Laufzeitumgebungen existieren bei OpenPLC für verschiedenste Hardwareplattformen (z.B. diverse Arduino-Boards, ESP32, ESP8266, Raspberry Pi, UniPi Industrial Platform, Hardware mit Desktopbetriebssystemen).

Der OpenPLC-Editor als Entwicklungsumgebung (IDE) beschränkt sich hingegen auf macOS (als Beta-Version), Windows und Linux.

Die Webseite von OpenPLC ist über openplcproject.com erreichbar.

(Bild: openplcproject,com)

Die verschiedenen IDE-Implementierungen sind zum Herunterladen auf der Website des OpenPLC-Projektes verfügbar.

Installation:

  • macOS: Nach dem Download auf macOS müssen Nutzerinnen und Nutzer den OpenPLC-Editor ins Applications-Verzeichnis verschieben. Über das Terminal-Programm ist anschließend xcode-select --install aufzurufen. Startet der Editor zum ersten Mal, so fragt er in einem Dialog nach, ob er einige für Python benötigte Bibliotheken laden soll. Falls ja, also im Regelfall, öffnet sich ein Terminalfenster und bittet um Eingabe des Super-User-Passworts, weil die genannten Bibliotheken systemweit verfügbar sein sollen. Danach ist der Editor lauffähig und aufrufbar.
  • Linux: Der Download der Linux-Version besteht aus einer zip-Datei, die es zunächst zu extrahieren gilt. Im daraus extrahierten Verzeichnis wechselt man zum <Linux>-Unterverzeichnis und ruft über ein Terminal das Skript install.sh als regulärer Benutzer auf. Später bittet die Installation um Eingabe des Super-User-Passworts, worauf sich die Installation fortsetzt. Normalerweise müsste der OpenPLC-Editor nun im Applications-Verzeichnis der Linux-Distro auftauchen und sich starten lassen. Ist dies nicht der Fall, lässt sich der Editor auch einfach über das Skript openplc_editor.sh aufrufen. Im Übrigen funktioniert Opder enPLC-Editor für alle Debian-basierten Distributionen wie etwa Fedora oder Ubuntu.
  • Windows: Die einfachste Installation ist die für Windows, da der Download aus einem ausführbaren (self-contained) Installationsprogramm mit allen Bibliotheken und Dateien besteht. Nach der Ausführung des Installationsprogrammes lässt sich der Editor einfach über das Start-Menü finden und starten. In Windows ist die Installation systemweiter Bibliotheken nicht notwendig. Stattdessen erfolgt eine lokale Installation.

In allen drei Fällen empfiehlt es sich, nach der Installation zuerst über das Datei-Menü des Editors nach neuen Updates zu suchen. Nach einem Update sollte man den Editor schließen und neu starten.

Der Editor bringt auf den genannten Betriebssystemen Beispielprogramme und einen Simulator mit.

Zusätzlich ist die Installation der Laufzeitumgebung auf der anvisierten Zielhardware erforderlich. Wie erläutert, lässt sich die Runtime auf Microcontroller-Boards (z. B. Arduino, ESP32, ESP2866, STM), SBCs (z. B. Raspberry Pi), echten SPSen (z. B. UniPi Neuron PLC, Controllino) sowie den Desktop-Betriebssystemen macOS, Linux und Windows installieren. Auch eine Installation als Docker-Container ist möglich. Der Autor verzichtet aus Platzgründen auf die Beschreibung der Installation und verweist auf die Dokumentations-Webseite, die das jeweilige Vorgehen detailliert beschreibt.

Die Laufzeitumgebungen für Windows, macOS und Linux (inkl. Raspberry Pi) stehen als vollwertige Applikationen zur Verfügung, während für eingebettete Geräte, speziell für Mikrocontrollerboards, das Laufzeitsystem als Firmware über den Editor hochgeladen wird. Im Editor existiert zu diesem Zweck ein Arduino-Icon, das aber nicht nur für Arduino-Boards zuständig ist, sondern auch für alle anderen unterstützten Mikrocontrollerboards. Verfügt das Board über TCP/IP-Unterstützung, kann es sich sogar in ein (Modbus-)Netzwerk integrieren. Auf Mikrocontrollern ohne Ethernet-/WiFi-Hardware erlaubt OpenPLC immer auch Kommunikation von lokalem Host und Board über serielle Ports/USB.

Da die Desktop-Varianten als Modbus-Server fungieren – zu Modbus kommt nachfolgend ein eigener Abschnitt – können Nutzerinnen und Nutzer Modbus-Slaves wie etwa ein als Modbus-Client laufendes Arduino-Board an die Desktop-Laufzeitumgebung von OpenPLC anschließen und die I/O-Ports des Boards quasi als verlängerten Arm benutzen. Weder Windows noch macOS oder Linux enthalten schließlich eigene GPIO-Ports (General Purpose IO).

Ist eine Desktop-basierte OpenPLC-Zielhardware über TCP/IP angeschlossen, erreichen Nutzer die OpenPLC-Runtime dort lokal über den Browser (mit der URL http://localhost:8080) oder remote (über die URL http://<IP-Adresse>:8080).

Die OpenPLC-Runtime auf Windows, Linux, Raspberry Pi, macOS lässt sich aus einem Browser aufrufen.

Bevor es jetzt mit der ersten Programmierung der PLC losgeht, braucht es noch paar Grundlagen, konkret zu den Adressierungsschemata und dem Modbus.