gRPC remoto usando grpcurl
AVISO:O procedimento descrito neste blog usa recursos do PLCnext Runtime que atualmente não são suportados. Use esses recursos por sua conta e risco e definitivamente não use esses recursos em aplicativos de produção.
Do projeto gRPCurl github:
Nas versões de firmware mais recentes, foi possível acessar o servidor gRPC em dispositivos PLCnext Control, mas apenas usando clientes gRPC executados no dispositivo local. As postagens anteriores do Makers Blog deram exemplos de clientes gRPC escritos em C# e Python.
Em futuras versões de firmware, também será possível acessar o servidor gRPC em dispositivos PLCnext Control a partir de remoto dispositivos. Na verdade, esse recurso já está incluído na versão de firmware 2022.6, mas ainda está em desenvolvimento e não é suportado no momento. Este artigo descreve como ativar esse recurso para fins de teste e desenvolvimento, usando um cliente gRPC de código aberto chamado gRPCurl.
Observe que o servidor gRPC deve NÃO atualmente ser acessado remotamente em aplicativos de produção.
Procedimento
No dispositivo PLCnext Control (com firmware 2022.6)
- Editar o arquivo
/etc/plcnext/Packages.acf.settings
e altere o valor da variável de ambienteARP_PACKAGE:Arp.Services.GrpcRemote
para"true"
No futuro, essa configuração será feita por meio da página "Serviços do sistema" do Gerenciamento via Web.
-
Verifique o conteúdo do arquivo/opt/plcnext/config/Services/Grpc/Remote.grpc.config
. Você deve ver um valor de"0.0.0.0:50051"
para o endereço do soquete do ouvinte. Isso significa que o servidor gRPC escutará na porta 50051 mensagens de clientes gRPC.
-
Reinicie o PLCnext Runtime.
No dispositivo remoto
-
Instale o gRPCurl usando as instruções no Github.
-
Baixe oprotobuf
diretório, contendo os arquivos de definição de serviço gRPC, do repositório PLCnext/gRPC no Github
-
Na linha de comando, emita umgrpcurl
comando para ler a temperatura da placa no dispositivo 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
é o caminho para o diretório protobuf, e o endereço IP é o endereço do dispositivo PLCnext Control. A resposta deve ser um objeto JSON contendo a temperatura da placa em graus Celsius:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
Perguntas frequentes
Isso pode ser possível, mas
grpcurl
precisaria ser compilado a partir da fonte para a plataforma de destino e, devido ao número de dependências, provavelmente não será simples. Para obter mais ajuda...
Usar
grpcurl -help
para obter mais informações sobre as opções disponíveis. Para dúvidas sobre o Servidor gRPC no PLCnext Runtime, por favor, use o Fórum da Comunidade PLCnext.
Tecnologia industrial
- C# usando
- Monitoramento remoto do clima usando Raspberry Pi
- Usando remoto infravermelho com Raspberry Pi sem LIRC
- 5 vantagens do controle remoto de produção
- gRPC remoto usando grpcurl
- Clustermangement no PLCnext?
- Painel PLCnext Tableau
- Relatórios PLCnext Power BI
- PLCnext Grafana Dashboards
- Aplicação Java no PLCnext Control