Veilige Remote gRPC Toegang Met grpcurl Op PLCnext Apparaten
WAARSCHUWING: De procedure die in deze blog beschreven wordt, gebruikt functies van de PLCnext Runtime die momenteel niet ondersteund worden. Gebruik deze functies op eigen risico, en absoluut niet in productie-applicaties.
Vanuit het gRPCurl GitHub-project:
In recente firmware-versies is het mogelijk geweest om toegang te krijgen tot de gRPC-server op PLCnext Control-apparaten, maar alleen met gRPC-clients die op het lokale apparaat draaien. Eerdere Makers Blog-posts hebben voorbeelden gegeven van gRPC-clients geschreven in C# en Python.
In toekomstige firmware-versies zal het ook mogelijk zijn om toegang te krijgen tot de gRPC-server op PLCnext Control-apparaten vanaf externe apparaten. In feite is deze functie al opgenomen in firmwareversie 2022.6, maar dit is nog steeds in ontwikkeling en wordt momenteel niet ondersteund. Dit artikel beschrijft hoe je deze functie activeert voor test- en ontwikkelingsdoeleinden, met behulp van een open-source gRPC-client genaamd gRPCurl.
Let op dat de gRPC-server NIET momenteel op afstand toegankelijk moet zijn in productie-applicaties.
Procedure
Op het PLCnext Control-apparaat (met firmware 2022.6)
- Bewerk het bestand
/etc/plcnext/Packages.acf.settingsen wijzig de waarde van de omgevingsvariabeleARP_PACKAGE:Arp.Services.GrpcRemotein"true"
In de toekomst zal deze instelling via de Web Based Management "System Services" pagina worden gemaakt.
Controleer de inhoud van het bestand
/opt/plcnext/config/Services/Grpc/Remote.grpc.config. Je zou een waarde van"0.0.0.0:50051"moeten zien voor het listener-socketadres. Dit betekent dat de gRPC-server op poort 50051 zal luisteren naar berichten van gRPC-clients.Herstart de PLCnext Runtime.
Op het externe apparaat
Installeer gRPCurl met de instructies op GitHub.
Download de
protobuf-map, met de gRPC-servicedefinitiebestanden, van de PLCnext/gRPC-repository op GitHubOp de commandoregel, geef een
grpcurl-opdracht om de bordtemperatuur in het PLCnext Control-apparaat te lezen:
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
... waar -import-path het pad is naar de protobuf-map, en het IP-adres het adres is van het PLCnext Control-apparaat.
Het antwoord zou een JSON-object moeten zijn met de bordtemperatuur in graden Celsius:
{ "ReturnValue": { "TypeCode": "CT_Int8", "Int8Value": 43 } }
FAQ
Dit zou mogelijk kunnen zijn, maar grpcurl zou vanaf de bron moeten worden gebouwd voor het doelplatform, en gegeven het aantal afhankelijkheden zal dat waarschijnlijk niet simpel zijn.
Voor meer hulp ...
Gebruik grpcurl -help om meer informatie te krijgen over beschikbare opties.
Voor vragen over de gRPC-server in de PLCnext Runtime, gebruik het PLCnext Community Forum.
Industriële technologie
- Externe weerbewaking met Raspberry Pi 3 en PubNub
- IR-afstandsbediening-commando's vastleggen op Raspberry Pi zonder LIRC: Een Python UART-benadering
- 5 Belangrijkste voordelen van externe productiecontrole voor de moderne industrie
- Veilige Remote gRPC Toegang Met grpcurl Op PLCnext Apparaten
- Clusterbeheer op PLCnext: Kubernetes Benutten voor Industriële Automatisering
- Real-time PLCnext-monitoring met Tableau-dashboards
- Power BI-dashboards maken vanuit PLCnext-clouddata
- Real-time Grafana-dashboards maken voor PLCnext Control in Azure IoT Hub
- Java 9-apps optimaliseren op PLCnext Control met Jlink
- APT-pakketbeheer installeren op PLCnext Linux: Stap-voor-stap handleiding
- C# using-statements: imports, aliasen en static directives