modbus crc校验 示例
时间: 2023-09-26 18:11:15 浏览: 130
modbus CRC 校验
5星 · 资源好评率100%
以下是一个 Modbus RTU 协议中 CRC16 校验的示例代码:
```c
#include <stdint.h>
// 计算 Modbus RTU 协议 CRC16 校验码
uint16_t modbus_crc16(uint8_t *buf, uint16_t len) {
uint16_t crc = 0xFFFF;
uint8_t i;
while (len--) {
crc ^= *buf++;
for (i = 0; i < 8; i++) {
if (crc & 0x0001) {
crc >>= 1;
crc ^= 0xA001;
} else {
crc >>= 1;
}
}
}
return crc;
}
```
该函数接受一个指向待校验数据的指针和数据长度,返回计算出的 CRC16 校验码。在使用时,需要将待校验数据和计算出的 CRC16 校验码发送到 Modbus 设备中。常见的 Modbus 设备都支持这种 CRC16 校验方式。
阅读全文