Modbus TCP报文解析

Tx:表示请求报文      Rx:表示返回报文

1cb1a44b889d438399fc140ecb8edf3d.png(1)首先看TX报文,将前方3个0省略;就有了以下报文

事物:用来记录收发报文次数

协议:固定4个零,不可能变,除非你写错

00 06:表示后方还有6个字节需要发送

01:单元标识符,称为站号

03:表示03功能码,其他功能码还有01 00 04

00 00:数据所在的地址=Input HoldStart➕报文偏       移量;例:输入MW0,报文为00 01,实际指向地址为MW1

00 03:表示读取数据的数量

585fea2fe9f34a16aa3bf050027d24a6.png 

 (2)再来看Rx返回的报文

MBAP 的解析同上方Rx报文

03:功能码;又叫区域

06:表示后方需要发送数据的长度

00 7B:返回的数据

00 DE:返回的数据

00 0A:返回的数据

3bc8dbc4c9484aeea7e7bda507d96fc7.png

 常用功能码说明9b8fa7b3e4ab4ce1a5b209a50cacf791.png

 

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Modbus TCP是基于TCP/IP协议的Modbus协议的一种实现方式。在Modbus TCP中,报文采用了标准的Modbus协议格式,并通过TCP/IP进行传输。 Modbus TCP报文解析包括以下几个步骤: 1. 解析TCP首部:首先需要解析TCP首部,包括源端口号、目标端口号、序列号、确认号等信息。这些信息可以用来确定报文的发送者和接收者。 2. 解析Modbus应用协议头:Modbus报文的应用层协议头包括从站地址、功能码、数据长度等字段。从站地址用于标识Modbus设备,功能码用于指示所要执行的操作,数据长度表示后续数据的长度。 3. 解析数据部分:根据数据长度字段可以确定数据部分的长度,然后按照功能码的不同进行解析。例如,如果功能码是读取保持寄存器的操作,那么需要解析请求的起始地址和寄存器数量。如果功能码是写单个保持寄存器的操作,那么需要解析要写入的寄存器地址和数值。 4. 校验和验证:Modbus协议中包含了一个校验和字段,用于验证报文的完整性。通常使用CRC校验算法对报文进行校验。 需要注意的是,Modbus TCP报文是以字节流的形式进行传输的,因此在解析过程中需要按照字节的顺序进行解析。此外,由于Modbus协议支持多种功能码和数据类型,对不同类型的报文需要采用不同的解析方式。具体的解析方法可以参考Modbus协议的相关文档或库。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值