Kleiststr. 5 93077 Bad Abbach

Openplc Project


Beim Open PLC Projekt von Thiago Rodrigues Alves handelt es sich um ein Open Source Projekt um Mikrocontroller Boards als SPS (PLC) zu verwenden.

Das OpenPLC-Projekt unterstützt die Norm IEC 61131-3 welche die grundlegende Softwarearchitektur und Programmiersprachen für SPS definiert.

OpenPLC wird hauptsächlich in der Industrie- und Hausautomation, und für Ausbildungszwecke eingesetzt.

Das System besteht aus drei Teilen:

Der Runtime, dass ist die Software die auf dem Mikrocontroller Board installiert wird. Diese führt das SPS Programm auf der Hardware aus.

Dem Programm Editor, dieser wird auf dem PC unter Windows oder Linux installiert, um das SPS (PLC) Programm nach IEC 61131-3 Standard zu schreiben.

Folgende SPS Sprachen werden unterstützt:

Kontaktplan KOP engl. Ladder Logic (LD)

Funktionsbausteinsprache FBS engl. Function Block (FBD)

Anweisungsliste AWL engl. Instruction List (IL)

Strukturierter Text ST engl. Structured Text (ST bzw. SCL)

Ablaufsprache AS engl. Sequential Function Chart (SFC)

Eine gute Einführung in die SPS Programmierung gibt es hier oder auch hier.

Den Open PLC Editor können Sie hier herunterladen. Die Projekte werden als XML Datei gespeichert. Beim Übersetzen wird eine .st Datei erzeugt.

Beachtenswert ist, dass auch Feldbusse unterstützt werden. Einstellbar sind der MODBUS TCP, EthernetIP und DNP3

Das erzeugte Programm sieht so aus:

PROGRAM TasterRelais
VAR
T1 AT %IX100.0 : BOOL;
T2 AT %IX100.1 : BOOL;
T3 AT %IX100.2 : BOOL;
Relais1 AT %QX0.0 : BOOL;
AD AT %IW100.0 : INT;
DA AT %QW100.0 : INT;
T4 AT %IX100.3 : BOOL;
T5 AT %IX100.4 : BOOL;
T6 AT %IX100.5 : BOOL;
T7 AT %IX100.6 : BOOL;
T8 AT %IX100.7 : BOOL;
Relais2 AT %QX0.1 : BOOL;
Relais3 AT %QX0.2 : BOOL;
Relais4 AT %QX0.3 : BOOL;
Relais5 AT %QX100.0 : BOOL;
END_VAR
VAR
CTU0 : CTU;
MUL22_OUT : INT;
R_TRIG1 : R_TRIG;
END_VAR

MUL22_OUT := MUL(AD, 10);
DA := MUL22_OUT;
Relais1 := T3 AND T2 AND T1;
Relais2 := NOT(T4);
Relais3 := NOT(T5);
Relais4 := NOT(T6);
R_TRIG1(CLK := NOT(T7));
CTU0(CU := R_TRIG1.Q, R := NOT(T8), PV := 5);
Relais5 := CTU0.Q;
END_PROGRAM

CONFIGURATION Config0

