Intégration gRPC transparente :connectez les scripts Python aux projets PLCnext Engineer
Les informations suivantes servent à la fois de mise à jour et d'extension de cet article de 2022.
L'approche fonctionne de la même manière pour l'AXC F 2152 et l'AXC F 3152, la différence réside sur la façon d'installer les bibliothèques requises.
IMPORTANT : L'approche a été testée et fonctionne pour FW 2024.x et 2025.0
Pour l'AXC F 2152 :
Les bibliothèques grpcio et grpcio-tools doivent être compilées de manière croisée hors périphérique et installées manuellement. Un aperçu de l'approche que j'adopte pour effectuer la compilation croisée à l'aide de QEMU peut être trouvé sur cette entrée du forum
Les bibliothèques compilées de manière croisée pour Python 3.11, ainsi que le reste des fichiers qui suivront cet article, ont été mis à disposition via ce lien
Les instructions suivantes vous permettent de créer un conteneur avec Python 3.11 dans lequel vous pouvez exécuter les scripts qui utilisent gRPC.
- À l'aide de WinSCP (ou d'un autre logiciel permettant d'accéder au système de fichiers de votre contrôleur), créez un dossier dans /opt/plcnext à utiliser pour la communication gRPC. Cet exemple attribuera le nom "grpc2152" à ce dossier. Dans grpc2152, créez la structure de dossiers suivante.
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
- Téléchargez le dépôt "https://github.com/PLCnext/gRPC" et à partir de là, prenez le dossier "protobuf" et placez-le dans le dossier Google précédemment créé. La structure de dossiers résultante ressemble alors à ceci :
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
- Créez une session SSH sur votre automate, connectez-vous en tant qu'utilisateur root (su) et obtenez la version allégée de python 3.11. (à ce stade, une connexion Internet est nécessaire pour obtenir l'image python)
$ podman pull docker.io/library/python:3.11.10-slim-bookworm
- Exécuter et attacher au conteneur (liant le dossier grpc2152 en tant que volume et un deuxième volume (run) nécessaire à la connexion au socket grpc) :
$ podman run -it -v /opt/plcnext/grpc2152:/grpc2152 -v /run:/run --restart=always --name grpctester python:3.11.10-slim-bookworm /bin/bash
- Une fois connecté à la console du conteneur, accédez au dossier whl_files311 et installez les bibliothèques grpcio. (une connexion internet est nécessaire pour les dépendances)
$ cd /grpc2152/whl_files311/
$ pip install *.whl
- Retournez dans le dossier parent grpc2152 dans le conteneur et exécutez le script python "generate_googlegrpc.py" (certains messages devraient apparaître -fonctionnant !-)
$ cd /grpc2152
$ python3 generate_googlegrpc.py
-
Une fois l'exécution du script terminée avec succès, un nouveau dossier devrait être présent (pxc_grpc). Dans grpc2152, les extraits de python pour grpc s'y trouvent désormais. Vous pouvez désormais tester la fonctionnalité gRPC avec l'exemple de projet et de script.
-
Téléchargez et démarrez le projet PLCnext Engineer "TestingGRPC.pcwex" sur le contrôleur.
-
Testez la fonctionnalité gRPC depuis la console du conteneur en exécutant le script "grpc_test.py". Dans le projet PLCnext Engineer, en accédant aux variables en mode débogage, le contenu des variables doit être renseigné avec les valeurs du script.
Pour l'AXC F 3152.
Suivez la même procédure donnée ci-dessus pour le 2152 mais à l'étape 5, installez les bibliothèques directement depuis pypi.org
$ pip install grpcio==1.71.0
$ pip install grpcio-tools==1.71.0
Types de données et utilisation des extraits de code.
Désormais, chaque fois que vous souhaitez utiliser gRPC pour accéder aux variables, incluez le dossier dans lequel les extraits de code ont été générés dans le chemin Python utilisé par vos scripts et importez les classes nécessaires (lignes 6 à 14 du fichier grpc_test.py donné).
N'oubliez pas de prendre en compte les types de données décrits dans l'ancien article que j'ai mentionné au début de cet article.
Remarque :
Le Makers Blog présente des applications et des témoignages d'utilisateurs de membres de la communauté qui ne sont ni testés ni examinés par Phoenix Contact. Utilisez-les à vos propres risques.
Technologie industrielle
- Remplacement de la fabrication EDM par le fraisage CNC pour plus d'efficacité
- Comment déterminer la taille appropriée de l'onduleur pour les appareils ménagers ?
- Cinq bonnes pratiques en matière de télématique des transports
- L'IA génère des images d'un repas fini à partir d'une recette textuelle simple
- Plate-forme MES ou IIoT :pourquoi pas les deux ?
- Différence entre la vanne pv et le disjoncteur pv dans le camion-citerne
- L'impression 3D remplacera-t-elle l'industrie de l'outillage ?
- Comment optimiser la gestion thermique des appareils électroniques
- La NASA déploie un réseau tolérant aux délais pour améliorer les communications spatiales