邯郸手机网站建设服务,网页登录qq入口,佛山做网站,wordpress微信推送Modbus 介绍
Modbus 是一种串行通信协议#xff0c;用于连接工业自动化设备#xff0c;最初由 Modicon 公司开发#xff0c;诞生于 1979 年#xff0c;现在已成为通用的通讯标准之一#xff0c;广泛用于工业自动化场景。
Modbus 采用主从模式#xff0c;支持多种传输方…Modbus 介绍
Modbus 是一种串行通信协议用于连接工业自动化设备最初由 Modicon 公司开发诞生于 1979 年现在已成为通用的通讯标准之一广泛用于工业自动化场景。
Modbus 采用主从模式支持多种传输方式包括串行RS-232/485和以太网版本TCP/IP。其主要用于监视和控制自动化设备例如传感器、电机和 PLC 等。它可以实现设备间的数据交换和控制命令发送使得各个设备之间能够互相协调工作。
Modbus 协议中定义了四种类型的存储区分别为线圈Coils、离散输入Discrete Inputs、输入寄存器Input Registers和保持寄存器Holding Registers。不同类型的存储区对应着不同的读写操作。
存储区名称数据类型访问类型PLC 地址寄存器地址线圈位读写000001-0655360-65535离散输入位只读100001-1655360-65535输入寄存器字只读300001-3655360-65535保持寄存器字读写400001-4655360-65535
四种存储区都有各自的地址范围和读写操作码根据应用场景选择合适的存储区进行读写操作。
以 Modbus TCP 为例其报文结构为MBAP报文头PDU帧结构。
报文头帧结构事物标识符协议标识符长度单元标识符功能码数据
Modbus 协议定义多种功能码实现对存储区的读写下面列举常见功能码。
功能码功能位/字操作操作数量01读线圈状态位操作单个或多个02读离散输入状态位操作单个或多个03读保持寄存器字操作单个或多个04读输入寄存器字操作单个或多个05写单个线圈位操作单个06写单个保持寄存器字操作单个15写多个线圈位操作多个16写多个保持寄存器字操作多个
假设从机地址为 01H读取的保持寄存器起始地址为 006BH读取 2 个寄存器指令如下
从机地址功能码起始地址高位起始地址低位寄存器数量高位寄存器数量低位0103006B0002
每个保持寄存器的长度为 2 个字节。低地址寄存器先传输高地址寄存器后传输。每个寄存器数据高字节数据先传输低字节数据后传输。响应如下
从机地址功能码字节数006BH高字节006BH低字节006CH高字节006CH低字节01030400000000
为什么将 Modbus 桥接到 MQTT
随着工业 4.0 的到来制造业中的智能化、自动化和数据化需求越来越高。在这种背景下Modbus 协议也面临了一些挑战。
首先Modbus 协议在安全性方面存在较大问题。由于其通信方式较为简单容易受到黑客攻击和数据篡改等安全问题。
其次在实时性和带宽利用率方面Modbus 协议与现代工业通信标准相比显得不够优秀。特别是在大规模设备联网的情况下传统的串行通信方式已经不能满足要求。
此外在多层次架构和云平台应用方面Modbus 协议还存在一定的局限性。它只能进行点对点通信并没有很好地支持分布式系统和云计算平台。
MQTT 相比于 Modbus 优势明显。MQTT 协议是一种基于发布/订阅模式的轻量级消息传输协议其构建于 TCP/IP 协议上由 IBM 在 1999 年发布。2014 年 10 月 29 日MQTT 成为 OASIS 正式批准的通讯标准。目前已经广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、电力、石油与能源等领域。
MQTT 主要有以下优势
轻量级MQTT 非常轻量级可以在带宽有限、网络质量不好的环境下使用。灵活性MQTT 支持多种连接方式通过订阅/发布模式实现灵活的消息传递。可靠性MQTT 可以保证消息的可靠传输即使网络中断也可以重新连接并恢复通信。安全性MQTT 支持 SSL/TLS 加密和认证机制可以保障数据安全性。
因此在物联网领域MQTT 更适合于分布式系统中的消息传递。可以将 Modbus 桥接 MQTT 取长补短完成升级改造。
Modbus 桥接到 MQTT 的架构
Modbus 数据源将数据发送到 MQTT BrokerMQTT Broker 接收并转发。实现此过程需要两个组件一是边缘端将 Modbus 协议转换为 MQTT 并发送到 MQTT Broker二是需要一个处理 MQTT 消息的 MQTT Broker。
EMQ 旗下的 Neuron 可以将 Modbus 协议转换为 MQTTEMQX 则可以作为 MQTT Broker 处理海量连接。
Neuron 是一款现代的工业物联网连接服务器可以连接多种使用标准协议或者设备专有协议的工业设备实现了工业物联网平台与各种设备的互联互通。作为一款轻量级的工业协议网关软件Neuron 可以运行在各种有限资源的物联网边缘硬件设备上旨在解决以数据为中心的自动化设备数据难以统一访问的问题为智能制造提供基础支撑。
EMQX 是一款大规模可扩展的云原生分布式物联网 MQTT 消息服务器。作为全球最具扩展性的 MQTT 消息服务器EMQX 提供了高效可靠海量物联网设备连接能够高性能实时移动与处理消息和事件流数据帮助用户快速构建关键业务的物联网平台与应用。
下面展示了 Neuron 从边缘端采集数据并转换为 MQTT 上传到 MQTT broker 的架构。 通过 Neuron 将 Modbus 桥接到 MQTT
此章节将介绍如何使用 Neuron 采集 Modbus 设备的数据将采集到的数据上传到 MQTT BrokerEMQX并使用 MQTTX 查看。
EMQX 快速使用
EMQX 提供多种安装方式用户可在 安装 中查看详细的安装方式。本实例采用容器化部署的方式以便于最快开始体验 EMQX。
运行以下命令获取 Docker 镜像
docker pull emqx/emqx:5.1.0运行以下命令启动 Docker 容器
docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.1.0通过浏览器访问 http://localhost:18083/ localhost 可替换为您的实际 IP 地址以访问 EMQX Dashboard 管理控制台进行设备连接与相关指标监控管理。本教程保持 docker 启动即可。
初始用户名 admin 初始密码public
安装 Modbus 模拟器
安装 PeakHMI Slave Simulators 软件安装包可在 PeakHMI 官网 中下载。
安装后运行 Modbus TCP slave EX。须保证 Neuron 与模拟器运行在同一局域网内。
点击 Windows-Register data 查看数据。
选择站点号 1。 选择 Holding Registers。至此成功启动模拟器保持模拟器打开接下来操作 Neuron。 Neuron 快速开始
Neuron 提供多种安装方式用户可在 安装 中查看详细的安装方式。本实例采用容器化部署的方式以便于最快开始体验 Neuron。
获取 Docker 镜像
$ docker pull emqx/neuron:latest启动 Docker 容器
$ docker run -d --name neuron -p 7000:7000 --privilegedtrue --restartalways emqx/neuron:latest打开 Web 浏览器输入运行 Neuron 的网关地址和端口号即可进入到管理控制台页面默认端口号为 7000。通过浏览器访问 http://localhost:7000/ localhost 可替换为您的实际 IP 地址
第一步登录
页面打开后进入到登录界面用户可使用初始用户名与密码登录初始用户名admin初始密码0000。
第二步添加南向设备
在 配置 菜单中选择 南向设备进入到南向设备界面点击 添加设备 新增设备。
名称填写设备名称例如 modbus-tcp-1插件下拉框选择 Modbus TCP 插件。
第三步设置南向设备参数
添加南向设备后自动进入设备配置界面填写参数并提交。
传输模式选择 TCP连接模式选择 Client最大重试次数默认 0指令重新发送间隔默认 0指令发送间隔默认 20IP 地址填写安装 PeakHMI Slave Simulators 软件的 PC 端 IP 地址端口号默认 502连接超时时间默认 3000。
第四步在设备卡片中创建组
点击设备节点卡片任意空白处进入组列表管理界面点击 创建 弹出 创建组 的对话框。填写参数并提交
组名称填写组名称例如 group-1间隔默认 1000。
第五步在组中添加数据点位
点击组卡片任意空白处进入点位列表管理界面点击 创建 进入添加点位页面。 填写点位参数并提交
名称填写点位名称例如tag-1属性下拉选择点位属性例如ReadWrite类型下拉选择数据类型例如INT16地址填写驱动地址例如1!40001。1 代表 Modbus 模拟器中设置的点位站点号40001 代表点位寄存器地址描述、乘系数、精度不填。
第六步数据监控中查看采集数据
选择监控→数据监控进入数据监控界面查看已创建点位读取到的数值如下图所示。 注意请确认 Modbus 模拟器已启动。 数据监控以组为单位显示数值
南向设备下拉框选择想要查看的南向设备例如选择已创建的 modbus-tcp-1;组名称下拉框选择想要查看所选南向设备下的组例如选择已创建的 group-1选择完成页面将会展示读取到的组中所有点位的值。
第七步为应用程序添加北向插件模块
创建北向应用 Neuron 与北向应用建立连接并将采集到的设备数据上传到 MQTT BrokerEMQX。
在配置菜单中选择北向应用点击 添加应用 如下图所示。 添加一个 MQTT 云连接模块
名称填写应用名称例如MQTTPlugin下拉框选择 MQTT 插件。
第八步设置北向应用参数
添加北向应用后自动进入应用配置界面填写参数并提交。
设置 MQTT 连接
客户端 ID注意此 ID 要相互独立重复 ID 会导致客户端被踢除。例如设置为MQTT1999QoS 等级默认为 0上报数据格式默认为 Values-format写请求主题默认为 /neuron/MQTT/write/req写响应主题默认为 /neuron/MQTT/write/resp离线缓存默认关闭服务器地址填写创建的 emqx broker 地址地址为部署 emqx 的地址 localhost即您实际的 IP 地址。服务器端口默认 1883用户名、密码不填SSL默认关闭。
第九步订阅南向点位组
点击刚创建的 MQTT 应用节点卡片任意空白处进入订阅组界面点击 添加订阅 。
订阅南向设备的数据组
南向设备下拉框选择已创建的南向设备例如modbus-tcp-1组下拉框选择所要订阅的组例如group-1主题MQTT 主题本例中默认为 /neuron/MQTT/group-1。接下来在 MQTTX 中订阅此主题并接收消息。
第十步在 MQTT 客户端查看数据
订阅完成后除了 neuron 自己的数据监控界面用户可以使用 MQTT 客户端 - MQTTX 连接到 EMQX 来查看上报的数据。
启动 MQTTX 后在主页面点击 New Connection填写配置参数后点击右上角连接。 名称对消息起名便于查看例如起名为 modbus-tcp Client ID使用默认值即可保证 ID 独立 服务器地址下拉框选择 ws:// emqxlocalhostlocalhost 可替换为您的实际 IP 地址 端口8083。 其他参数选填完成后点击右上角连接。成功连接后订阅主题。 点击 添加订阅Topic 与第九步中的主题一致。例如填写 /neuron/MQTT/group-1。
订阅成功后可以看到 MQTTX 持续接收到 Neuron 采集并上报过来的数据。如下图所示。 工业物联网应用场景
石油生产数据采集
随着石油生产数字化建设规模的扩大自动化设备的数量也在增加导致了数据采集和管理的复杂性。
设备侧通过边缘工业协议网关软件 Neuron 对接各类工业设备可以将石油生产环境中的 DTU、RTU 以及各类型 PLC 的数据进行统一采集。同时在设备上报过程中实现对采集点、采集频率、上报频率、上报格式的统一规划方便上层业务系统存储与数据消费。 结合 Neuron 和 EMQX、eKuiper、EMQX-ECP 等其他 EMQ 产品的整体解决方案可以为石油行业带来以下好处
轻前端、重后端的系统架构降低现场设备与系统运维成本。基于物联网协议作为数据采集与传输的主要方式实现了生产数据低时延实时上报提高业务响应能力。解决海量异构设备与系统的实时数据统一汇聚实现了各类型生产与监控设备数据统一汇聚存储使数据资产有效整合。通过统一接入平台以及平台提供的丰富数据接口实现数据采集与数据消费系统的解偶使应用开发更加便捷高效。
赋能工业网络化、数字化和智能化
统一的一站式工业物联网数据平台在工业 4.0 的背景下变得至关重要。
Neuron 可以支持 Modbus、OPC-UA、IEC61850、IEC104 等完整工业协议实现各类异构工业设备数据的高效接入。轻量级边缘流处理引擎 eKuiper 在边缘端进行采集、过滤、补全、时间窗口计算等为边缘 AI 推理服务提供高质量数据源。
通过在云端实现实时数据连接、移动、存储、处理和分析这为大数据分析和人工智能应用奠定了坚实的数据基础使企业能够快速开发上层应用。 结语
使用 Modbus 协议可以实现设备之间的通信和数据交换而 MQTT 则提供了一种高效、灵活且安全的消息传输机制。通过将 Modbus RTU 或 TCP 转换为 MQTT 消息可以轻松地将设备数据发送到云端并在需要时进行远程控制和监控。这种方式可以帮助工业企业更好地管理其设备和生产过程并提高生产效率和质量。 版权声明 本文为 EMQ 原创转载请注明出处。 原文链接https://www.emqx.com/zh/blog/bridging-modbus-data-to-mqtt-for-iiot