Modbus通讯CRC校验方式为CRC-16/Modbus,验证网站http://www.ip33.com/crc.html
以下例子是从17号从站将00 0A、01 02两个值写入到以01地址为起始的2各读写寄存器内:
Tx:
| 从站地址 | 功能码 | 寄存器起始地址 | 寄存器数量 | 字节数 | 数据1值 | 数据2值 | CRC校验值 | |||||
| 高位 | 低位 | 高位 | 低位 | 高位 | 低位 | 高位 | 低位 | 低位 | 高位 | |||
| 11H | 10H | 00H | 01H | 00H | 02H | 04H | 00H | 0AH | 01H | 02H | C6H | F0H |
Rx:
| 从站地址 | 功能码 | 寄存器起始地址 | 寄存器数量 | CRC校验 | |||
| 高位 | 低位 | 高位 | 低位 | 低位 | 高位 | ||
| 11H | 10H | 00H | 01H | 00H | 02H | 12H | 98H |
以下例子是从17号从站读取107-109寄存器:
Tx:
| 从站地址 | 功能码 | 寄存器起始地址 | 寄存器数量 | CRC校验值 | |||
| 高位 | 低位 | 高位 | 低位 | 低位 | 高位 | ||
| 11H | 03H | 00H | 6BH | 00H | 03H | 76H | 87H |
Rx:
| 从站地址 | 功能码 | 字节个数 | 寄存器1值 | 寄存器2值 | 寄存器3值 | CRC校验值 | ||||
| 高位 | 低位 | 高位 | 低位 | 高位 | 低位 | 低位 | 高位 | |||
| 11H | 03H | 06H | 02H | 2BH | 00H | 00H | 00H | 64H | C8H | BAH |
以下例子是从17号从站读取0、1两寄存器,两寄存器数据解析为float值:
Tx:
| 从站地址 | 功能码 | 寄存器起始地址 | 寄存器数量 | CRC校验值 | |||
| 高位 | 低位 | 高位 | 低位 | 低位 | 高位 | ||
| 11H | 03H | 00H | 00H | 00H | 02H | C6H | 9BH |
Rx:
| 从站地址 | 功能码 | 字节个数 | 寄存器1值 | 寄存器2值 | CRC校验值 | |||
| 高位 | 低位 | 高位 | 低位 | 低位 | 高位 | |||
| 11H | 03H | 04H | A4H | 70H | 9DH | 3FH | E1H | 99H |
寄存器1+寄存器2数据使用大端模式解析为folat类型过程为
0xA4709D3F->1.23