Remote-gRPC mit grpcurl
WARNUNG:Das in diesem Blog beschriebene Verfahren verwendet Funktionen der PLCnext Runtime, die derzeit nicht unterstützt werden. Verwenden Sie diese Funktionen auf eigenes Risiko und verwenden Sie diese Funktionen auf keinen Fall in Produktionsanwendungen.
Aus dem gRPCurl-Github-Projekt:
In neueren Firmware-Versionen war es möglich, auf den gRPC-Server auf PLCnext Control-Geräten zuzugreifen, jedoch nur über gRPC-Clients, die auf dem lokalen Gerät ausgeführt werden. Frühere Beiträge im Makers-Blog haben Beispiele für gRPC-Clients gegeben, die in C# und Python geschrieben wurden.
In zukünftigen Firmware-Versionen wird es auch möglich sein, von remote auf den gRPC-Server auf PLCnext Control-Geräten zuzugreifen Geräte. Tatsächlich ist diese Funktion bereits in der Firmware-Version 2022.6 enthalten, diese befindet sich jedoch noch in der Entwicklung und wird derzeit nicht unterstützt. In diesem Artikel wird beschrieben, wie Sie diese Funktion zu Test- und Entwicklungszwecken mit einem Open-Source-gRPC-Client namens gRPCurl aktivieren.
Bitte beachten Sie, dass der gRPC-Server NICHT sollte derzeit in Produktionsanwendungen remote zugegriffen werden.
Verfahren
Auf dem PLCnext Control-Gerät (mit Firmware 2022.6)
- Bearbeiten Sie die Datei
/etc/plcnext/Packages.acf.settings
und ändern Sie den Wert der UmgebungsvariableARP_PACKAGE:Arp.Services.GrpcRemote
bis"true"
Diese Einstellung erfolgt zukünftig über die Seite "Systemdienste" des Web Based Managements.
-
Überprüfen Sie den Inhalt der Datei
/opt/plcnext/config/Services/Grpc/Remote.grpc.config
. Sie sollten einen Wert von"0.0.0.0:50051"
sehen für die Listener-Socket-Adresse. Das bedeutet, dass der gRPC-Server Port 50051 auf Nachrichten von gRPC-Clients überwacht. -
Starten Sie die PLCnext Runtime neu.
Auf dem Remote-Gerät
-
Installieren Sie gRPCurl gemäß den Anweisungen auf Github.
-
Laden Sie den
protobuf
herunter Verzeichnis mit den gRPC-Dienstdefinitionsdateien aus dem PLCnext/gRPC-Repository auf Github -
Geben Sie in der Befehlszeile einen
grpcurl
aus Befehl zum Auslesen der Platinentemperatur im PLCnext Control Device:
grpcurl -insecure -import-path Documents/plcnext-grpc/protobuf -proto Device/Interface/IDeviceStatusService.proto -d '{"identifier":"Status.Board.Temperature.Centigrade"}' 192.168.1.10:50051 Arp.Device.Interface.Services.Grpc.IDeviceStatusService/GetItem
... wobei -import-path
ist der Pfad zum Protobuf-Verzeichnis und die IP-Adresse ist die Adresse des PLCnext Control-Geräts.
Die Antwort sollte ein JSON-Objekt sein, das die Platinentemperatur in Grad Celsius enthält:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
Häufig gestellte Fragen
Dies könnte möglich sein, aber grpcurl
aus dem Quellcode für die Zielplattform erstellt werden müssten, und angesichts der Anzahl von Abhängigkeiten, die wahrscheinlich nicht einfach sein werden.
Weitere Hilfe ...
Verwenden Sie grpcurl -help
um weitere Informationen zu verfügbaren Optionen zu erhalten.
Bei Fragen zum gRPC-Server in der PLCnext Runtime nutzen Sie bitte das PLCnext Community Forum.
Industrietechnik
- C# verwenden
- Wetterfernüberwachung mit Raspberry Pi
- Verwenden der IR-Fernbedienung mit Raspberry Pi ohne LIRC
- 5 Vorteile der Fernsteuerung der Produktion
- Remote-gRPC mit grpcurl
- Clusterverwaltung auf PLCnext?
- PLCnext Tableau-Dashboard
- PLCnext Power BI-Berichte
- PLCnext Grafana-Dashboards
- Java-Anwendung auf PLCnext Control