TOOL / IIOT / MODBUS-CHECKSUM
Modbus CRC / LRC 与寄存器地址换算
计算 Modbus RTU CRC-16 与 ASCII LRC,生成完整请求帧,并把 40001/30001 等 1-based 地址换算为 PDU 0-based 地址。
LIVE WORKBENCH / modbus-checksum
已预填示例输入,可直接修改;所有计算仅在当前浏览器内完成,不会上传。
CRC-16/MODBUS(init 0xFFFF)C5 CD
WORD / BIG-ENDIAN0xCDC5 / CD C5
RTU 帧(附加 CRC)01 03 00 00 00 0A C5 CD
LRC(ASCII 模式)0xF2
ASCII 帧:01030000000AF2␍␊
寄存器地址换算
PDU 地址(0-based)9 (0x0009)
读取功能码0x03
读请求(含 CRC)01 03 00 09 00 02 14 09
FAQ
常见问题
Modbus CRC 用的是哪种 CRC-16?
是 CRC-16/MODBUS:多项式 0x8005 反射、初值 0xFFFF,123456789 的校验值 0x4B37。初值 0x0000 的 CRC-16/ARC 不能用于 RTU。
为什么 CRC 要低字节在前?
Modbus RTU 规定 CRC 以小端序附加。01 03 00 00 00 0A 的 CRC 字值 0xCDC5,线上发送 C5 CD;本工具同时给出两种表示。
40001 在报文里是多少?
40001 是 1-based 人机地址,报文起始地址为 0x0000;40010 对应 0x0009。这个 off-by-one 是现场调试最常见错误。
使用说明
以下说明正文目前仅提供中文完整版;界面、标题、描述与常见问题已按当前语言显示。
- 输入 RTU 报文 hex(不含 CRC),得到 CRC 低/高字节、RTU 完整帧、LRC 与 ASCII 帧。
- 在地址换算区选择寄存器类型并输入人机地址,得到 PDU 地址、读取功能码与带 CRC 的读请求。
本工具用 LRC 计算 ASCII 帧、用 CRC-16/MODBUS 计算 RTU 帧,两者不能混用。读请求的数量按规范限制 0x01/0x02 最多 2000 个位、0x03/0x04 最多 125 个寄存器。
地址与功能码
| 类型 | 起始人机地址 | 报文起始地址 | 读功能码 |
|---|---|---|---|
| Coil | 00001 | 0x0000 | 0x01 |
| Discrete Input | 10001 | 0x0000 | 0x02 |
| Holding Register | 40001 | 0x0000 | 0x03 |
| Input Register | 30001 | 0x0000 | 0x04 |
RTU 帧间隔必须大于等于 3.5 个字符时间,ASCII 帧以
:开头、CRLF 结尾并用 LRC 校验。
NEXT / RELATED TOOLS
本领域全部 ↗