在PLCnext设备上用grpcurl安全远程访问gRPC
警告:本文描述的程序使用了PLCnext Runtime当前不支持的功能。请自担风险使用这些功能,绝对不要在生产应用中使用。
来自gRPCurl GitHub项目:
近期固件版本已可访问PLCnext Control设备上的gRPC服务器,但仅限于在本地设备运行的gRPC客户端。之前的Makers Blog文章给出了用C#和Python编写gRPC客户端的示例。
未来固件版本将支持从远程设备访问PLCnext Control设备上的gRPC服务器。事实上此功能已包含在固件版本2022.6中,但仍在开发中且目前不受支持。本文描述如何使用开源gRPC客户端grpcurl激活此功能用于测试和开发。
请注意,gRPC服务器目前不应在生产应用中被远程访问。
操作步骤
在PLCnext Control设备上(固件2022.6)
- 编辑文件
/etc/plcnext/Packages.acf.settings,将环境变量ARP_PACKAGE:Arp.Services.GrpcRemote的值改为"true"
未来,此设置将通过基于Web的管理“系统服务”页面完成。
检查文件
/opt/plcnext/config/Services/Grpc/Remote.grpc.config内容。您应看到监听器套接字地址值为"0.0.0.0:50051"。这意味着gRPC服务器将在端口50051监听来自gRPC客户端的消息。重启PLCnext Runtime。
在远程设备上
按GitHub说明安装grpcurl。
从GitHub的PLCnext/gRPC仓库下载包含gRPC服务定义文件的
protobuf目录。命令行执行
grpcurl命令读取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
其中-import-path为protobuf目录路径,IP地址为PLCnext Control设备地址。
回复应为包含摄氏度板载温度的JSON对象:
{ "ReturnValue": { "TypeCode": "CT_Int8", "Int8Value": 43 } }
常见问题
这或许可行,但grpcurl需为目标平台从源码构建,考虑到依赖数量可能不简单。
更多帮助…
用grpcurl -help获取可用选项详情。
关于PLCnext Runtime中gRPC服务器的问题,请使用PLCnext社区论坛。
工业技术
- 树莓派 3 配合 PubNub 实现远程气象监测
- 树莓派无需 LIRC 捕获红外遥控指令:Python UART 方案
- 现代工业远程生产控制的5大核心优势
- 在PLCnext设备上用grpcurl安全远程访问gRPC
- PLCnext 集群管理:利用 Kubernetes 赋能工业自动化
- 基于 Tableau 打造 PLCnext 实时监控仪表板
- 从 PLCnext 云数据创建 Power BI 仪表板
- 在 Azure IoT Hub 中为 PLCnext Control 构建实时 Grafana 仪表板
- 利用 Jlink 优化 PLCnext Control 上的 Java 9+ 应用
- 在 PLCnext Linux 上安装 APT 包管理器:分步指南
- 远程输送机监测方案:预防非计划停机、守住生产效益
- 掌握 C# using 指令:命名空间导入、别名与静态导入全解析