借助 Azure IoT Edge 优化 PLCnext:边缘分析与云集成实战
Azure IoT Edge 可将云分析与自定义逻辑下沉至“边缘”——即我们的 PLCnext 设备。这能有效降低带宽占用和延迟。通过 Azure IoT Edge,您可从中央云应用开发并部署自有应用。本文将指导您搭建 Azure IoT Edge 并掌握其基本原理。
简介
在 Makers 博客中详述 Azure IoT Edge 所有细节不太现实,建议先阅读官方文档建立整体认知。此门户提供所需所有信息。让我们开始安装运行时。
安装步骤
创建 Azure IoT Hub 与设备
假设您已有 Azure 账号。首先创建资源组并命名。点击“创建资源组”,若未列出可点“+”搜索。
创建 IoT Hub 服务。可享 1 个免费层级,记得将类型从标准改为免费!其余保持默认并部署。最后创建 IoT Edge 设备:打开服务,左侧面板找到“IoT Edge”,点击创建新设备,设定设备 ID,其余默认即可。
点击新建设备,记下“主连接字符串”,下一步配置设备时需要。
安装 Azure IoT Edge 运行时
以 root 身份依次执行以下命令(最新版本请参考此处):
git clone https://github.com/pxcbe/azure-iot-edge.git cd azure-iot-edge/install sudo passwd root su chmod +x SetupEdge.sh ./SetupEdge.sh
下一步配置设备。支持半自动或全自动预配,详见 Info Portal。执行下命令并在 yaml 文件第 55 行粘贴连接字符串(Ctrl+S 保存,Ctrl+X 退出):
nano /etc/iotedge/config.yaml
重启控制器使配置生效:
reboot
验证安装
以 root 运行:
iotedge check --verbose
无报错即可继续!若有错误,查看 GitHub 仓库是否有修复,或提交 Issue。
部署模块
仅有运行时不够,需部署模块。点击“设置模块”→“运行时设置”,修改“Hostport”避免与 PLCnext 上的 NGINX 冲突。添加市场模块“Simulated Temperature Sensor”,点击“审阅+创建”并部署到 PLCnext 设备。
运行时设置应如下:
{
"HostConfig": {
"PortBindings": {
"443/tcp": [{"HostPort": "444"}],
"5671/tcp": [{"HostPort": "5671"}],
"8883/tcp": [{"HostPort": "8883"}]
}
}
}
查看遥测消息
验证消息接收:按此流程在 VS Code 安装 Azure IoT Tools(需登录 Azure,确保证书在开发机上)。
将 PLCnext 数据上传至 IoT Hub
下一步是将 PLCnext Engineer 数据上云。方式多样:可用 Modbus 模块在 PLCnext 项目建立 Modbus 服务器;可用 REST 服务配合自定义模块;或从市场寻找合适模块。本文重点介绍如何配置 OPC Publisher 发布 PLCnext 内嵌 OPC UA 服务器的数据。
更新:OPC Publisher 模块目前有报错,暂请尝试其他方法。
免责声明:本文为演示禁用 PLCnext 安全功能,切勿用于生产环境!
在 PLCnext 设备的 WBM 中禁用用户认证后继续。
像添加“模拟温度传感器”一样从市场添加 OPCPublisher。点击模块进入“容器创建选项”,粘贴以下配置:
{
"Hostname": "publisher",
"Cmd": ["publisher", "--pf=/appdata/publishednodes.json", "--di=60", "--to", "--aa", "--si=10", "--ms=262144"],
"HostConfig": {
"Binds": ["/iiotedge:/appdata"],
"PortBindings": {"62222/tcp": [{"HostPort": "62222"}]},
"ExtraHosts": ["localhost:127.0.0.1"]
}
}
根据您的节点 ID 修改下述配置,创建 /appdata 文件夹及 publishednodes.json 文件:
[
{
"EndpointUrl": "opc.tcp://192.168.10.10:4840",
"UseSecurity": false,
"OpcNodes": [
{"Id": "ns=3;s=Counter", "OpcSamplingInterval": 2000, "OpcPublishingInterval": 5000},
{"Id": "ns=3;s=Sinusoid", "OpcSamplingInterval": 2000, "OpcPublishingInterval": 5000}
]
}
]
一切正常时,您应在 VS Code 的 Azure IoT Tools 中看到数据!
仍有问题?用下命令排查:
iotedge logs -f "namemode"
致谢
特别感谢 Oliver Warneke 的奠基工作及耐心指导!
联系方式
遇到问题或想了解更多?请联系 axsupport@phoenixcontact.be。
参考资料
工业技术