PLC检查字节未知

时间:2011-11-08 12:26:15

标签: algorithm hash crc plc

我正在尝试了解旧机器(PLC)如何在其数据交换中生成校验字节,但我无法确定是做什么以及如何做或使用何种算法。

我有关于机器的非常稀疏的文档,我已经尝试了一些算法,如普通的crc,ccitt crc,xmodem crc类型......并且没有人给出正确的结果。

消息形成如下: M * NNNNNNwwSSdd

其中:

M * - 已修复

NNNNNN - N是数字或空格

ww - w也是数字或空格

SS - S是字符或空格

dd - d数字或空格

一些示例生成以下字节检查(其中de byte'×'实际上是空格char'',我只使用此char来更容易识别空格数):

一个:

  • M * 614976××××12 - >一个
  • M * 615138×××××× - >一个

B:

  • M * 615028××××12 - > B'/ LI>
  • M * 615108×××××× - > B'/ LI>

C:

  • M * 614933×××××× - > ç
  • M * 614956××××12 - > ç

d

  • M * 614934×××××× - > d
  • M * 614951××××12 - > d

E:

  • M * 614942×××××× - > ë
  • M * 615079×××××× - > ë

F:

  • M * 614719××××12 - > ˚F
  • M * 614936×××××× - > ˚F

G:

  • M * 614718××××12 - >克
  • M * 614937×××××× - >克

H:

  • M * 614727×××××× - > ħ
  • M * 614980××××12 - > ħ

I:

  • M * 614734××××12 - >我
  • M * 614939×××××× - >我
  • M *×××××××××××× - >我

Z:

  • M *××××××××SC12 - > ž

Y:

  • M *××××××××××12 - > Ĵ

Y:

  • M *××××××××SC×× - > ÿ

还有更多的组合,但这些组合就足够了。

另一个特殊之处是检查字节结果仅存在于定义的范围内 - 从字符0x60到0x7F而不再存在(当前解决方案正在工作,因为我在此范围内循环,直到机器给我一个确定)

所以我的问题是,你知道如何计算这个校验字节吗?你能指出一些更简单的算法来计算PLC机器中数据的完整性吗,结果字节检查只有一个字符必须更简单。

由于

1 个答案:

答案 0 :(得分:1)

在我看来,如果我把消息中的所有字符拼凑在一起,将它们视为ascii并用空格替换你的奇数准x,然后在0xe中xor,我得到校验和中的字符。至少我建议你构造一个表格,显示消息中所有字符的xor,以及校验和字符,写成十六进制。考虑到www.bttautomatyka.com.pl/pdf/HA466357.pdf中描述的块检查,这样的事情是合理的。

(我实际上已经编写了一个mod-2方程求解器,当它弹出时,它会寻找一个5位CRC!)