Acesso Remoto Seguro gRPC com grpcurl em Dispositivos PLCnext
AVISO: O procedimento descrito usa recursos do PLCnext Runtime atualmente não suportados. Use por sua conta e risco, e definitivamente não use em aplicações de produção.
Do projeto gRPCurl no GitHub:
Em versões recentes de firmware, tornou-se possível acessar servidor gRPC em dispositivos PLCnext Control, mas apenas usando clientes gRPC rodando no dispositivo local. Posts anteriores do Makers Blog deram exemplos de clientes gRPC em C# e Python.
Em versões futuras, também será possível acessar servidor gRPC em dispositivos PLCnext Control a partir de dispositivos remotos. Na verdade, este recurso já está incluído no firmware 2022.6, mas ainda em desenvolvimento e não suportado. Este artigo descreve como ativar para testes e desenvolvimento, usando cliente gRPC open-source chamado gRPCurl.
Observe que servidor gRPC NÃO DEVE ser acessado remotamente em aplicações de produção atualmente.
Procedimento
No dispositivo PLCnext Control (com firmware 2022.6)
- Edite arquivo
/etc/plcnext/Packages.acf.settingse altere valor da variável de ambienteARP_PACKAGE:Arp.Services.GrpcRemotepara"true"
No futuro, esta configuração será feita pela página "Serviços do Sistema" do Web Based Management.
-
Verifique conteúdo do arquivo
/opt/plcnext/config/Services/Grpc/Remote.grpc.config. Deve ver valor"0.0.0.0:50051"para endereço socket listener. Significa que servidor gRPC escutará na porta 50051 por mensagens de clientes gRPC. -
Reinicie o PLCnext Runtime.
No dispositivo remoto
-
Instale gRPCurl usando instruções no GitHub.
-
Baixe diretório
protobuf, contendo arquivos de definição de serviço gRPC, do repositório PLCnext/gRPC no GitHub -
Na linha de comando, emita comando
grpcurlpara ler temperatura da placa no 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
... onde -import-path é caminho para diretório protobuf, e endereço IP é do dispositivo PLCnext Control.
Resposta deve ser objeto JSON contendo temperatura da placa em Celsius:
{ "ReturnValue": { "TypeCode": "CT_Int8", "Int8Value": 43 } }
FAQ
Isso pode ser possível, mas grpcurl precisaria ser compilado do fonte para plataforma alvo, e dado número de dependências provavelmente não será simples.
Para mais ajuda ...
Use grpcurl -help para mais informações sobre opções disponíveis.
Para perguntas sobre servidor gRPC no PLCnext Runtime, use Fórum da Comunidade PLCnext.
Tecnologia industrial
- Dominando Declarações Using em C#: Imports, Aliases e Diretivas Estáticas
- Monitoramento Remoto do Tempo com Raspberry Pi 3 e PubNub
- Capturar Comandos de Controle Remoto IR no Raspberry Pi sem LIRC: Abordagem Python UART
- 5 Principais Benefícios do Controle Remoto de Produção para a Indústria Moderna
- Acesso Remoto Seguro gRPC com grpcurl em Dispositivos PLCnext
- Gerenciamento de Cluster no PLCnext: Aproveitando Kubernetes para Automação Industrial
- Monitoramento em Tempo Real do PLCnext com Dashboards Tableau
- Crie Dashboards Power BI a partir de Dados PLCnext na Nuvem
- Crie Dashboards Grafana em Tempo Real para PLCnext Control no Azure IoT Hub
- Otimizando Aplicações Java 9 no PLCnext Control com Jlink