综合资讯

Modbus TCP 协议全解析

2025-06-23

Modbus TCP 协议全解析

在工业自动化领域,设备之间的通信协议至关重要,而 Modbus TCP 协议无疑是其中的佼佼者。今天,就让我们深入探讨 Modbus TCP 协议,揭开其神秘面纱,了解它如何在工业自动化中发挥关键作用。

Modbus TCP 是 Modbus 协议在以太网环境下的应用,它基于 TCP/IP 协议栈,实现了设备之间的高效通信

(一)Modbus TCP 报文结构

Modbus TCP 报文由 MBAP 报文头和 PDU 两部分组成。MBAP 报文头包含传输标识、协议标识、长度和单元标识四个部分,用于确保通信的准确性和完整性。PDU 则包含了功能码和数据区,用于具体的操作指令和数据传输

MBAP 报文头包含以下四个部分:

  1. 传输标识(Transaction ID):2 字节,用于标识请求和响应的配对。

  2. 协议标识(Protocol ID):2 字节,通常为 0x0000,表示 Modbus TCP 协议。

  3. 长度(Length):2 字节,表示从单元标识开始到报文结束的字节数。

  4. 单元标识(Unit ID):1 字节,通常用于标识从机地址。

PDU 则包含了功能码和数据区:

------------------功能码--------------------

  • 01H(读线圈状态):用于读取线圈寄存器的状态。

  • 02H(读离散输入状态):用于读取离散输入寄存器的状态。

  • 03H(读保持寄存器):用于读取保持寄存器的值。

  • 04H(读输入寄存器):用于读取输入寄存器的值。

  • 05H(写单个线圈寄存器):用于设置单个线圈的状态。

  • 06H(写单个保持寄存器):用于设置单个保持寄存器的值。

  • 0FH(写多个线圈寄存器):用于设置多个线圈的状态。

  • 10H(写多个保持寄存器):用于设置多个保持寄存器的值。

进制
英文
范围
前缀
后缀
二进制
Binary
0-1
0B
B
八进制
Octal
0-7
0O
O
十进制
Decimal
0-9
D
十六进制
Hexadecimal
0-9, A-F
0X
H

------------------数据区--------------------

  • 起始地址:指定要操作的寄存器的起始地址。

  • 寄存器数量:指定要操作的寄存器的数量。

  • 字节数:指接下来的数据字节数

  • 数据值:指传输的数值(浮点数占2个寄存器)。


    在 Modbus 协议中,一个寄存器通常等于2个字节、一个字节等于8位

    ------------------举例一--------------------

  • 05 2B:传输标识

    00 00:协议标识,0x0000,表示 Modbus TCP 协议

    00 06(00 09):长度表示从单元标识开始到报文结束的字节数

    01 :单元标识,通常用于标识从机地址

    03:功能码

  • 发送  :05 2B00 0000 06010300 0000 03

    00 00:寄存器的起始地址

    00 03:寄存器的数量

    功能码为03H、寄存器起始地址为0,在接收时会省略寄存器的起始地址和寄存器的数量

  • 接收  :05 2B00 0000 0901030600 0144 0D E0 00

    06:接下来的数据字节数

    00 01:整数型(0x0001=1)

    44 0D E0 00:浮点数567.5(高位在前)

------------------举例二--------------------

  • 发送  :10 3D 00 00 00 0D 01 10 00 64 00 03 06 00 02 44 05 20 00

  • 接收  :10 3D 00 00 00 06 01 10 00 64 00 03

    10 3D:传输标识

    00 00:协议标识,0x0000,表示 Modbus TCP 协议

    00 0D(00 06):长度表示从单元标识开始到报文结束的字节数(0x000D=13)

    01 :单元标识,通常用于标识从机地址

    10:功能码(0x10=16)

    00 64:寄存器的起始地址(0x0064=100)

    00 03:寄存器的数量

    06:接下来的数据字节数

    00 02:整数型(0x0002=2)

    44 05 20 00:浮点数532.5(高位在前)


在线客服

关闭

微信

客户服务热线

19557160376

在线客服