我有一台带有封闭协议的机器和来自同一厂家的另一台设备“网关Modbus”。此网关将此协议转换为RS-485 Modbus.
当我向网关发送命令包(modbus函数16)时,网关向机器发送(转换)特定的数据包,当我通过简单的UART通信注入该数据包时,机器也可以理解和更改值。我用一些克隆的命令创建了一个列表,但是我需要知道CRC/checksum/etc是如何计算(我认为)来创建自定义数据包的。
我已经使用了RevEng工具(https://reveng.sourceforge.io/)和CRCcalculator (https://crccalc.com/),试图找到一些常见的克隆数据包的crc算法,但都没有工作。
一些克隆的数据包,其中2个最后字节是CRC/etc。在这个数据包中,我将温度值从0x11更改为0x15,最后2个字节也改变了(可能是crc/checksum/etc):
9A56F1FE0EB9001100000100641C
9A56F1FE0EB90012000001006720
9A56F1FE0EB90013000001006620
9A56F1FE0EB9001400000100611C
9A56F1FE0EB9001500000100601CRevEng输出:
./reveng -w 16 -l -s 9A56F1FE0EB9001100000100641C 9A56F1FE0EB90012000001006720 9A56F1FE0EB90013000001006620 9A56F1FE0EB9001400000100611C 9A56F1FE0EB9001500000100601C
./reveng: no models found有人能帮我吗?
发布于 2022-04-29 20:41:58
这不是CRC。第二到最后的字节是前几个字节的独占之和.我不知道最后一个字节是什么,但由于它在示例中只接受两个不同的值,所以它似乎不是检查值的一部分。或者如果是的话,这是一个非常无效的检查值算法。
https://stackoverflow.com/questions/72060375
复制相似问题