首页天道酬勤,

,

张世龙 05-12 14:06 122次浏览

ModBus CRC16校验数位学习笔记(带手稿)学习背景最近玩轮毂电机的驱动控制。 此电机上的驱动程序可以使用485或CAN总线协议。 该电机485通信协议消息的最后两个字节是由一位宝商的意愿使用的Modbus CRC16校验方法获得的。 之后需要使用程序进行计算。 百度之后知道并推算Modbus CRC16校验码的计算方式。 在这里把我的学习过程记录在这里。 一个希望做笔记,另一个希望帮助需要它的人。

ModBus CRC16校验码CRC16简要介绍CRC全称循环冗馀校验,是循环冗馀校验的含义。 ModBus通信协议的CRC 16为2字节,共计16位。 发射设备a向接收设备b发送一系列数据,但是在设备a发送数据之前,这些数据需要根据CRC16校验码的计算方法来计算CRC16校验码,并将所获得的用于发送2个字节的数据添加到发送设备b的末尾。 接收设备b的接收完成后,以相同的方式对接收到的数据执行CRC16检查。 如果接收设备计算出的数据与接收数据末尾的2字节不一致,则认为数据错误,反之则认为数据正确。

CRC16的计算方法首先设定16位寄存器CRC,内容为0xFFFF; 进行检查数据的最初字节(8位二进制)和16位CRC的异或运算,同时将结果存储在CRC寄存器中; 将CRC寄存器的内容向右移动1位,用0填充最高位,检查移动后的位的内容; 如果移动的是0,则重复步骤3 (再向右移动一位); 在1的情况下,进行CRC寄存器的内容与a001(1010000000000001 )的异或运算,并将结果放入CRC寄存器; 重复步骤3和步骤4直到向右移动8次,处理第一个字节的8位。 重复步骤2到步骤5,处理下一个字节; 在处理完所有字节数据后,将得到的CRC寄存器的值与高8位和低8位数据进行替换,得到CRC校验码。 运算手稿,运算数据帧,从轮毂电机的手册中剪切出来的东西。 我会把运算的结果作为图像给你看。 剪了很长的照片,但是很遗憾不能上传。 红色字体是向右移动的数据,蓝色字体表示每当移动的数据为1时,CRC和A001都会进行异或运算。

可以在网上搜索相关的在线计算程序。 例如,如下所示,计算结果与上面一致。

c语言实现

到目前为止,有关ModBus CRC16校验码的学习笔记已经记住了。 请对大家的学习有帮助。

powerbus原理图,modbus通讯协议CRC modbus通讯协议和串口协议,modbus协议规范