古いマシン (PLC) がデータ交換でチェック バイトを生成する方法を理解しようとしていますが、何がどのように行われるのか、またはどのようなアルゴリズムが使用されているのかわかりません。
私はマシンに関する非常にまばらなドキュメントを持っています.私はすでに通常のcrc、ccitt crc、xmodem crcタイプなどのいくつかのアルゴリズムを試しています...そして誰も正しい結果を与えられていません.
メッセージは次のように形成されます: M*NNNNNNwwSSdd
どこ:
M* - 固定
NNNNNN - N は数字またはスペースです
ww - w も数字またはスペース
SS - S は文字またはスペース
dd - da 番号またはスペース
一部の例では、次のバイト チェックが生成されます (ここで、バイト '×' は実際にはスペース文字 ' ' です。この文字は、スペースの数を簡単に識別できるようにするためだけに使用します)。
あ:
- M*614976××××12 -> a
- M*615138×××××× -> a
b:
- M*615028××××12 -> b
- M*615108×××××× -> b
c:
- M*614933×××××× -> c
- M*614956××××12 -> c
日:
- M*614934×××××× -> d
- M*614951××××12 -> d
e:
- M*614942×××××× -> e
- M*615079×××××× -> e
f:
- M*614719××××12 -> f
- M*614936×××××× -> f
g:
- M*614718××××12 -> g
- M*614937×××××× -> g
時間:
- M*614727×××××× -> h
- M*614980××××12 -> h
私:
- M*614734××××12 -> 私
- M*614939×××××× -> 私
- M*×××××××××××× -> i
z:
- M*××××××××SC12 -> z
じ:
- M*××××××××××12 -> j
y:
- M*××××××××SC×× -> y
組み合わせは他にもありますが、これで十分です。
もう 1 つの特殊性は、チェック バイトの結果が定義された範囲 (char 0x60 から 0x7F まで) にのみ存在することです (マシンが OK を返すまでこの範囲でループするため、現在のソリューションは機能しています)。
私の質問は、このチェックバイトがどのように計算されるか知っていますか? PLC マシンでデータの整合性を計算するためのより単純なアルゴリズムを教えてください。結果のバイト チェックが 1 文字だけであることは、より単純である必要があります。
ありがとう