Modbus TCP报文详解

一、Modbus TCP协议构成
Modbus TCP通信协议主要包括三个部分:报文头(MBAP)、功能码和数据。Modbus TCP/IP协议的最大数据帧为260个字节。

二、MBAP报文头构成
MBAP报文头占7个字节,具体构成如下:

  1. 事务处理标识符(Transaction Identifier):2个字节,为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文。
  2. 协议标识符(Protocol Identifier):2个字节,表示该条指令遵循Modbus TCP协议,一般都为00 00。
  3. 长度(Length):2个字节,表示后面数据的长度,有几个字节,高字节在前。
  4. 单元标识符(Unit Identifier):1个字节,设备地址,可以用于局域网里面的具体地址。如果目标机器有固定IP,这个地址可能不起作用,通常写成00。

三、功能代码
功能代码占1个字节,主机给从机发送Modbus协议时,从机根据功能码的不同完成不同的操作。功能代码基于四种不同的寄存器类型(离散量输入、线圈、输入寄存器、保持寄存器)可以分为8种主要的功能代码,包括:

  1. 01H:读线圈状态
  2. 02H:读离散量输入线圈
  3. 03H:读保持寄存器
  4. 04H:读输入寄存器
  5. 05H:写单个线圈
  6. 06H:写单个保持寄存器
    (注:以上仅为部分功能代码示例,还有其他功能代码用于不同的操作)

四、数据区
数据区位于功能码之后,其长度和内容取决于功能码和具体的操作。例如,在读取多个线圈的请求报文中,数据区可能包含起始地址和读取的线圈数量;在响应报文中,数据区则包含实际读取的线圈状态值。

五、示例报文
以下是两个示例报文,用于说明Modbus TCP报文的格式:

读取多个线圈的请求报文:

00 01 00 00 00 06 FF 01 00 01 00 10

其中:

  • 00 01:事务处理标识符
  • 00 00:协议标识符
  • 00 06:长度,表示后面有6个字节的数据
  • FF:单元标识符,设备地址
  • 01:功能码,读取多个线圈
  • 00 01:起始地址
  • 00 10:读取的线圈数量(16个)

读取多个保持寄存器的响应报文:

00 01 00 00 00 07 01 03 04 00 22 00 00

其中:

  • 00 01 00 00 00 07:与请求报文中的前6个字节相同,表示事务处理、协议和长度信息
  • 01:单元标识符
  • 03:功能码,读取多个保持寄存器
  • 04:后面数据位的长度,表示有4个字节的数据
  • 00 22 00 00:实际读取的保持寄存器值(示例数据)

通过以上讲解和示例,希望能够清晰地展示Modbus TCP报文的结构和组成。

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ModbusPoll是一个模拟Modbus协议主机的上位机软件,主要用于模拟测试与其他从机设备通信的过程。它支持Modbus TCP/IP协议,可以通过图形化界面进行操作,具有异常报文检测、原始报文查看、数据记录等功能。在进行ModbusPoll TCP报文分析时,可以利用该软件来观察Modbus通信过程中的各种报文。通过ModbusPoll的功能,可以帮助我们对Modbus设备进行测试和调试,更好地理解和分析Modbus TCP报文的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [modbus学习1](https://blog.csdn.net/b_linile/article/details/100115591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【工具使用】Modbus Poll软件使用详解](https://blog.csdn.net/XiaoTao_hu/article/details/129794849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于Python的ModbusTCP客户端实现详解](https://download.csdn.net/download/weixin_38560502/12861650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值