news 2026/4/16 9:22:45

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/3/28 10:47:36

语音合成个性化推荐:基于用户历史偏好的发音人选型逻辑

语音合成个性化推荐:基于用户历史偏好的发音人选型逻辑 1. 为什么“选对声音”比“合成出来”更重要 你有没有试过用语音合成工具读一段产品介绍,结果听上去像机器人在念说明书?不是模型不行,而是声音没选对。 很多人以为TTS&a…

作者头像 李华
网站建设 2026/4/16 4:05:33

APK Installer技术白皮书:企业级应用跨平台部署全攻略

APK Installer技术白皮书:企业级应用跨平台部署全攻略 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 问题引入:跨平台应用部署的技术挑战 在企…

作者头像 李华
网站建设 2026/4/15 3:05:14

foo_openlyrics:让foobar2000歌词体验升级的开源解决方案

foo_openlyrics:让foobar2000歌词体验升级的开源解决方案 【免费下载链接】foo_openlyrics An open-source lyric display panel for foobar2000 项目地址: https://gitcode.com/gh_mirrors/fo/foo_openlyrics 为什么选择foo_openlyrics?告别歌词…

作者头像 李华
网站建设 2026/4/12 23:07:03

verl打标签系统对接:高质量数据流部署

verl打标签系统对接:高质量数据流部署 1. verl框架核心价值与定位 verl不是一个普通的强化学习框架,它专为解决大模型后训练中最棘手的问题而生——如何让RL训练流程既稳定又高效,还能真正跑在生产环境里。很多团队在尝试用PPO等算法微调大…

作者头像 李华
网站建设 2026/4/16 0:46:13

突破模拟器桎梏:APK安装器带来的革新性安卓应用体验

突破模拟器桎梏:APK安装器带来的革新性安卓应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在忍受安卓模拟器启动慢如蜗牛的煎熬?当你…

作者头像 李华