gRPC distant à l'aide de grpcurl
AVERTISSEMENT :La procédure décrite dans ce blog utilise des fonctionnalités de PLCnext Runtime qui ne sont actuellement pas prises en charge. Utilisez ces fonctionnalités à vos risques et périls et n'utilisez certainement pas ces fonctionnalités dans des applications de production.
Depuis le projet github gRPCurl :
Dans les versions récentes du firmware, il était possible d'accéder au serveur gRPC sur les équipements PLCnext Control, mais uniquement à l'aide de clients gRPC s'exécutant sur l'équipement local. Les articles précédents du blog Makers ont donné des exemples de clients gRPC écrits en C# et Python.
Dans les futures versions du firmware, il sera également possible d'accéder au serveur gRPC sur les équipements PLCnext Control depuis à distance dispositifs. En fait, cette fonctionnalité est déjà incluse dans la version 2022.6 du firmware, mais elle est encore en cours de développement et n'est pas prise en charge actuellement. Cet article décrit comment activer cette fonctionnalité à des fins de test et de développement, à l'aide d'un client gRPC open source appelé gRPCurl.
Veuillez noter que le serveur gRPC ne doit PAS actuellement accessible à distance dans les applications de production.
Procédure
Sur l'équipement PLCnext Control (avec firmware 2022.6)
- Modifier le fichier
/etc/plcnext/Packages.acf.settings
et changer la valeur de la variable d'environnementARP_PACKAGE:Arp.Services.GrpcRemote
à"true"
À l'avenir, ce paramètre sera défini via la page "Services système" de la gestion à partir du Web.
-
Vérifier 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 les messages des clients gRPC. -
Redémarrez le Runtime PLCnext.
Sur l'appareil distant
-
Installez gRPCurl en suivant les instructions sur Github.
-
Télécharger le
protobuf
répertoire, contenant les fichiers de définition de service gRPC, du référentiel PLCnext/gRPC sur Github -
Sur la ligne de commande, émettez un
grpcurl
commande pour lire la température de la carte dans le dispositif 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 d'accès au répertoire protobuf et l'adresse IP est l'adresse de l'équipement PLCnext Control.
La réponse doit ê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 à partir de la source pour la plate-forme cible, et compte tenu du nombre de dépendances, cela ne sera probablement pas simple.
Pour plus d'aide...
Utilisez grpcurl -help
pour obtenir plus d'informations sur les options disponibles.
Pour toute question concernant le serveur gRPC dans PLCnext Runtime, veuillez utiliser le forum de la communauté PLCnext.
Technologie industrielle
- C# en utilisant
- Surveillance à distance de la météo à l'aide de Raspberry Pi
- Utilisation de la télécommande infrarouge avec Raspberry Pi sans LIRC
- 5 avantages du contrôle de production à distance
- gRPC distant à l'aide de grpcurl
- Gestion de cluster sur PLCnext ?
- Tableau de bord PLCnext
- Rapports PLCnext Power BI
- Tableaux de bord PLCnext Grafana