Accès distant gRPC sécurisé avec grpcurl sur appareils PLCnext
AVERTISSEMENT : La procédure décrite dans ce blog utilise des fonctionnalités du PLCnext Runtime qui ne sont actuellement pas supportées. Utilisez ces fonctionnalités à vos propres risques, et définitivement pas dans des applications de production.
Depuis le projet gRPCurl github :
Dans les versions de firmware récentes, il a été possible d'accéder au serveur gRPC sur les appareils PLCnext Control, mais seulement en utilisant des clients gRPC s'exécutant sur l'appareil local. Les précédents articles du Makers Blog ont donné des exemples de clients gRPC écrits en C# et Python.
Dans de futures versions de firmware, il sera aussi possible d'accéder au serveur gRPC sur les appareils PLCnext Control depuis des appareils distants. En fait, cette fonctionnalité est déjà incluse dans la version de firmware 2022.6, mais elle est encore en développement et n'est pas actuellement supportée. Cet article décrit comment activer cette fonctionnalité pour des fins de test et développement, en utilisant un client gRPC open-source appelé gRPCurl.
Veuillez noter que le serveur gRPC ne DOIT PAS être accédé à distance dans des applications de production actuellement.
Procédure
Sur l'appareil PLCnext Control (avec firmware 2022.6)
- Éditez le fichier
/etc/plcnext/Packages.acf.settingset changez la valeur de la variable d'environnementARP_PACKAGE:Arp.Services.GrpcRemoteà"true"
À l'avenir, ce paramètre sera fait via la page « Services Système » de la Gestion Web.
-
Vérifiez le contenu du fichier
/opt/plcnext/config/Services/Grpc/Remote.grpc.config. Vous devriez voir une valeur de"0.0.0.0:50051"pour l'adresse du socket d'écoute. Cela signifie que le serveur gRPC écoutera sur le port 50051 pour les messages des clients gRPC. -
Redémarrez le PLCnext Runtime.
Sur l'appareil distant
-
Installez gRPCurl en utilisant les instructions sur Github.
-
Téléchargez le répertoire
protobuf, contenant les fichiers de définition de service gRPC, depuis le dépôt PLCnext/gRPC sur Github -
Sur la ligne de commande, lancez une commande
grpcurlpour lire la température de la carte dans l'appareil PLCnext Control :
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
... où -import-path est le chemin vers le répertoire protobuf, et l'adresse IP est l'adresse de l'appareil PLCnext Control.
La réponse devrait être un objet JSON contenant la température de la carte en degrés Celsius :
{ "ReturnValue": { "TypeCode": "CT_Int8", "Int8Value": 43 } }
FAQ
Cela pourrait être possible, mais grpcurl devrait être construit depuis la source pour la plateforme cible, et compte tenu du nombre de dépendances, ce ne sera probablement pas simple.
Pour plus d'aide ...
Utilisez grpcurl -help pour obtenir plus d'informations sur les options disponibles.
Pour des questions sur le serveur gRPC dans le PLCnext Runtime, veuillez utiliser le Forum de la Communauté PLCnext.
Technologie industrielle
- Maîtriser les directives using C# : Imports, alias et directives static
- Surveillance météo à distance avec Raspberry Pi 3 et PubNub
- Capturer les commandes de télécommande IR sur Raspberry Pi sans LIRC : Approche Python UART
- 5 avantages clés du contrôle de production à distance pour l'industrie moderne
- Accès distant gRPC sécurisé avec grpcurl sur appareils PLCnext
- Gestion de cluster sur PLCnext : exploiter Kubernetes pour l'automatisation industrielle
- Surveillance temps réel PLCnext avec tableaux de bord Tableau
- Créer des tableaux de bord Power BI à partir des données cloud PLCnext
- Créer des tableaux de bord Grafana temps réel pour PLCnext Control dans Azure IoT Hub