新闻中心

PRESS CENTER 纵横智控
你的位置: 首页 新闻 技术应用
纵横智控

Modbus 读/写/服务-EG网关历史节点

2025-09-24 11:00:28 阅读: 发布人:纵横智控

概述

Modbus读:用于Modbus RTU/Modbus TCP协议的数据读取。

Modbus写:用于Modbus RTU/Modbus TCP协议的数据写入。

Modbus服务:用于Modbus RTU/Modbus TCP协议的服务端,即从站,寄存器地址可以自定义。

以上3个节点在原Modbus请求Modbus解析节点的基础上增加了多个特色功能:寄存器配置导入导出、动态配置采集参数、结果基本计算、数据汇总输出等等。

Modbus基础概念此处不在介绍,如果不熟悉,请参考以下资料:Modbus协议【完整版】-https://iotrouter.yuque.com/attachments/yuque/0/2025/pdf/38696274/1753768218220-93df9205-5f53-458d-9ad9-38e48c0ed131.pdf


如下源码:https://iotrouter.yuque.com/zn3vdn/eg8000/deauhgopg8ggogap#yXy1k

Modbus 读

支持Modbus RTU/Modbus TCP协议,选择不同的配置项即可,以下介绍不在区分。

输入

msg.payload.uid

#从机地址,1-255

msg.payload.fc

#功能码,十进制表示,取值范围:1/2/3/4

msg.payload.columns

#数据点,多个数据点以数组的形式表示:

{

"Key":"",//数据点名称:字符串格式

"Address":0,//寄存器地址:十进制表示(无需加1),例如:0x0000-->00x0100-->256

"Type":1,//数据类型:1--24,对应关系详见配置页面下拉选型

"Tdata":1//数据处理方式:对于位解析为必填参数,取值1-16表示哪一位;对于其他类型为选填,表示结果乘的系数,10表示放大10倍,0.1表示缩小10倍

}

输出

msg.payload

#正常返回:数据以对象的形式存储在msg.payload中

#异常返回:null

msg.status

#正常返回:OK

#异常返回:ERROR

#超时返回:TIMEOUT

msg.reqpayload

#发送的原始指令

msg.reppayload

#响应的原始指令

示例

1. 寄存器导入导出

在寄存器比较多的时候,手动依次录入是比较麻烦的,Modbus读节点增加了导入导出配置的功能,大大提高了录入效率:

 Modbus 读/写/服务-EG网关历史节点

2. 动态配置/结果计算/汇总输出

新增动态配置功能,允许通过msg携带配置参数修改采集指令,从而根据需求动态采集传感器数据。例如:云端根据业务需求,不同情况下,下发不同的采集命令。

新增字段“Tdata”,支持对寄存器返回的结果进行简单的计算,最终的结果以对象的形式存储在msg.payload中,方便后续统一处理。

Modbus 读/写/服务-EG网关历史节点

Modbus 写

支持Modbus RTU/Modbus TCP协议,选择不同的配置项即可,以下介绍不在区分。

输入

msg.payload.uid

#从机地址,1-255

msg.payload.fc

#功能码,十进制表示,取值范围:5/6/15/16

msg.payload.address

#寄存器起始地址,十进制表示(无需加1),例如:0x0000-->00x0100-->256

msg.payload.quantity

#寄存器写入的数量,写单个可不填,写多个必须填

msg.payload.value

#FC 5:写单个线圈(msg.payload.value:1/0)

#FC 6:写单个保持寄存器(msg.payload.value:0-65535)

#FC15:写多个线圈(msg.payload.value:字节数组,每个字节表示8个线圈)

#FC16:写多个保持寄存器(msg.payload.value::一个寄存器2个字节,要写入的具体字节数组)

输出

msg.payload

#写入成功:true

#写入失败:false

msg.status

#正常返回:OK

#异常返回:ERROR

#超时返回:TIMEOUT

msg.reppayload

#发送的原始指令

msg.reqpayload

#响应的原始指令

示例

1. 写多个保持寄存器

Modbus 读/写/服务-EG网关历史节点

Modbus 服务

Modbus服务作为Modbus从站,支持将不同来源的数据重新映射为新的寄存器地址,统一响应主站的请求,从而提高主站的采集效率。目前仅支持读操作,不支持写操作。

Modbus服务节点实际工作原理是将传入数据重新映射为新的地址存储,当有Modbus请求时,在把存储的数据格式化为合法的Modbus响应输出。

输入

msg.coils

#数组,取值为0/1,索引为寄存器地址,如果只更新某个参数,请将其它索引值置为null或不初始化

msg.discretes

#数组,取值为0/1,索引为寄存器地址,如果只更新某个参数,请将其它索引值置为null或不初始化

msg.holdings

#数组,取值最大32位,索引为寄存器地址,如果某个值超出16位请将下个索引置为null或不初始化

msg.inpus

#数组,取值最大32位,索引为寄存器地址,如果某个值超出16位请将下个索引置为null或不初始化

 

msg.payload

#如果不存在以上属性,则会把msg.payload作为请求指令解析

输出

输出1

msg.payload

#modbus响应报文

 

输出2(只有msg.coils/msg.discretes/msg.holdings/msg.input属性注入时才会输出2)

msg.coils

#显示coils中当前存放的数据

msg.discretes

#显示discretes中当前存放的数据

msg.holdings

#显示holdings中当前存放的数据

msg.inpus

#显示inpus中当前存放的数据

示例

1. 保持寄存器

本示例设置保持寄存器数量为10个,其中:寄存器0x0000-0x0001,0x0002-0x0003,0x0004-0x0005,0x0006-0x0007为32位浮点型数据(ABCD),寄存器0x0008,0x0009为16位整型数据(AB)。

配置界面设置内容如下图所示:

Modbus 读/写/服务-EG网关历史节点

Modbus 读/写/服务-EG网关历史节点

热门产品