将 Modbus 工业传感器与开源 IIoT 网关连接

时间:2023-03-01
    工业物联网 (IIoT) 技术正在迅速发展。远程监控和分析领域的 IIoT 应用正在彻底改变企业,并为他们提供模范效益。边缘计算通常直接发生在传感器所连接的设备或物理上靠近传感器的网关设备上。
    在工业用例中,许多传感器需要与边缘网关接口,解决方案架构师和开发人员需要决定边缘网关的软件设计和开发,以及如何处理来自各种传感器的数据并在设计和开发期间执行数据分析阶段。在这种情况下,如果没有开源框架,新的软件开发、bug修复可能会耗费大量的精力和成本。

    这个由两部分组成的系列文章的篇文章描述了工业传感器和用例,并提供了边缘网关要求的概述,并讨论了如何使用 EdgeX Foundry 满足边缘网关要求——一个用作边缘的开源边缘计算框架物理传感和驱动“事物”与信息技术 (IT) 系统之间的中间件(图 1)。

    图 1. EdgeX Foundry(.edgexfoundry.org)
    本文提供了一个将工业传感器与 EdgeX 连接以实现边缘计算功能的研究。
    本研究的目的是通过连接工业温度和湿度传感器来评估在 Raspberry Pi 网关上运行的称为 EdgeX Foundry 的边缘计算框架之一。 这是解释研究的块和数据流图:

    

    图 2. 框图(.edgexfoundry.org)
    通讯总线
    Modbus 是一种开放协议,传输是标准的。与许多专有协议不同,它不需要特定的物理层,因此 Modbus 网络建立在廉价且通用的基础设施(例如 RS-485 链路)之上。
    Modbus 实现了一种非常简单且易于理解的数据表示。它的主要目的只是在 Modbus 主设备和从设备之间移动数据。要移动的数据只有两种,寄存器和线圈。寄存器是 16 位无符号整数,用于存储模拟值,例如温度、湿度和压力值。线圈是用于在 Modbus 内存映射中存储数字值的单个位,通常是状态值,例如开关状态(ON 或 OFF)、电机运行状态(UP 或 DOWN)和阀门状态(OPEN 或 CLOSE)。
    它需要很少的代码空间,通常只有 1K。RAM 随数据空间的大小而变化。几乎没有任何 RAM 空间就可以实现具有少量数据的简单自动化设备。
    Modbus 很容易被非程序员理解。制造胶水机、仪表、测量设备等的工程师可以轻松理解线圈/寄存器的概念以及读写它们的简单命令。
    通常多台仪器连接到同一个 Modbus 网络。没有仪器支持所有的仪器网络协议,但几乎都支持Modbus。通过选择 Modbus,您很有可能避免兼容性问题和未来的升级问题。
    体温监测
    物联网温度监测系统允许行业在基于网络/移动的安全平台上跟踪环境参数,并实时提供即时通知。可以从远程端访问这些温度传感器数据。
    从温度传感器收集的数据可用于创建统计见解。这将有助于各行业提高其仓库和冷库的可靠性。
    许多工业用例都使用此应用程序:
    实验室和诊所的数字温度监测,
    食品安全合规,
    仓库和库存管理,
    货物正在运送中,
    设备监控。
    对于这些用例,温度和湿度监控应用程序非常相关。此应用程序需要一个网关来监控温度和湿度。网关需要边缘计算框架。这里使用的Modbus传感器、网关和边缘计算框架分别是SHT20工业温湿度传感器、Raspberry Pi 4和EdgeX Foundry。
    如何使用 Edgex?
    使用 Modbus 从站模拟器 (ModbusPal) 进行 Modbus 设备服务验证
    ModbusPal 是一个 Modbus 从站模拟器,且开源,在 GPL 许可下发布。其目的是提供一个易于使用的界面,具有重现复杂和逼真的 Modbus 环境的能力。它原生支持TCP/IP,如果计算机上安装了RxTx库,则支持串口通信。
    ModbusPal 多可以模拟 247 个 Modbus 从站。每个从站都可以有保持寄存器和线圈。每个寄存器或线圈都可以通过与称为“自动化”的动态值生成器相关联来进行动画处理。
    使用 ModbusPal 模拟器和从属设备作为功率计的 modbus 设备服务的验证是通过以下提到的步骤完成的。同样,我们可以使用温度、湿度和压力传感器等从属设备模拟任何类型的 Modbus 支持环境。
    设置 ModbusPal 环境,
    添加从设备并配置它们的可寻址、值和自动化,
    在 EdgeX 中发布 Modbus 设备配置文件,
    在 EdgeX 中发布一个 Modbus 设备,
    向从设备发送数据或启动从设备 (PUT),
    从从设备接收数据 (GET)。

    安装任何可以安装 docker 和 docker-compose 的操作系统。在这个例子中,我们使用 Ubuntu 20.04.2 LTS 来使用 docker 部署 EdgeX。

    图 3. 为 ModbusPal 模拟器设置环境

    添加从属设备,配置保持寄存器,输入值和名称并将它们绑定到适当的自动化。

    图 4. 在 ModbusPal 模拟器中添加和配置从属设备(.edgexfoundry.org)

    使用 POST 命令发布设备配置文件。

   

    图 5. 在 EdgeX 中发布设备配置文件
    使用 POST 命令发布设备。使用以下命令作为文件上传或使用截图命令作为内容上传。

    curl –X POST https://:48081/api/v1/device/uploadfile -F “文件=@”

    图 6. 在 EdgeX 中发布设备
    执行 PUT 命令发送数据。

    curl –X PUT https://:48082/api/v1/设备//命令/-H “Content-Type:application/json” –d '{“”:“”,“”:“”}'

    图 7. EdgeX 中的 PUT 命令执行
    执行 GET 命令接收数据。
    curl –X 获取 https://:48082/api/v1/设备/名称//命令/配置 | json_pp

    点击查看完整大小的图片

    图 8. EdgeX 中的 GET 命令执行
    设备配置文件
    设备配置文件描述了 EdgeX 系统中的一种设备。设备服务管理的每个设备都与设备配置文件相关联,设备配置文件根据其支持的操作定义该设备类型。设备配置文件定义了设备的值和操作方法,可以是Read 或Write。设备配置文件由以下标签组成:
    标识:配置文件包含各种标识字段。名称字段是必需的,并且在 EdgeX 部署中必须是的。其他字段是可选的——它们不被设备服务使用,但可能出于提供信息的目的而填充,
    DeviceResources: deviceResource 指定设备内的传感器值,可以单独或作为 deviceCommand 的一部分读取或写入。它具有用于识别的名称和用于信息目的的描述,
    DeviceCommands: DeviceCommands 定义对多个同步设备资源的读写访问。每个命名的 deviceCommand 应该包含一些 get 和/或 set resourceOperations,分别描述读取或写入,
    CoreCommands: CoreCommands 指定可通过命令微服务读取和写入设备的命令。deviceResources和deviceCommands都可以用coreCommands来表示(coreCommand的名字是指deviceCommand或者deviceResource的名字)。
上一篇:热电发电机越来越受到研发关注
下一篇:如何通过变异测试提高测试用例质量

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料