Skip to content

Modbus TCP

Modbus TCP 是一种基于以太网的 Modbus 协议版本,它使用 TCP/IP 协议进行通信。与传统的 Modbus RTU 协议不同,Modbus TCP 允许设备直接通过以太网互联,不需要任何专用的硬件或通信接口。因此,Modbus TCP 具有更高的通信速率和更广泛的应用范围。

Neuron 的 Modbus TCP 插件除了支持以 TCP 客户端的模式主动接入设备进行数据采集;还增加支持了 TCP 服务端模式,允许设备主动接入到 Neuron,主要用于如 4G DTU,因 4G 网络的 IP 是属于私网 IP,此时只能由 DTU 设备主动连接到 Neuron。

添加插件

配置 -> 南向设备,点击添加设备来创建设备节点,输入插件名称,插件类型选择 Modbus TCPModbus TCP QH 启用插件。

插件
说明
Modbus TCP标准 Modbus TCP 协议实现,支持 TCP 客户端与服务端模式,对设备有更好的兼容性。
Modbus TCP QH定制化 Modbus TCP 协议实现,支持一次最大读取 65530 字节,标准的协议最大一次读取 250 字节。

设备配置

点击插件卡片或插件列,进入设备配置页。配置 Neuron 与设备建立连接所需的参数,下表为插件相关的配置项。

字段
说明
传输模式TCP 传输或 UDP 传输。
连接模式选择以太网 TCP 连接时,可以选择 Neuron 作为 TCP 的客户端或是服务端。
最大重试次数发送读取指令失败后最大重试次数。
指令发送间隔发送每条读写指令之间的等待时间。某些串口设备在较短时间内接收到连续指令时,可能会丢弃某些指令。
指令重新发送间隔发送读取指令失败后重新发送读指令时间间隔,单位为毫秒。
IP 地址TCP 连接时,设备的 IP 地址(Neuron 作为客户端);或是 Neuron 本机的 IP 地址(Neuron 作为服务端),默认可填 0.0.0.0。
端口号TCP 连接时,设备的端口号(Neuron 作为客户端);或是 Neuron 本机的端口(Neuron 作为服务端)。
连接超时时间等待设备返回指令响应的时间。

TIP

安装 Modbus TCP QH 插件时,仅需配置上表中提到的部分项目:

  • IP 地址
  • 端口号
  • 连接超时时间
  • 连接模式

设置组和点位

完成插件的添加和配置后,要建立设备与 Neuron 之间的通信,首先为南向驱动程序添加组和点位。

完成设备配置后,在南向设备页,点击设备卡片/设备列进入组列表页。点击创建来创建组,设定组名称以及采集间隔。完成组的创建后,点击组名称进入点位列表页,添加需要采集的设备点位,包括点位地址,点位属性,数据类型等。

公共配置项部分可参考连接南向设备,本页将介绍支持的数据类型和地址格式部分。

数据类型

  • INT16
  • UINT16
  • INT32
  • UINT32
  • INT64
  • UINT64
  • FLOAT
  • DOUBLE
  • BIT
  • STRING

地址格式

