当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]本项目所选的 PLC 是来自巴西公司 ProxSys 的 CP-WS11/4DO4DI USB RS485 型号。该设备具有若干逻辑输入和连接至继电器的数字输出。该设备支持 Modbus 协议通信,这是工业界用于设备间通信的标准协议。

本项目的目标是演示如何使用 Microsoft IoT Edge 构建一个真实的工业物联网应用,通过 RS485(Modbus)协议读取可编程逻辑控制器(PLC)的输入输出端口状态。

本项目所选的 PLC 是来自巴西公司 ProxSys 的 CP-WS11/4DO4DI USB RS485 型号。该设备具有若干逻辑输入和连接至继电器的数字输出。该设备支持 Modbus 协议通信,这是工业界用于设备间通信的标准协议。

随后,我们使用运行 Raspbian 操作系统的 Raspberry Pi 2 B+ 板卡与 Azure IoT Edge 集成,并将数据发送至 Azure IoT Hub。

构建步骤

•配置 Azure IoT Edge 设备

要将 Raspberry Pi 配置为 Azure IoT Edge 设备,首先需按照本教程安装最新版本的 Raspbian 操作系统。

然后需要安装 Azure IoT Edge 模块,该模块包含一个 Docker 应用程序,它会运行两个容器:

要安装这些容器,您需要按照微软提供的教程操作,该教程详细说明了如何安装所有软件包。

在本教程过程中,您需要先在 Azure 中创建一个新的 IoT Edge 设备,并获取注册表流程中提供的连接字符串。为此,请登录 Azure,进入您的 IoT Hub,创建一个新 IoT Edge 设备:

然后选择您的 IoT Edge 设备以获取其连接字符串,并将其写入 /etc/iotedge/config.yaml 文件。

完成 IoT Edge 设备的配置后,我们可以进入 IoT Edge Modbus 模块,该模块已发布到此仓库中。

•编译代码、生成容器并推送到 Docker Hub

在克隆仓库之前,建议您已安装 Docker for Windows、Visual Studio Code 以及 Visual Studio Code 的 Azure IoT Edge 扩展插件。

我建议的一个简单修改是:将 Dockerfile.arm32v7 文件第 26 行中的 USER root 改为 moduleuser。这一更改可避免 Linux 系统中因无权限访问串口而出现的错误。

要编译源代码并生成容器,只需按下 F1 键,输入 iot edge,然后选择 Azure IoT Edge:构建 IoT Edge 模块镜像。

选择包含构建流程说明的 module.json 文件,并指定目标平台为 arm32v7。

在编译完成后,如果输入以下命令:arm32v7

你将看到一个新镜像已生成到本地 Docker 机器中。

然后你可以使用以下命令将该容器推送到 Azure 容器注册服务,或者像我一样推送到 Docker Hub:

如果你愿意,也可以使用我在 Docker Hub 中提供的这个 Docker 镜像来运行你的项目。

现在镜像容器已经准备就绪,我们可以从 Azure IoT Edge 运行此 IoT Edge 模块。

•运行 Azure IoT Edge 模块并进行测试

首先,你需要找到 Raspbian 系统中 PLC USB 设备的映射位置。为此,运行以下命令进行搜索:

你会看到 Raspbian 将 USB 设备映射到了 /dev/ttyACM0 端口。

进入 Azure 门户,选择 IoT Hub 服务,然后选择 IoT Edge,最后选择你的 IoT Edge 设备,点击“设置模块”选项。

接着选择“+添加”并添加 IoT Edge 模块。

下一步,将显示此界面,您需要填写模块名称、Docker Hub 或 Azure 容器注册表中的镜像 URI、容器创建选项(即一个 JSON 对象,用于配置 IoT Edge 设备的特定参数),以及模块孪生体期望属性(另一个 JSON 对象,用于配置将运行在设备上的 IoT Edge Modbus 模块)。

以下为这些字段的建议值:

需要注意的是,最后这个 JSON 配置了模块从 PLC 读取的数据。我们配置了两个操作:OP01 和 OP02,它们分别读取 UnitId 1(即设备编号标识)以及 StartAddress 100002 和 100003,表示我们要获取连接到 PLC 输入 IO 1 和 2 的两个开关的状态。这些地址信息可在 PLC 手册中找到。

下一步,您将配置设备消息路由至 IoT Hub 的路径。提交此最后一步后,IoT Edge 将向您的设备发送一条消息,以发布该模块。

如果您再次连接到 Raspberry Pi 并运行命令 `docker ps`,就会看到该模块正在设备上运行。

如果您使用 Visual Studio Code 和 IoT Edge 插件,可以监控设备到云的消息,并查看设备是否正在接收来自 PLC 的状态信息。

结论

这是一个实际应用,它使用 Azure IoT Edge 模块,将数据从不具备内置以太网功能的可编程逻辑控制器(PLC)发送到 Azure IoT Hub。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