Nach langer Zeit gibt es mal wieder einen Blogeintrag, diesmal zu einem Thema aus einer ganz anderen Ecke. Meine Haupttätigkeit liegt eigentlich in der Automatisierungstechnik/SPS-Programmierung/Motion Control und genau diesem Thema widme ich diesen Eintrag.
In den letzten Jahren sind Web-Applikationen so ein bischen der Inbegriff für moderne, Industrie-4.0-fähige Steuerungen geworden. Diesen Trend haben auch die Hersteller wie Beckhoff usw. für sich entdeckt und arbeiten mit Hochdruck an HMI Lösungen basierend auf Web-Technologie (JavaScript, HTML5 uvm).
Gerade für Beckhoff gibt es allerdings eine einfache Möglichkeit solch eine Web-HMI selbst zu erstellen und das möchte ich hier in einem kurzen Tutorial zeigen.
Um auf Variablen in einer Twincat-SPS zugreifen zu können kommt man am ADS Protokoll nicht vorbei. Hierbei handelt es sich um eine Art Verbindung zwischen der in einer Echtzeit Umgebung laufenden Steuerung und der Außenwelt. Im Grunde läuft es so: Man verbindet sich auf eine Variable und bekommt deren Wert per Event oder man liest diese einmalig aus. Als HMI Backend dient in diesem Beispiel ein Python Webserver und das Frontend kann mit jedem beliebigen Framework (Bootstrap, JQueryUI) geschrieben werden.
- Zuerst muss Python mit Version 3.x installiert werden.
- Anschließend muss über den Python-internen Paketverwalter PIP das PyADS Paket nachinstalliert werden
- Öffnet hierzu die Command Shell (Windows + R) und dann einfach cmd (ACHTUNG: Falls der normale User keine Adminrechte hat, dann muss die Command Shell als Admin ausgeführt werden)
- Mit folgendem Befehl “python -m pip install pyads” installiert ihr das Paket
- Python lädt dieses Paket automatisch runter und gleichzeitig wird auch sichergestellt ob die Pfad Variable zum Python Paket richtig geladen wurde, andernfalls würde der Befehl python nicht zur Verfügung stehen
- Nun muss ein Webserver Verzeichnis eingerichtet werden
- Ich hab hier einfach C:\www gewählt
- Dort muss auch noch das Unterverzeichnis C:\www\cgi-bin angelegt werden, in welchem später die Python Skripts für alle Ajax Calls ausgeführt werden
- Für den ersten Test erstelle ich ein einfaches SPS-Programm mit einer Zählervariable um in der Web-Visu was anzeigen zu können
- Dieses Projekt am besten für den ersten Test lokal laufen lassen
- Um den Python Webserver zu starten, öffnet ihr am besten erneut eine Command Shell und wechselt mit dieser in das www Verzeichnis (cd C:\www)
- Dort angekommen startet ihr mit dem Befehl “python -m http.server –bind localhost –cgi 8000” den Python-Webserver
- Wenn ihr nun in den cgi-bin Pfad das Script aus dem Bild kopiert und dieses vom Browser aus aufruft (https://localhost:8000/cgi-bin/test.py) dann sollte das Python Script eine Variable aus der SPS auslesen und als Textfile ausgeben => der Browser zeigt dieses File nun an
Hiermit könnt ihr nun jegliche Visualisierung erstellen und natürlich auch falls gewünscht Charts (mit Chart.js) anzeigen. Zudem ist diese Art sich auf SPS-Variablen einer Twincat Runtime zu verbinden gratis.