Wireshark解析Modbus报文:一步步教你抓取与分析!

Wireshark解析Modbus报文功能码

现在网上有很多类似的文章、其实这一篇也借鉴了很多其他博主的文章。

写这篇文章的重点是在于解析功能和报文、对Modbus这个协议并不会做很多介绍。

好了,我们开始吧。

常用的功能码其实也没多少、我也就按照大小逐个介绍吧。

1、01X   读取一组逻辑线圈的当前状态(ON/OFF)

请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节)

响应:MBAP 功能码 数据长度 数据(一个地址的数据为1位)

发送包

byte[0] byte[1]  00 02 为消息号,随便指定,服务器返回的数据的前两个字和这个一样

byte[2] byte[3]  00 00 为modbus标识,强制为0即可

byte[4] byte[5]  00 06 值在06 之后所有字节的个数,大家也可以数一数哈

byte[6]  01 为站号、随便指定。

byte[7]  01 为功能码(这个是决定了要干什么事)

byte[8] byte[9]     00 00为起始地址,比如我们我们想读地址0的数据就为00,读1000地址为03 E8

byte[10] byte[11]  00 80为指定读取数据的长度,跟地址规则一样

回包

注:bit是一直到127的 因为图片太大无法截到

byte[0]  byte[1]  消息号,我们之前写发送指令的时候,是多少,这里就是多少。

byte[2]  byte[3]  同上

byte[4]  byte[5]  指后面的字节数

byte[6]           站号

byte[7]           功能码

byte[8]           指示在byte[8]后面的字节数量 在byte[8]后面就是真实数据

byte[9]           到结尾都是我们读取到的数据  因为字节是8位所以是16(0-127所占了128个bit 128/8 得出16)

列子:

读5个线圈状态

发送:00 00 00 00 00 06 01 01 00 00 00 05

接收:00 00 00 00 00 04 01 01 01 1F

2、0x02 读取一组开关输入的当前状态(ON/OFF)

请求:MBAP 功能码 起始地址H 起始地址L 数量H 数量L(共12字节)

响应:MBAP 功能码 数据长度 数据(长度:9+ceil(数量/8))

发送包

其实大家自己看与0x01是基本一样的。只是多了个Bit Count这一个

Bit Count所代表的意思就是 读取十个数据。

回包

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NO1019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值