Openplc Project
Einführung in die SPS-Programmierung mit dem Open-Source-Projekt sowie Modbus RTU- und Modbus TCP-Beispiele mit dem Arduino Uno und ESP8266.
Die Entwicklungsboards sind auch auf ebay zu finden:
https://www.ebay.de/sch/bernhardtjosef/m.html
Hier der Link zum Buch auf die Elektor Seite und zum Download:
https://www.elektor.de/amfile/file/download/file/2423/product/10241/
Das SPS Open Source Projekt von Thiago Alves in Verbindung mit dem Raspberry Pi eignet sich ideal für Einsteiger und Profis zum SPS Programmieren. Das Projekt unterstützt die Programmiersprachen der Norm IEC 61131-3 wie KOP, FUP, AWL, ST, AS.
Dieses Buch soll dem Leser eine praxisnahe Einführung bieten, um den Raspberry Pi als SPS für eigene Projekte einsetzen zu können.
Enthalten sind auch Schaltungen und Layouts für Modbus RTU und Modbus TCP, sowie für ein Testboards mit Tastern und LEDs.
Beispiele für eine Windows HMI Anwendung runden den Inhalt ab.
Das Buch ist jetzt beim Elektor Verlag als als E-Book verfügbar. Ab 8.5.2021 auch als PaperBack.
Herausgeber : Elektor;
Neuauflage (3. Mai 2021)
Sprache : Deutsch
Broschiert : 190 Seiten
ISBN-10 : 3895764396
ISBN-13 : 978-3895764394
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.
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.
Mit einem Relais Modul wie diesem, lassen sich erste Versuche durchführen. In Arbeit ist ein Testboard mit Tastern und LED für Schulungszwecke.
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.
E/A Pin Belegung am Raspberry PI:
Testplatine für den Raspberry PI mit 8 Tastern und 10 LEDS
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.
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.
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.
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.
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.
Im Versuch mit dem Raspberry PI und Open PLC funktioniert das ganze sehr zuverlässig.
AdvancedHMI
AdvancedHMI Software
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.
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.
ESP8266 E/A Modul mit 24V Ein-Ausgängen
Das Modul ist für Modbus TCP WIFI und auch für HTML Server Anwendungen geeignet. Die Steuerung übernimmt ein ESP8266 Nodemcu Modul. Die Schaltung ist für 24V Versorgungsspannung geeignet und enthält folgende Komponenten:
-vier 24V Eingänge, mit Optokopplern EL816
-vier 24V-Ausgänge mit dem HITFET BSP76 von Infineon
-sowie jeweils ein analoger Ein- / Ausgang mit 0 bis 10V.
-ein Eingang für den Temperatur -und Feuchtesensor DHT11/22 ist ebenfalls vorhanden.
Folgende Anwendungen sind denkbar:
-eigenständige Steuerung mit Arduino Software für ESp8266
-Modbus TCP Modul über WLAN für die meisten gängigen SPS
-als Nodered Modul
-Ansteuerung vom PC aus über AdvancedHMI mit TCP/IP
-eigener HTML Server mit funktionalität für Steuerungen.
Hier finden Sie weitere Infos zu diesem Projekt:
http://www.bernhardt.de/esp8266info/
Bei Fragen zu diesen Projekten können wir Sie gerne per E-Mail unterstützen.