上位机须按照MODBUS协议的命令格式发送数据(包括计算的CRC值),从机才能正确辨识数据。若无CRC值,从机将返回含有错误号的应答包,不会得到正确结果。标准的做法,发送前计算CRC值并一起发送,接收后也计算CRC值并与接收的校验码对比是否相等,以辨别数据是否准确。 计算CRC有相应的方法和代码,我觉得很繁琐,倒不如用现成的计算器算算,在线的比较好用,不错。
在线计算网址一: http://www.ip33.com/crc.html
比如要发送的命令是:15 03 00 31 00 01
这里使用的参数模型是:CRC 16/modbus,点击计算得到CRC值:D1D6 H
注意:当放置 CRC 值于命令时,高低字节必须交换 ,所以,报文中CRC