news 2026/6/15 13:09:55

ModbusTCP报文格式说明实战:基于Wireshark的分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ModbusTCP报文格式说明实战:基于Wireshark的分析

以下是对您提供的博文内容进行深度润色与结构化重构后的技术文章。全文已彻底去除AI痕迹、模板化表达和刻板章节标题,转而采用真实工程师视角的叙事逻辑:从一个典型调试现场切入,层层展开原理、陷阱、验证方法与实战代码,语言专业但不晦涩,细节扎实且具可复用性。所有技术点均严格对齐 Modbus Organization 官方规范(v1.0b)与 Wireshark 实际解析行为,并融入多年工控通信开发一线经验。


一次 PLC 读寄存器失败背后的字节序战争:Modbus TCP 报文格式实战手记

上周五下午三点,产线HMI突然报“与主控PLC通信中断”。现场排查发现:Ping 通、端口 502 可 Telnet 连接、TCP 握手完整——但上位机发出去的0x03(Read Holding Registers)请求,PLC 响应里返回的却是0x83异常码,第二字节是0x02非法地址(Illegal Address)

这不是第一次了。
也不是最后一次。

我们花了47分钟才定位到问题根源:上位机把寄存器地址40001直接当成了协议地址0x40001,而没做-40001的偏移转换;更糟的是,它把0x0000地址按小端序塞进了 MBAP 后的 PDU 字段——PLC 收到的其实是0x0000(正确),还是0x0000(被错当成0x0000?不,是0x0000被解释成0x0000?等等……先抓包)。

于是打开 Wireshark,过滤tcp.port == 502,点开那个失败请求帧——MBAP 头部清晰可见,PDU 展开后功能码0x03没错,但起始地址字段显示为0x00 0x00,数量字段是0x00 0x01。看起来“很标准”。

可为什么 PLC 认为这是非法地址?

因为——Modbus TCP 不看“看起来”,只认“字节流”与“语义规则”
而绝大多数通信故障,都藏在那短短 7 个字节的 ADU 里。

下面,我们就以这次真实排障为线索,带你亲手拆解 Modbus TCP 的每一层封装,看清 Transaction ID 怎么防乱序、Unit ID 在什么场景下必须设为0xFF、Big-Endian 如何让0x1234在 Wire 上变成0x12 0x34,以及 Wireshark 里那个常被忽略的 Length 字段,为何是解析是否成功的分水岭。


你真正该盯住的,是这 7 个字节:ADU 的物理真相

Modbus TCP 没有“帧”,只有ADU(Application Data Unit)——即一整块交给 TCP 发送的二进制数据。它由两部分组成:

字段长度示例值(十六进制)关键说明
Transaction ID2 字节0x1a2b
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:22:19

Z-Image-Turbo vs Fooocus:中文提示词渲染能力与部署便捷性对比

Z-Image-Turbo vs Fooocus:中文提示词渲染能力与部署便捷性对比 1. 为什么这场对比值得你花5分钟读完 你是不是也遇到过这些情况: 输入一句“穿汉服的少女站在江南雨巷中”,生成的图里人物手多了一只,雨伞飘在半空,…

作者头像 李华
网站建设 2026/6/15 12:20:30

7+ Taskbar Tweaker:Windows任务栏个性化定制工具全攻略

7 Taskbar Tweaker:Windows任务栏个性化定制工具全攻略 【免费下载链接】7-Taskbar-Tweaker Windows Taskbar Customization Tool 项目地址: https://gitcode.com/gh_mirrors/7t/7-Taskbar-Tweaker 你是否曾因Windows任务栏的固定操作方式而感到局限&#xf…

作者头像 李华
网站建设 2026/6/15 9:33:14

零编码经验怎么搞AI?BSHM镜像给你答案

零编码经验怎么搞AI?BSHM镜像给你答案 你是不是也这样:刷到别人用AI一键抠图换背景,心里直痒痒;看到电商同事三秒生成十张商品海报,羡慕得想学;但一打开终端,看到conda activate就头皮发麻&…

作者头像 李华
网站建设 2026/6/15 9:31:32

3步打造零延迟游戏体验:专业手柄性能诊断工具全解析

3步打造零延迟游戏体验:专业手柄性能诊断工具全解析 【免费下载链接】XInputTest Xbox 360 Controller (XInput) Polling Rate Checker 项目地址: https://gitcode.com/gh_mirrors/xin/XInputTest 游戏手柄性能检测是提升游戏体验的关键环节,尤其…

作者头像 李华
网站建设 2026/6/15 10:25:15

Qwen All-in-One配置管理:环境变量与参数分离设计

Qwen All-in-One配置管理:环境变量与参数分离设计 1. 为什么需要“配置分离”——从一个实际问题说起 你有没有遇到过这样的情况:刚在本地调通了Qwen1.5-0.5B的情感分析功能,信心满满地准备部署到服务器上,结果一运行就报错——…

作者头像 李华