CRC16 在线计算器

支持 Modbus RTU、CCITT、XMODEM、KERMIT、X-25 等 9 种算法模型。粘贴报文即出校验码,自动拼接完整帧,也能反向校验你手上那串报文对不对。

纯本地运算 · 不上传数据 断网可用 9 种参数模型 自动校验
示例:
CRC16 值(HEX)
0xCDC5
算法:-
十进制
52677
长度:-
字节序(低字节在前)
C5 CD
完整报文(已追加 CRC)
01 03 00 00 00 0A C5 CD
i
报文不足 3 字节,仅计算 CRC。

CRC16 参数模型对照表

CRC16 不是一种算法,而是一族算法。参数差一个,结果就完全不同——这也是现场"两个工具算出两个值"的根本原因。下表可在计算器里逐一验证。

模型名称 Poly Init RefIn RefOut XorOut Check("123456789") 常见用途
CRC-16/MODBUS 0x8005 0xFFFF truetrue0x0000 0x4B37 Modbus RTU 串口通讯
CRC-16/ARC 0x80050x0000 truetrue0x0000 0xBB3D DL/T 645 等电力规约、部分仪表
CRC-16/MAXIM-DOW 0x80050x0000 truetrue0xFFFF 0x44C2 1-Wire 总线、DS18B20 传感器
CRC-16/USB 0x80050xFFFF truetrue0xFFFF 0xB4C8 USB 数据包校验
CRC-16/CCITT-FALSE 0x10210xFFFF falsefalse0x0000 0x29B1 部分工业协议、GPS、传感器模块
CRC-16/XMODEM 0x10210x0000 falsefalse0x0000 0x31C3 XMODEM 文件传输、部分固件升级
CRC-16/KERMIT 0x10210x0000 truetrue0x0000 0x2189 蓝牙、部分电表与无线模块
CRC-16/X-25 0x10210xFFFF truetrue0xFFFF 0x906E X.25、部分进口仪表
CRC-16/DNP 0x3D650x0000 truetrue0xFFFF 0xEA82 电力 DNP3 规约
怎么用这张表:把 123456789(注意是这串字符的 ASCII 码,不是十六进制数)输进上面的计算器,切换模型,算出来等于表格 Check 列的值,说明该模型的实现是对的。反过来说,如果你手上有一串报文和它的正确 CRC,可以用计算器逐个模型试,哪个能对上就是哪个模型。

现场调试常见问题

1. 为什么我算出的 CRC 和别人给的不一样?

九成情况是模型选错了。都叫 CRC16,但初始值是 0x0000 还是 0xFFFF、多项式是 0x8005 还是 0x1021、输入输出要不要反射,任意一项不同结果就完全不一样。先确认对方协议文档里写的是哪个模型,没有文档就用上面的方法反推。

2. CRC 值算对了,从站还是报错?

八成是字节顺序写反了。Modbus 规定 CRC 低字节在前:计算值 0xCDC5,报文里要写 C5 CD。写成 CD C5,从站会直接丢弃整帧,表现为"没响应"或超时,而不是返回异常码——这点很容易误导排查方向。

3. 报文里到底要不要包含 CRC 本身?

不要。CRC 是对校验范围内所有字节算出来的,CRC 字段本身不参与计算。本工具默认对全部输入字节计算,若你粘贴的是带 CRC 的完整报文,会自动识别末尾两字节并做校验。

4. 我的报文有中文或者特殊字符怎么办?

切换成"ASCII 文本"模式即可按字符编码逐字节计算。注意中文是多字节编码(UTF-8 下 3 字节),本工具只支持单字节字符,含中文请先转成十六进制再算。

5. 这个工具会上传我的数据吗?

不会。全部逻辑在浏览器本地执行,页面不发任何网络请求,断网也能用。涉及产线数据、设备地址的报文可以放心粘贴。

需要定制数据采集 / 上位机软件?
QQ 412224615
串口 · Modbus RTU/TCP · PLC 数据上云 · 采集看板 · 老设备改造
看看能做什么
已复制