串口报文核对

Modbus CRC 计算器

计算时输入不含 CRC 的帧体;校验时输入含末尾两个 CRC 字节的完整帧。

Modbus CRC 计算器

帧字节(十六进制)

输入完整字节对,可用空格、换行或逗号分隔;0x 前缀只用于单字节。

结果

报文处理仅在当前浏览器标签页进行,输入不会发送或保存。

选项

固定 CRC-16/MODBUS 参数

位宽 16 · 多项式 8005(反射 A001)· 初值 FFFF · 输入/输出反射 true · 最终异或 0000

CRC 匹配不代表功能码、寄存器或设备通信有效。

请输入字节或载入示例。

日志显示 CDC5,串口抓包末尾却是 C5 CD,不一定是计算错了。Modbus CRC 计算器把数值和发送字节分开显示,便于先确认比较对象,再决定是否调整自己的程序。

做 Modbus CRC 校验时,先判断输入是否已经带上尾部校验码。计算模式把所有字节纳入运算;校验模式先取出最后两个字节,再重算前面的帧体。输入里的换行只是分隔符,不会自动拆成多条帧。

为什么使用 Modbus CRC 计算器

把数值还原成线上字节

Modbus CRC 计算器对 01 03 00 00 00 0A 得到数值 CDC5,标准发送顺序则是 C5 CD。高字节优先选项只调整尾部两个字节的排列和解释,不会颠倒地址、功能或寄存器数据。

两枚不同颜色的 CRC 字节从数值顺序换成低字节优先,并附加到帧尾。

失配时保留原始证据

结果同时呈现收到的尾部字节和计算出的期望字节。即使不匹配,左侧报文仍保持原样,右侧另给重建帧,避免为了修正校验码而丢失抓包现场。

收到的帧尾与重新计算的期望帧尾并排比较,一个变化字节被突出显示。

先分清数值和发送顺序

01

先选对输入范围

生成 Modbus RTU 校验码时,不要把旧 CRC 放进帧体;核对现有报文则选校验模式。工具不猜测末尾是否已有校验码。示例会按当前模式和顺序生成,预览后再应用。

02

不要把低字节优先理解成全帧倒序

标准 CRC 尾部先低后高,与寄存器内部的数据解释不是同一件事。高字节优先仅供诊断,匹配也会标为非标准;如果高低字节相同,切换顺序无法说明发送端是否有误。

03

用状态判断结果能否导出

自动计算会等待 350 毫秒。关闭后可点计算按钮或按 Ctrl/Cmd+Enter。修改输入、模式或顺序会立即禁用旧结果的复制和下载;示例、清空支持预览和一次撤销,输入与结果一起恢复。

围绕一帧报文核对校验码

固定参数的 CRC16 计算

算法固定为 CRC-16/MODBUS:宽度 16,多项式 8005,反射形式 A001,初值 FFFF,输入和输出均反射,最终异或 0000。字节 31 到 39 的检查值为 4B37,参数始终可见,不能误切到其他变体。

按十六进制字节严格解析

支持连续偶数字符串、空白或逗号分隔的完整字节组,单字节可加 0x 前缀。奇数半字节、非十六进制符号会指出行列;不会悄悄剔除日志前缀、注释或错误字符来凑出一个结果。

拆开收到值与期望值

校验时只取末尾两字节作为收到值,对前面的地址、功能和数据计算 CRC。失配也是已完成的比较,可下载诊断报告;重建帧采用当前顺序的期望尾部,原输入中的错误字节仍保留。

完整报告保留比较条件

可分别复制 CRC 字节或完整帧。JSON 报告包含计算模式、字节顺序、固定参数、帧体、收到值、期望值和匹配结果;同事复核时能知道当时选了什么范围,而不只得到四位十六进制数。

通过校验仍有哪些边界

只接受单条有界 RTU 帧
计算模式允许 2–254 字节,校验模式允许含 CRC 的 4–256 字节,原始文本不超过 4096 字符。范围对应单条帧,不适合整份二进制文件;多行不会被当成多帧并行计算。
不判断设备与功能语义
CRC 匹配不代表功能码、寄存器或地址有效,也不代表串口连接正常。工具不连接硬件、不发送报文,不检查波特率、静默时间或线路。校验码只能辅助发现差错,不能证明消息来源。
不扩展成其他协议的校验器
不计算 Modbus ASCII 的 LRC,不构造 TCP 的 MBAP 头,也不允许修改多项式、初值和反射配置。需要其他 CRC 变体时,应使用通用校验和工具,避免把不同算法的结果放在一起比较。
不猜测、不自动修复
计算模式不会自动剥掉疑似旧 CRC,校验模式不会悄悄换序直到匹配。高字节优先始终标注为非标准诊断;右侧附加或重建帧从不回写左侧输入,避免重复附加。
仅处理明确粘贴的字节
没有文件、网址、C 数组或抓包日志导入。请自行去掉地址偏移、方括号和注释;非法输入会保留并报错。草稿没有持久历史,替换预览按字符计数,一次撤销可恢复替换前的工作状态。

Modbus CRC 计算器常见问题

CRC 校验和密码哈希有什么不同?

CRC 用于发现传输中的偶发差错,不能防止恶意修改,也不能认证发送者。密码哈希的设计目标不同;即使一条报文校验通过,也不能据此信任来源或跳过协议层检查。

应该给协议选择哪一种 CRC?

以协议指定的完整参数为准,不能只看 CRC16 这个位宽名称。本页固定为 Modbus RTU 的 CRC-16/MODBUS,并公开多项式、初值、反射和最终异或,便于与设备文档逐项核对。

为什么计算结果和预期值对不上?

先检查是否把已有 CRC 又算进去了,再确认比较的是数值还是线上字节。CDC5 和 C5 CD 可以表示同一次计算。还需核对录入的字节范围和算法变体,不要通过随意交换整个帧来尝试匹配。

MODBUS 和 CCITT 的 CRC-16 有什么区别?

它们同为 16 位校验,但通常使用不同多项式及其他参数,结果不能互换。MODBUS 使用 8005 的反射形式 A001、初值 FFFF;所谓 CCITT 还可能指多个变体,应查看明确的参数定义。

能否计算二进制数据,而不只计算文本?

可以,把真实二进制字节写成十六进制即可。例如 01 是一个值为 1 的字节,不是字符 0 和 1 的编码。本页不读取文件,也不提供文本编码模式;输入必须符合单条 RTU 帧的长度范围。

还有疑问?

核对下一条抓取报文

用 Modbus CRC 计算器核对一条真实报文,保留收到的尾部字节,再依据比较结果检查自己的发送程序。