Modbus采用主从模式,支持多种传输方式,包括串行(RS-232/485)和以太网版本(TCP/IP)。其主要用于监视和控制自动化设备,例如传感器、电机和PLC等。它可以实现设备间的数据交换和控制命令发送,使得各个设备之间能够互相协调工作。
Modbus协议中定义了四种类型的存储区,分别为线圈(Coils)、离散输入(DiscreteInputs)、输入寄存器(InputRegisters)和保持寄存器(HoldingRegisters)。不同类型的存储区对应着不同的读写操作。
四种存储区都有各自的地址范围和读写操作码,根据应用场景选择合适的存储区进行读写操作。
以ModbusTCP为例,其报文结构为MBAP(报文头)+PDU(帧结构)。
Modbus协议定义多种功能码实现对存储区的读写,下面列举常见功能码。
假设从机地址为01H,读取的保持寄存器起始地址为006BH,读取2个寄存器,指令如下:
每个保持寄存器的长度为2个字节。低地址寄存器先传输,高地址寄存器后传输。每个寄存器数据高字节数据先传输,低字节数据后传输。响应如下:
随着工业4.0的到来,制造业中的智能化、自动化和数据化需求越来越高。在这种背景下,Modbus协议也面临了一些挑战。
首先,Modbus协议在安全性方面存在较大问题。由于其通信方式较为简单,容易受到黑客攻击和数据篡改等安全问题。
其次,在实时性和带宽利用率方面,Modbus协议与现代工业通信标准相比显得不够优秀。特别是在大规模设备联网的情况下,传统的串行通信方式已经不能满足要求。
此外,在多层次架构和云平台应用方面,Modbus协议还存在一定的局限性。它只能进行点对点通信,并没有很好地支持分布式系统和云计算平台。
MQTT主要有以下优势:
因此,在物联网领域,MQTT更适合于分布式系统中的消息传递。可以将Modbus桥接MQTT取长补短,完成升级改造。
EMQX是一款大规模可扩展的云原生分布式物联网MQTT消息服务器。作为全球最具扩展性的MQTT消息服务器,EMQX提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,帮助用户快速构建关键业务的物联网平台与应用。
下面展示了Neuron从边缘端采集数据并转换为MQTT上传到MQTTbroker的架构。
此章节将介绍如何使用Neuron采集Modbus设备的数据,将采集到的数据上传到MQTTBroker(EMQX),并使用MQTTX查看。
运行以下命令获取Docker镜像:
dockerpullemqx/emqx:5.1.0运行以下命令启动Docker容器
初始用户名:admin,初始密码:public
安装后,运行ModbusTCPslaveEX。须保证Neuron与模拟器运行在同一局域网内。
点击Windows->Registerdata查看数据。
选择站点号1。
选择HoldingRegisters。至此,成功启动模拟器,保持模拟器打开,接下来操作Neuron。
获取Docker镜像:
$dockerpullemqx/neuron:latest启动Docker容器:
在配置菜单中选择南向设备,进入到南向设备界面,点击添加设备新增设备。
添加南向设备后自动进入设备配置界面,填写参数并提交。
点击设备节点卡片任意空白处,进入组列表管理界面,点击创建,弹出创建组的对话框。填写参数并提交:
点击组卡片任意空白处,进入点位列表管理界面,点击创建,进入添加点位页面。
填写点位参数并提交:
选择监控→数据监控,进入数据监控界面,查看已创建点位读取到的数值,如下图所示。
注意,请确认Modbus模拟器已启动。
数据监控以组为单位显示数值:
创建北向应用,Neuron与北向应用建立连接并将采集到的设备数据上传到MQTTBroker(EMQX)。
在配置菜单中选择北向应用,点击添加应用,如下图所示。
添加一个MQTT云连接模块:
添加北向应用后自动进入应用配置界面,填写参数并提交。
设置MQTT连接:
点击刚创建的MQTT应用节点卡片任意空白处,进入订阅组界面,点击添加订阅。
订阅南向设备的数据组:
启动MQTTX后在主页面点击+NewConnection,填写配置参数后,点击右上角连接。
订阅成功后可以看到MQTTX持续接收到Neuron采集并上报过来的数据。如下图所示。
随着石油生产数字化建设规模的扩大,自动化设备的数量也在增加,导致了数据采集和管理的复杂性。
设备侧通过边缘工业协议网关软件Neuron对接各类工业设备,可以将石油生产环境中的DTU、RTU以及各类型PLC的数据进行统一采集。同时在设备上报过程中实现对采集点、采集频率、上报频率、上报格式的统一规划,方便上层业务系统存储与数据消费。
统一的一站式工业物联网数据平台在工业4.0的背景下变得至关重要。
通过在云端实现实时数据连接、移动、存储、处理和分析,这为大数据分析和人工智能应用奠定了坚实的数据基础,使企业能够快速开发上层应用。
使用Modbus协议可以实现设备之间的通信和数据交换,而MQTT则提供了一种高效、灵活且安全的消息传输机制。通过将ModbusRTU或TCP转换为MQTT消息,可以轻松地将设备数据发送到云端,并在需要时进行远程控制和监控。这种方式可以帮助工业企业更好地管理其设备和生产过程,并提高生产效率和质量。
Neuron团队致力于通过强大的工业协议网关软件加速工业物联网的互联互通,简化工业物联网平台的管理。
本文将通过物联网边缘工业协议网关软件Neuron与EMQXMQTT服务器构建基于Modbus的简易IIoT应用,并使用MQTTX订阅/展示数据。
OmronFINS(FactoryInterfaceNetworkService)是OMRON为工业自动化控制开发的网络通信协议。它可以通过FINS命令实现以太网、控制网络和RS232C/485串行通信之间的无缝通信。
本文将介绍如何使用Neuron从KNX设备中采集数据,将数据上传到EMQXMQTTBroker,并使用MQTTX客户端进行查看。