SLAVE!ADDRESS[.BIT][#ENDIAN][.LEN[H][L][D][E]][.BYTES]

SLAVE

必填,指从机地址或者是站点号。

ADDRESS

必填,指寄存器地址。Modbus 协议有四个区域,每个区域最大有 65536 个寄存器,每个区域的地址范围如下表所示。注意:实际应用中,一般 PLC 厂家普遍采用 10000 以内的地址范围,请注意根据设备的区域及功能码,正确填写点位地址。

区域地址范围属性寄存器大小功能码数据类型
Coil(线圈)000001 ~ 065536读/写1Bit0x01,0x05,0x0fBIT
Input(离散量输入)100001 ~ 1655361Bit0x02BIT
Input Register(输入寄存器)300001 ~ 36553616Bit,2Byte0x04BIT,INT16,UINT16,INT32,UINT32,INT64,UINT64,FLOAT,DOUBLE,STRING
Hold Register(保持寄存器)400001 ~ 465536读/写16Bit,2Byte0x03,0x06,0x10BIT,INT16,UINT16,INT32,UINT32,INT64,UINT64,FLOAT,DOUBLE,STRING

TIP

一些设备文件会使用功能码和寄存器地址来描述指令,因为寄存器地址编号是从 0 开始的,所以每个区域的寄存器地址范围为 0 ~ 65535。Neuron 采用 PLC 组态地址规范,因此 Neuron 配置的地址从 1 开始。 组态地址规范转换规则:根据功能码确定地址的最高位数,并在寄存器地址上加 1,作为 Neuron 的使用地址。

例如,功能码是 0x03,寄存器地址是 0,Neuron 使用的地址是 400001。功能码是 0x02,寄存器地址是 5,Neuron 使用的地址是 100006。

.BIT

选填,寄存器中的特定 bit,例如:

地址数据类型说明
1!300004.0bit指站号为1,输入寄存器区域,地址为 300004,第 0 位。
1!400010.4bit指站号为1,保持寄存器区域,地址为 400010,第 4 位。
2!400001.15bit指站号为2,保持寄存器区域,地址为 400001,第 15 位。

#ENDIAN

选填,字节顺序,适用于 int16/uint16/int32/uint32/float 数据类型,详细说明见下表。

符号字节顺序支持的数据类型备注
#B2,1int16/uint16
#L1,2int16/uint16不填,默认字节顺序
#LL1,2,3,4int32/uint32/float不填,默认字节顺序
#LB2,1,4,3int32/uint32/float
#BL3,4,1,2int32/uint32/float
#BB4,3,2,1int32/uint32/float

TIP

字节顺序可能用 ABCD 表示,只需将 1234 对应 ABCD 即可。例如 ABCD 对应默认字节序 1234 (#LL)。

.LEN[H][L][D][E]

当数据类型为 STRING 类型时,.LEN 是必填项,表示字符串需要占用的字节长度,每个寄存器中包含HLDE 四种存储方式,如下列表格所示。

符号说明
H一个寄存器存储两个字节,高字节在前低字节在后。
L一个寄存器存储两个字节,低字节在前高字节在后。
D一个寄存器存储一个字节,且存储在低字节。
E一个寄存器存储一个字节,且存储在高字节。

.BYTES

选填,读写bytes类型数据的长度,适用于 bytes 数据类型。

TIP

Modbus驱动一个寄存器包含2个bytes,在以bytes数据类型读取和写入Modbus寄存器数据时,请保证bytes参数设置为偶数。

地址示例

地址数据类型说明
1!300004int16指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #L
1!300004#Bint16指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #B
1!300004#Luint16指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #L
1!400004int16指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #L
1!400004#Lint16指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #L
1!400004#Buint16指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #B
1!300004int32指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #LL
1!300004#BBuint32指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #BB
1!300004#LBuint32指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #LB
1!300004#BLfloat指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #BL
1!300004#LLint32指站号为 1,输入寄存器区域,地址为 300004,字节顺序为 #LL
1!400004int32指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #LL
1!400004#LBuint32指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #LB
1!400004#BBuint32指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #BB
1!400004#LLint32指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #LL
1!400004#BLfloat指站号为 1,保持寄存器区域,地址为 400004,字节顺序为 #BL
1!300001.10String指站号为1,输入寄存器区域,地址为 300001,字符长度为 10,字节顺序为 L,即占用的地址为 300001 ~ 300005
1!300001.10HString指站号为1,输入寄存器区域,地址为 300001,字符长度为 10,字节顺序为 H,即占用的地址为 300001 ~ 300005
1!300001.10LString指站号为1,输入寄存器区域,地址为 300001,字符长度为 10,字节顺序为 L,即占用的地址为 300001 ~ 300005
1!400001.10String指站号为1,保持寄存器区域,地址为 400001,字符长度为 10,字节顺序为 L,即占用的地址为 400001 ~ 400005
1!400001.10HString指站号为1,保持寄存器区域,地址为 400001,字符长度为 10,字节顺序为 H,即占用的地址为 400001 ~ 400005
1!400001.10LString指站号为1,保持寄存器区域,地址为 400001,字符长度为 10,字节顺序为 L,即占用的地址为 400001 ~ 400005
1!400001.10DString指站号为1,保持寄存器区域,地址为 400001,字符长度为 10,字节顺序为 D,即占用的地址为 400001 ~ 400010
1!400001.10EString指站号为1,保持寄存器区域,地址为 400001,字符长度为 10,字节顺序为 E,即占用的地址为 400001 ~ 400010

应用场景

您可通过 PeakHMI Slave Simulators 模拟 Modbus 设备测试到 Neuron 的连接,具体步骤,见快速入门

您也可通过 Modbus Slave 从机模拟器测试到 Neuron 的连接,具体步骤,见 Modbus Salve 模拟器

数据监控

完成点位的配置后,您可点击 监控 -> 数据监控查看设备信息以及反控设备,具体可参考数据监控