xiaobaoXu 发表于 2024-10-11 12:15:57

Modbus效验问题

为什么如图效验判断哪里等于0

晓飛飛 发表于 2024-10-11 12:32:02

看看校验函数的实现过程,应该容易理解吧


xiaobaoXu 发表于 2024-10-11 12:34:30

晓飛飛 发表于 2024-10-11 12:32
看看校验函数的实现过程,应该容易理解吧

效验不是返回的是CRC16的值吗   为什么哪里却要和0判断呢

zhp 发表于 2024-10-11 14:09:02

本帖最后由 zhp 于 2024-10-11 14:13 编辑

xiaobaoXu 发表于 2024-10-11 12:34
效验不是返回的是CRC16的值吗   为什么哪里却要和0判断呢
Modebus/CRC16校验:
数据 12 34 56 78,CRC16校验为 107B



数据和CRC16一起再计算CRC16,整体的结果就为0000



所以校验一整包数据的CRC16是否正确,
就将整包数据(包括原始数据和原始数据的CRC16)一起进行CRC16计算
再看最终结果是否为0。如果为0,则表示原始数据的CRC16是正确的


需要注意两点:
1、MODBUS/CRC16是Little_Endian(小端)数据格式
2、上面的校验方法可能并不一定适用于其他多项式的CRC校验

llyymm 发表于 2024-10-11 19:44:22

没用过校验,这次也学到了{:5_320:}

xiaobaoXu 发表于 2024-10-11 22:09:44

zhp 发表于 2024-10-11 14:09
Modebus/CRC16校验:
数据 12 34 56 78,CRC16校验为 107B



哦哦感谢

小坤 发表于 2024-10-12 08:14:35

zhp 发表于 2024-10-11 14:09
Modebus/CRC16校验:
数据 12 34 56 78,CRC16校验为 107B



涨知识了,一般都是CRC的值比较判断
页: [1]
查看完整版本: Modbus效验问题