Modbus 是一种广泛使用的通信协议,主要用于工业自动化系统中的设备间通信。Modbus 的校验方法主要包括 CRC 和 LRC,CRC 和 LRC 校验确保了在工业环境中数据传输的可靠性。对于实际应用,可以利用各种库和工具来计算 CRC 和 LRC 校验码,以便进行数据验证。
Modbus 协议主要有两种通信方式:RTU(Remote Terminal Unit)模式和 ASCII(American Standard Code for Information Interchange)模式。
Modbus 数据帧结构
- Modbus RTU:
[ 地址 ][ 功能码 ][ 数据 ][ CRC-16 ]
- Modbus ASCII:
[ 起始字符 ][ 地址 ][ 功能码 ][ 数据 ][ LRC ][ 结束字符 ]
Modbus RTU CRC 校验
- 在 Modbus RTU 模式中,**CRC(循环冗余校验)**用作数据校验。CRC(循环冗余校验码)是一种常用的错误检测技术,广泛应用于数据通信和存储中。它能有效地检测数据在传输或存储过程中是否发生了错误。
CRC-16 校验概述
Modbus RTU 使用 CRC-16 校验码来验证数据的完整性。CRC-16 校验码基于一个 16 位的生成多项式 0x8005(其反向形式为 0xA001,常用),具体算法如下:
- CRC-16 计算步骤
- 初始化 CRC 寄存器:
- 初始化 CRC 寄存器为 0xFFFF(全 1)。
- 数据处理: