Nahtlose gRPC-Integration:Verbinden Sie Python-Skripte mit PLCnext Engineer-Projekten
Die folgenden Informationen dienen sowohl als Aktualisierung als auch als Erweiterung dieses Beitrags aus dem Jahr 2022.
Der Ansatz funktioniert für den AXC F 2152 und den AXC F 3152 gleich, der Unterschied liegt darin, wie die erforderlichen Bibliotheken installiert werden.
WICHTIG: Der Ansatz wurde getestet und funktioniert für FW 2024.x und 2025.0
Für den AXC F 2152:
Die Bibliotheken grpcio und grpcio-tools müssen geräteübergreifend kompiliert und manuell installiert werden. Eine Übersicht über den Ansatz, den ich zur Durchführung der Cross-Kompilierung mit QEMU verfolge, finden Sie in diesem Forumseintrag
Die kreuzkompilierten Bibliotheken für Python 3.11 sowie die übrigen Dateien, die diesem Beitrag folgen, wurden über diesen Link zur Verfügung gestellt
Mit den folgenden Anweisungen können Sie einen Container mit Python 3.11 erstellen, in dem Sie die Skripts ausführen können, die gRPC nutzen.
- Erstellen Sie mit WinSCP (oder einer anderen Software, die den Zugriff auf das Dateisystem Ihres Controllers ermöglicht) einen Ordner in /opt/plcnext, der für die gRPC-Kommunikation verwendet werden soll. In diesem Beispiel wird diesem Ordner der Name „grpc2152“ zugewiesen. Erstellen Sie in grpc2152 die folgende Ordnerstruktur.
grpc2152/
├── include/
│ └── google/
│ └── (empty folder for now)
│
├── whl_files311/
│ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl
│ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl
│
├── generate_googlegrpc.py
├── grpc_test.py
└── Readme.txt
- Laden Sie das Repository „https://github.com/PLCnext/gRPC“ herunter und nehmen Sie von dort den Ordner „protobuf“ und platzieren Sie ihn im zuvor erstellten Google-Ordner. Die resultierende Ordnerstruktur sieht dann so aus:
grpc2152/
├── include/
│ └── google/
│ └── protobuf/
│ └── (content of the protobuf folder from the PLCnext github repo)
│
├── whl_files311/
│ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl
│ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl
│
├── generate_googlegrpc.py
├── grpc_test.py
└── Readme.txt
- Erstellen Sie eine SSH-Sitzung zu Ihrer SPS, melden Sie sich als Root-Benutzer (su) an und erhalten Sie die schlanke Version von Python 3.11. (Zu diesem Zeitpunkt ist eine Internetverbindung erforderlich, um das Python-Image zu erhalten)
$ podman pull docker.io/library/python:3.11.10-slim-bookworm
- Ausführen und an den Container anhängen (Verknüpfung des Ordners grpc2152 als Volume und eines zweiten Volumes (Ausführen), das für die Verbindung zum grpc-Socket erforderlich ist):
$ podman run -it -v /opt/plcnext/grpc2152:/grpc2152 -v /run:/run --restart=always --name grpctester python:3.11.10-slim-bookworm /bin/bash
- Navigieren Sie nach dem Anschließen an die Containerkonsole zum Ordner whl_files311 und installieren Sie die grpcio-Bibliotheken. (Für die Abhängigkeiten ist eine Internetverbindung erforderlich)
$ cd /grpc2152/whl_files311/
$ pip install *.whl
- Gehen Sie zurück zum übergeordneten Ordner grpc2152 im Container und führen Sie das Python-Skript „generate_googlegrpc.py“ aus (einige Meldungen sollten angezeigt werden -working!-)
$ cd /grpc2152
$ python3 generate_googlegrpc.py
-
Sobald die Ausführung des Skripts erfolgreich abgeschlossen wurde, sollte ein neuer Ordner vorhanden sein (pxc_grpc). In grpc2152 befinden sich jetzt die Python-Snippets für grpc. Jetzt können Sie die gRPC-Funktionalität mit dem Beispielprojekt und -skript testen.
-
Laden Sie das PLCnext Engineer-Projekt „TestingGRPC.pcwex“ herunter und starten Sie es auf der Steuerung.
-
Testen Sie die gRPC-Funktionalität über die Konsole des Containers, indem Sie das Skript „grpc_test.py“ ausführen. Beim Zugriff auf die Variablen im PLCnext Engineer-Projekt im Debug-Modus sollte der Inhalt der Variablen mit den Werten aus dem Skript gefüllt werden.
Für den AXC F 3152.
Befolgen Sie das gleiche Verfahren wie oben für 2152, installieren Sie jedoch in Schritt 5 die Bibliotheken direkt von pypi.org
$ pip install grpcio==1.71.0
$ pip install grpcio-tools==1.71.0
Datentypen und Verwendung der Codefragmente.
Wenn Sie nun gRPC für den Zugriff auf Variablen verwenden möchten, fügen Sie den Ordner, in dem die Codeschnipsel generiert wurden, in den von Ihren Skripten verwendeten Python-Pfad ein und importieren Sie die erforderlichen Klassen (Zeile 6 bis 14 der angegebenen Datei grpc_test.py).
Denken Sie daran, die Datentypen zu berücksichtigen, die in dem alten Beitrag beschrieben sind, den ich am Anfang dieses Artikels erwähnt habe.
Hinweis:
Der Makers Blog zeigt Anwendungen und User Stories von Community-Mitgliedern, die nicht von Phoenix Contact getestet oder überprüft wurden. Die Nutzung erfolgt auf eigene Gefahr.
Industrietechnik
- 5 wichtige Problembereiche in der Metallbearbeitung
- Was ist Vorfertigung? Holen Sie sich die Fakten
- IGBTs
- So verfolgen Sie Ihre Frachtsendungen besser
- Schaltplan für manuelle und automatische USV/Wechselrichter mit Umschalter
- Eine kurze Geschichte der Stereolithographie
- Drei Vorteile von Mobile Workforce Management Software
- Fälschungsschutzmaßnahmen unterstützen die Lieferkette der Verteidigungsindustrie
- 3 wesentliche Fertigungsressourcen, die Sie verfolgen müssen
- Umfassender Leitfaden zu Stirnrädern:Definitionen, Typen, Profile, Berechnungen und Anwendungen