RESOURCE Res0 ON PLC
TASK task0(INTERVAL := T#200ms,PRIORITY := 1);
PROGRAM instance0 WITH task0 : TasterRelais;
END_RESOURCE
END_CONFIGURATION

Die Datei wird dann über die Weboberfläche zum Raspberry PI übertragen.

Die Visualisierungssoftware ScadaBR ist ein Open-Source-SCADA-System (Supervisory Control and Data Acquisition), mit dem Sie interaktive Bildschirme, auch Human Machine Interface (HMI) genannt, für Ihre Automatisierungsprojekte erstellen können. ScadaBR kann mit mehreren verschiedenen SPS´en kommunizieren, einschließlich OpenPLC, was es zu einem perfekten Begleiter für die OpenPLC-Laufzeit und den OpenPLC-Editor macht.

ScadBR

Als Hardware eignet sich ganz hervorragend der Raspberry PI. Die Open PLC Runtime Software lässt sich in kurzer Zeit installieren und verwandelt den Raspi in ein leistungsfähiges SPS System. Wer kein Interesse hat in C, Pyton oder Java zu programmieren, kann jetzt seine Steuerungsprogramme in eine der üblichen SPS Sprachen wie KOP, FUP usw. erstellen.

Phoenix Gehäuse für den Raspberry PI für Hutschienenmontage

https://www.voelkner.de/products/880768/Phoenix-Contact-RPI-BC-107-6-DEV-KIT-KMGY-SBC-Gehaeuse-Passend-fuer-Raspberry-Pi-zur-Hutschienenmontage-Lichtgrau.html

Mit einem Relais Modul wie diesem, lassen sich erste Versuche durchführen. In Arbeit ist ein Testboard mit Tastern und LED für Schulungszwecke.

1-2-4-8-Kanal-Relais-Modul-fuer-Arduino-Raspberry-Pi
Vierfach Relais Modul

Eine Installationsanleitung der Laufzeitumgebung für den Raspberry PI finden Sie hier.

Lizenzkosten wie bei anderen Systemen fallen bei Open PLC nicht an.

Hinweise für Entwickler welche Ihre Hardware anpassen wollen werden hier fündig.

Eine Liste der unterstützten Hardware finden Sie auch auf der Seite von Thiago Rodrigues Alves. Es sind einige fertige SPS auf Basis des Raspberry verfügbar wie z.B. die Pixtend oder auch Fischertechnik.

Pixtend V2S
Konfigurationssoftware des Raspi am PC im Browser unter 192.168.178.76:8080

E/A Pin Belegung am Raspberry PI:

Pinbelegung des Raspberry PI
Raspberry PI GPIO Testboard

Testplatine für den Raspberry PI mit 8 Tastern und 10 LEDS

SPS Testboard für das openplcproject und Codesys
Die Steckerbelegeung des E/A Boards
Hier eine Raspberry PI Zero W SPS mit E/A Board für Lehrzwecke

PROGRAM PWM
VAR
RS0 : RS;
END_VAR
VAR
LED1 AT %QX0.0 : BOOL;
T1 AT %IX0.0 : BOOL;
T2 AT %IX0.1 : BOOL;
T3 AT %IX0.2 : BOOL;
T4 AT %IX0.3 : BOOL;
PWMOUT AT %QW0 : UINT;
END_VAR
VAR
Count : UINT := 0;
END_VAR

RS0(S := T1, R1 := T2);
LED1 := RS0.Q1;
PWMOUT := Count;
Count:=Count+100;

END_PROGRAM

CONFIGURATION Config0

RESOURCE Res0 ON PLC
TASK task0(INTERVAL := T#20ms,PRIORITY := 0);
PROGRAM instance0 WITH task0 : PWM;
END_RESOURCE
END_CONFIGURATION

Für erste Versuche ohne Hardware E/A am Raspberry PI kann auch ein Software Modbus TCP Slave (Server) auf der SPS konfiguriert werden, (unter Slave Devices) um Schalter einzulesen und Relais zu schalten. Der Raspberry PI arbeitet als Master (Client). Recht gut geeignet ist die Software Easy Modbus Server Simulator, die sich wie ein E/A Modul ansprechen lässt.

Der Server Simulator ist in C# programmiert. Das Projekt lässt sich mit der Entwicklungsumgebung Sharp Develop bearbeiten und compilieren.

Modbus TCP Slave (Server)

Hier die wichtigsten Schritte in einer Zusammenfassung:

Raspian installieren.

Die Runtime installieren.

Den Open PLC Editor downloaden und öffnen.

Das Beispielprojekt laden.

Das Projekt im Editor erstellen.

Mit dem Webbrowser die SPS konfigurieren (Hardware, Feldbus)

Das erzeugte Projekt (.st Datei) in der Weboberfläche hochladen.

Die SPS starten. (Auf Running)

HMI Projekt

Interessant wäre es auch ein HMI Display über Modbus TCP (auch WLAN) anzuschließen. Damit ist es möglich über einen Touchscreen der SPS Sollwerte vorzugeben, Messwerte auszulesen oder Verbraucher zu schalten und somit den Prozesse zu überwachen.

Nextion 5″ TFT Display mit Touch Bedienung

Für die Nextion Displays gibt es den freien Nextion Editor um die Benutzeroberfläche zu entwerfen. Enthalten ist auch ein Debugger zum Testen der Oberfläche.

Nextion Editor von Nextion Tech
Beispiel Benutzeroberfläche

Nextion 5″ Display
NEXTION-EDITOR_04.jpg
Quellangabe: https://nextion.tech/nextion-editor/

MODBUS TCP WLAN Modul mit dem PSOC5

Das Modbus Protokoll wurde in seiner ursprünglichen Form 1979 von der Firma Modicon entwickelt. Zuerst als Modbus RTU für die Hardware Schnittstellen RS232, RS422 und RS485. Ab 2007 steht auch Ethernet mit dem TCP/IP Protokoll zur Verfügung. Detallierte Informationen und Protokollbeschreibungen findet man auf der Modbus Webseite.

Modbus E/A Module finden überwiegend Anwendung für Speicherprogrammierbare Steuerungen (SPS PLC) um diese verteilt in Anlagen einzusetzen. Auch das OpenPLC Projekt unterstützt das Modbus TCP/IP Protokoll um Sensoren und Aktoren abzufragen und anzusteuern.

Mit einem Mikrocontroller und einem WIFI (WLAN) Modul kann man sehr schön einen MODBUS Modul mit digitalen I/O und AD/DA Wandlern aufbauen. In diesem Projekt wird ein Cypress PSOC5 mit dem CY8CKIT-059 sowie ein USR-C215 WIFI Modul eingesetzt.

PSOC5 Testboard für den CY8CKIT-059
WIFI (WLAN) Seriell interface

Aktuell werden auf der digitalen Seite sechs Taster und 8 LEDs angesteuert. Analog bietet der PSOC5 vier A/D Wandler mit 12Bit und 4 D/A Wanler mit 8 Bit. Ein 20 Bit Sigma Delta AD Wandler ist ebenfalls enthalten und könnte in die Protokollsoftware mit integriert werden. Das Projekt wurde mit der kostenlosen Software PSOC Creator 4.2 von Cypress erstellt.

Hier das Cypress PSOC 5 Projekt für den Modbus TCP/IP Server

Die Pinbelegung des PSOC5

Im Versuch mit dem Raspberry PI und Open PLC funktioniert das ganze sehr zuverlässig.

Modbus TCP Einstellungen im Open PLC Projekt
Test des A/D Wandlers und der Digitalen Eingänge
Hier die Modbus TCP Protokolldaten

AdvancedHMI

AdvancedHMI Software

AdvancedHMI Beispiel mit ModbusRTU und Arduino


Die AdvancedHMI-Software ist eine offene Software zum Erstellen von HMI-Anwendungen (Human Machine Interface), die mit Ihrer SPS oder Ihrem E/A Gerät kommunizieren. Die Software unterscheidet sich von anderen Standardpaketen, da Sie ausführbare Dateien erstellen und nicht nur Konfigurationen, die von einer Laufzeit-Engine interpretiert werden. Das Ergebnis ist eine extrem schnelle und effiziente Anwendung.

AdvancedHMI basiert auf dem Microsoft .NET Framework. Anwendungen werden mit Microsoft Visual Studio erstellt. Dadurch können Sie per Drag & Drop grundlegende HMIs erstellen, ohne eine einzige Codezeile schreiben zu müssen. Durch die Nutzung des .NET-Frameworks sind Support-Netzwerke und Entwickler reichlich vorhanden. Sie finden Unterstützung an weit mehr Orten als alle anderen Standard-HMI-Pakete zusammen.
Die Software ist seit mehr als 10 Jahren verfügbar und hat weltweit Tausende von Bereitstellungen.

Modbus RTU mit dem Arduino UNO und dem Arduino Mega 2560

Die Software AdvancedHMI unterstützt Modbus Slaves (Server) sowohl über Ethernet TCP/IP als auch über Modbus RTU mit RS485 bzw. auch über die USB Schnittstelle. Praktisch funktioniert das sehr gut mit dem Arduino UNO oder Arduino Mega und der Modbus Software von Thiago Alves und André Sarmento Barbosa aus dem openplcproject. Nach dem Download und der Installation der Software mit der Arduino Entwicklungsumgebung steht ein vollwertiges Modbus RTU Modul zur Verfügung. Damit Ein-und Ausgänge nach dem Industriestandard zur Verfügung stehen kann auch ein SPS Board wie z.B. das CANADUINO PLC MEGA328 Electronics oder der Arduino Mega 2560 und dem Board CANADUINO PLC 300-24 Arduino MEGA2560 verwendet werden.

CANADUINO MEGA2560 300-24 DIY PLC Kit V1.3

Dieses arbeitet dann nicht als eigenständige SPS sondern als Modbus RTU Modul in Verbindung mit einem PC und der AdvancedHMI Software oder in Verbindung mit einem RaspberryPI mit installierter SPS Runtime.

Letzte Änderung 15.6.2020 Josef Bernhardt

Bei Fragen zu diesen Projekten können wir Sie gerne per E-Mail unterstützen.