这个 2 字节 LRC/VRC 校验和是什么?

what is this 2-byte LRC/VRC checksum?

我正在尝试解释发送串行数据的旧(20 年)电子设备。消息为 HEX 格式,每条 22 字节。 20个字节是数据(我检查过它们根据特定功能而变化)最后2个字节是某种校验和。

以下是示例消息。

MESSAGE 1 : 16 16 16 16 02 FE 4E 8F 04 00 00 00 B0 83 7E 7C 7D 7F 7F 7F 7F SUM 75 FC MESSAGE 2 : 16 16 16 16 02 FE 4E 8F 04 00 00 00 B0 12 7E 7C 7D 7F 7F 7F 7F SUM E4 FA MESSAGE 3 : 16 16 16 16 02 FE 4E 8F 04 00 00 00 B0 94 7E 7C 7D 7F 7F 7F 7F SUM 62 FA MESSAGE 4 : 16 16 16 16 02 FE 4E 8F 04 00 00 00 B0 93 7E 7C 7D 7F 7F 7F 7F SUM 65 FC MESSAGE 5 : 16 16 16 16 02 FE 4E 8F 04 00 00 00 B0 92 7E 7C 7D 7F 7F 7F 7F SUM 64 FA MESSAGE 6 : 16 16 16 16 02 FE 4E 8F 04 00 00 00 B0 8C 7E 7C 7D 7F 7F 7F 7F SUM 7A 0A MESSAGE 7 (Special) : 16 16 16 16 02 FE 4E 50 SUM E2 80

我只更改了一个字节以便更容易检测 "checksum" 中的更改,我通过对数据字节进行异或确认 SUM 中的第一个字节是 LRC,但我无法解释第二个字节以及它是如何计算的(我试过 CheckSum8 Modulo 256 / CheckSum8 2s Complement 和 CRC-8)。

注:串口通讯是8位偶校验。

我认为在计算 "sum" 的第二个字节时应该考虑 "sum" 的第一个字节。请注意 "sum" 的更改字节和第一个字节的总和对于具有相同总和最后一个字节的所有行是如何相同的。例如。对于以 FC 结尾的行:83+75=93+65(十六进制)。所以,它应该是非常简单的东西,比如 sum 或类似的东西。事实上,从您提供的示例行来看,每行中的最后一个字节看起来只是所有前面字节(包括总和的第一个字节)加上 A8(当然都是模 256)的总和。不确定 A8 来自哪里。假设它是一种非零种子,这是很常见的事情。