Azure IoT Edge 和 PLCnext
Azure IoT Edge 可以将云分析和成本逻辑移动到“边缘”,在我们的例子中是我们的 PLCnext 设备。这在减少使用的带宽和延迟方面有一些好处。使用 Azure IoT Edge,您可以从中央云应用程序开发和部署自己的应用程序。在本博客中,您将了解如何设置 Azure IoT Edge 及其一些基本原则。
简介
对于 Makersblog 来说,解释 Azure IoT Edge 解决方案的全部内容可能会走得很远,但在继续此博客之前,请务必先阅读自己的内容。在此门户上,您可以找到了解我们在此博客中所做工作所需的所有信息。我们去安装运行时吧。
安装
创建 Azure IoT 中心并创建设备
在我们开始之前,我们首先需要在 azure 门户中设置一些东西。我假设你已经设置了一个 Azure 帐户。
我们要做的第一件事是创建一个资源组并给它一个描述性的名称。单击创建一个新的资源组。如果未列出,您可以按“+”按钮并搜索新的资源组。
创建新的 IoT 中心服务。您可以拥有 1 个免费的 IoT Hub 服务,您可能希望将类型从标准更改为免费!否则,将所有内容保留为默认设置并继续部署服务。我们的最后一步是创建物联网设备。打开服务并在窗口的左侧面板中搜索 IoT Edge。单击它并创建一个新的 IoT Edge 设备。给设备一个ID,其他所有设置都可以保留默认值。
单击新创建的设备并记下“主连接字符串”,我们将在下一步中使用此字符串来配置我们的设备。
安装 Azure IoT Edge 运行时
依次执行以下命令,总能在这里找到最新版本。
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
下一步是配置我们的设备。可以半自动化甚至全自动进行。您可以在 infoportal 上找到更多相关信息。在你的 shell 中输入下一个命令,然后将你的连接字符串粘贴到 yaml 文件的第 55 行。(用 ctrl +s ctrl +x 关闭)
nano /etc/iotedge/config.yaml
重启控制器以使更改生效。
reboot
验证安装
以 root 身份运行下一个命令:
iotedge check --verbose
如果您没有收到任何错误,我们可以继续!你有错误吗?查看 GitHub 存储库,也许有可用的修复程序。否则可以随意创建问题!
部署模块
只有运行时对我们没有任何好处。让我们开始部署一些模块!单击“设置模块”,然后单击运行时设置。这里我们需要更改“Hostport”以便从运行在 PLCnext 上的 NGINX 服务器中清除。最后添加一个名为“模拟温度传感器”的市场模块。按“review + create”,将模块部署到PLCnext设备。
设置应如下所示:
{
"HostConfig": {
"PortBindings": {
"443/tcp": [
{
"HostPort": "444"
}
],
"5671/tcp": [
{
"HostPort": "5671"
}
],
"8883/tcp": [
{
"HostPort": "8883"
}
]
}
}
}
观看遥测消息
验证消息是否进入。请按照此过程在 Visual Studio Code 中安装 Azure IoT 工具。 (您需要登录 Azure,因此如果您使用证书,请确保它们也在您的开发计算机上)。
将 PLCnext 数据获取到 IoT 中心
下一步是将我们的 PLCnext Engineer 数据带到云端。有几种方法可以做到这一点。您可以使用 Modbus 模块并在您的 PLCnext 项目中创建一个 Modbus 服务器。您可以将 REST 服务和 GET 请求与自定义模块一起使用,我们在 Marketplace 上找到适合您需求的模块。我将解释如何设置 OPC Publisher 让您开始从 PLCnext 的嵌入式 OPC UA 服务器发布数据。
更新:目前看来 OPC Publisher 模块存在错误,请暂时尝试其他方法。
免责声明:对于此博客,我们将禁用 PLCnext 安全功能,请不要在生产中使用它!
在继续之前禁用 PLCnext 设备的 WBM 上的用户身份验证。
以与使用“模拟温度传感器”相同的方式从 Marketplace 添加 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
}
]
}
]
如果一切顺利,您应该会在 Azure IoT Tools for Visual Studio 中看到数据!
仍有问题?
你可以使用下一个命令来看看发生了什么。
iotedge logs -f "namemode"
学分
特别感谢 Oliver Warneke 的工作,我可以在此基础上再接再厉,感谢他花时间让我跟上进度!
联系方式
遇到问题,还是想了解更多?请联系[email protected]。
参考文献
https://docs.microsoft.com/en-us/azure/iot-edge/about-iot-edge?view=iotedge-2018-06工业技术