先选对输入范围
生成 Modbus RTU 校验码时,不要把旧 CRC 放进帧体;核对现有报文则选校验模式。工具不猜测末尾是否已有校验码。示例会按当前模式和顺序生成,预览后再应用。
串口报文核对
计算时输入不含 CRC 的帧体;校验时输入含末尾两个 CRC 字节的完整帧。
输入完整字节对,可用空格、换行或逗号分隔;0x 前缀只用于单字节。
报文处理仅在当前浏览器标签页进行,输入不会发送或保存。
位宽 16 · 多项式 8005(反射 A001)· 初值 FFFF · 输入/输出反射 true · 最终异或 0000
CRC 匹配不代表功能码、寄存器或设备通信有效。
请输入字节或载入示例。
日志显示 CDC5,串口抓包末尾却是 C5 CD,不一定是计算错了。Modbus CRC 计算器把数值和发送字节分开显示,便于先确认比较对象,再决定是否调整自己的程序。
做 Modbus CRC 校验时,先判断输入是否已经带上尾部校验码。计算模式把所有字节纳入运算;校验模式先取出最后两个字节,再重算前面的帧体。输入里的换行只是分隔符,不会自动拆成多条帧。
Modbus CRC 计算器对 01 03 00 00 00 0A 得到数值 CDC5,标准发送顺序则是 C5 CD。高字节优先选项只调整尾部两个字节的排列和解释,不会颠倒地址、功能或寄存器数据。
结果同时呈现收到的尾部字节和计算出的期望字节。即使不匹配,左侧报文仍保持原样,右侧另给重建帧,避免为了修正校验码而丢失抓包现场。
生成 Modbus RTU 校验码时,不要把旧 CRC 放进帧体;核对现有报文则选校验模式。工具不猜测末尾是否已有校验码。示例会按当前模式和顺序生成,预览后再应用。
标准 CRC 尾部先低后高,与寄存器内部的数据解释不是同一件事。高字节优先仅供诊断,匹配也会标为非标准;如果高低字节相同,切换顺序无法说明发送端是否有误。
自动计算会等待 350 毫秒。关闭后可点计算按钮或按 Ctrl/Cmd+Enter。修改输入、模式或顺序会立即禁用旧结果的复制和下载;示例、清空支持预览和一次撤销,输入与结果一起恢复。
算法固定为 CRC-16/MODBUS:宽度 16,多项式 8005,反射形式 A001,初值 FFFF,输入和输出均反射,最终异或 0000。字节 31 到 39 的检查值为 4B37,参数始终可见,不能误切到其他变体。
支持连续偶数字符串、空白或逗号分隔的完整字节组,单字节可加 0x 前缀。奇数半字节、非十六进制符号会指出行列;不会悄悄剔除日志前缀、注释或错误字符来凑出一个结果。
校验时只取末尾两字节作为收到值,对前面的地址、功能和数据计算 CRC。失配也是已完成的比较,可下载诊断报告;重建帧采用当前顺序的期望尾部,原输入中的错误字节仍保留。
可分别复制 CRC 字节或完整帧。JSON 报告包含计算模式、字节顺序、固定参数、帧体、收到值、期望值和匹配结果;同事复核时能知道当时选了什么范围,而不只得到四位十六进制数。
CRC 用于发现传输中的偶发差错,不能防止恶意修改,也不能认证发送者。密码哈希的设计目标不同;即使一条报文校验通过,也不能据此信任来源或跳过协议层检查。
以协议指定的完整参数为准,不能只看 CRC16 这个位宽名称。本页固定为 Modbus RTU 的 CRC-16/MODBUS,并公开多项式、初值、反射和最终异或,便于与设备文档逐项核对。
先检查是否把已有 CRC 又算进去了,再确认比较的是数值还是线上字节。CDC5 和 C5 CD 可以表示同一次计算。还需核对录入的字节范围和算法变体,不要通过随意交换整个帧来尝试匹配。
它们同为 16 位校验,但通常使用不同多项式及其他参数,结果不能互换。MODBUS 使用 8005 的反射形式 A001、初值 FFFF;所谓 CCITT 还可能指多个变体,应查看明确的参数定义。
可以,把真实二进制字节写成十六进制即可。例如 01 是一个值为 1 的字节,不是字符 0 和 1 的编码。本页不读取文件,也不提供文本编码模式;输入必须符合单条 RTU 帧的长度范围。
还有疑问?