PLCnext REST API optimieren: Reverse Proxy einrichten
Die PLCnext REST-Schnittstelle ist ein fantastisches Werkzeug, um Daten von einem Backend-System zu präsentieren und zu empfangen. REST (REpresentational State Transfer) ist ein Software-Architekturstil, der aus Richtlinien und Best Practices für die Erstellung skalierbarer Webservices besteht. Es gibt bereits viele großartige Informationen auf dem PLCnext Infoportal – schauen Sie unbedingt vorbei! Die URIs, die von der PLCnext-Firmware bereitgestellt werden, sind perfekt, wenn Sie Ihr System von Grund auf neu aufbauen. Sie sind jedoch nicht ideal, wenn Sie eine bestehende REST-Schnittstelle auf dem PLCnext nachrüsten möchten. Dieser Blog zeigt, wie Sie Ihre eigenen URIs einrichten und sie mit Ihren Variablen über einen Reverse Proxy verbinden. Wir beginnen mit einem kleinen Beispiel und arbeiten uns vor!
Voraussetzungen
Ich verwende einen AXC F 2152 Controller mit FW2020.6 und PLCnext Engineer 2020.6. Das Gleiche sollte mit früheren Versionen ab 2020.0 möglich sein. Ich verwende PuTTY für die SSH-Verbindung und Postman für meine HTTP-Requests. Ich habe die Authentifizierung für Entwicklungszwecke deaktiviert – das sollten Sie in der Produktion NICHT tun! Die Anweisungen für PLCnext Engineer werden sehr hochlevel gegeben – wissen Sie nicht, was zu tun ist? Schauen Sie ins PLCnext Infoportal und in die Anleitungsvideos und/oder vergleichen Sie mit dem Beispielprojekt! Der Controller, den ich verwende, hat die IP-Adresse 192.168.10.10 – ändern Sie dies bitte in die IP-Adresse, die Sie verwenden.
Beispiel
In diesem Blog verwende ich ein einfaches Pumpen-UDT als Beispiel. Sie können das Beispielprogramm von dieser GitHub-Seite herunterladen oder natürlich Ihr eigenes erstellen. Deaktivieren Sie die Verwendung von „Benutzerverwaltung“ in den eHMI-Einstellungen und erstellen Sie eine globale Variable. Verwenden Sie diese Variable auf einer eHMI-Seite, damit wir sie in der API nutzen können.
Der erste API-Aufruf
Vielleicht sollten wir zuerst herausfinden, was wir in ein paar Momenten genau ändern!
Lassen Sie uns einen GET-Request senden, um den Wert unserer ersten Pumpe zu erhalten.
Verwenden Sie Postman, um einen GET-Request an die folgende URI zu senden:
GET https://192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1
(Sie können Pump1 durch Ihre eigene Variable ersetzen)
Das Ergebnis ist:
{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"userAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}
Benutzerdefinierten Endpunkt einrichten
Eine Shell-Sitzung öffnen, ein Root-Passwort erstellen und als Root-Benutzer anmelden.
Als Nächstes den folgenden Befehl in Ihrem Terminal eingeben, ans „Ende“ des Terminals gehen und vorsichtig sein, nichts dazwischen einzutippen!
nano /etc/nginx/nginx.conf
Den nächsten Teil kopieren, in das Terminal einfügen und mit Strg+S speichern und mit Strg+X schließen.
location /Pump1 {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}
Anfrage an den neuen Endpunkt senden
Einen neuen GET-Request mit Postman senden, diesmal an die folgende URI:
GET https://192.168.10.10/Pump1
Die gleiche Antwort erhalten? Glückwunsch, Ihr Proxy wurde erfolgreich eingerichtet!
Mehrere Pumpen einrichten
Okay, aber was ist, wenn ich mehrere Pumpen habe? Ein Ansatz könnte sein, ein Array zu erstellen, das unsere Pumpen-UDTs beherbergt. Sie können das gesamte Array abrufen, indem Sie die Variable aufrufen, oder nur das Element, an dem Sie interessiert sind, indem Sie den gewünschten Index in eckigen Klammern angeben, z. B. Pump2[1] gibt Ihnen das Element mit Index 1 im Array Pump2.
Aber das ist nicht das Thema dieses Blogs. Wir können den Proxy auch so einrichten, dass wir auf mehrere Pumpen zugreifen können.
Den Text aus den vorherigen Schritten so anpassen, dass er dem nächsten Schema entspricht:
location /pumps {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}
Einen GET-Request mit Postman an die erste URI senden – gibt das gleiche wie vorher. Einen GET-Request an die zweite URI senden – gibt ein Array desselben Datentyps.
https://192.168.10.10/pumps/Pump1
https://192.168.10.10/pumps/Pump2
Jetzt sollten Sie alles haben, um jedes API-Schema anzupassen und in Ihr PLCnext-Gerät zu integrieren!
Weiterführende Links
Industrietechnik
- Duroplaste vs. Thermoplaste: Wichtige Unterschiede und Anwendungen verstehen
- Smart Home Evolution: Was die Zukunft für vernetztes Wohnen bereithält
- CONNEX™ entdecken: Die führende Supply-Chain-Netzwerkplattform für Hersteller
- Die Top-Wahl sein: 26 unverzichtbare Checklisten-Punkte für B2B-Kauferfolg
- Wert freisetzen: Optimierte Reverse Logistics steigert ROI und Kundenloyalität
- Das Comeback der Reverse Auctions: Supplier in Preis-Kriegen stärken
- Effizienz maximieren: Expertentipps für Ihr Lager-Scansystem
- ROI Ihrer Lead-Generierungsinvestition maximieren
- Industrie 4.0-Einführung: Spanien im globalen Vergleich
- Edge AI Inferencing meistern: Praktischer Leitfaden für verwertbare Erkenntnisse