CRC 自動付加(オートフィル)

CRC とは

CRC(巡回冗長検査:Cyclic Redundancy Check)は、デジタルデータの誤り検出に用いられる技術です。チェックサムの一種であり、ファイルやデータセットの内容に基づいて固定長の値を生成します。
利用面から見ると、CRC は生のコンピュータデータへの偶発的な変更を検出するためのハッシュ関数であり、デジタル通信ネットワークやハードディスクなどのストレージ機器で広く利用されています。
この技術は 1961 年に W. Wesley Peterson によって考案され、その後 CCITT(Comité Consultatif International Telegraphique et Telephonique)によって発展しました。CRC はハードウェア実装が比較的容易で、数学的な解析もしやすい方式です。 一般的な伝送エラーの検出に広く使われている優れた手法のひとつです。
CRC は 2 進数の除算に基づいており、「多項式コードチェックサム」とも呼ばれます。

データ通信における CRC の重要性

受信側は、チェックビットとデータが一致しているかどうかを確認することで、伝送中にエラーが発生したかどうかをある程度の確率で判断できます。 エラーが検出された場合、受信側は送信元に「否定応答(NAK)」を送り、メッセージの再送信を要求します。

SerialTool の CRC 自動付加・自動補完

シリアルポート経由で手動コマンドを送信する場合、正しい通信を行うために CRC を付加する必要があることがよくあります。CRC が正しくないと、受信側はフレームを受け付けない可能性があります。
すべてのパケットについて CRC を手計算し、正確にコピー&ペーストするのは非常に手間がかかり、ミスの原因にもなります。
SerialTool は、送信時に幅広い種類の CRC から選択して自動計算できます。
CRC オプションを有効にすると、選択された CRC バイトが送信パケットの末尾に自動的に追加されます。

SerialTool のバイト順反転

システムによっては、エンディアンの仕様に合わせるために CRC バイトの順序を反転させる必要があります。
SerialTool では、受信側の仕様に応じて CRC バイトを逆順で送信することも可能です。

SerialTool の Modbus CRC 自動付加

Modbus は、産業用通信プロトコルで一般的に使用される CRC 方式のひとつです。
Modbus はマスタ・スレーブ方式のリクエスト/レスポンスプロトコルです。マスタが常に要求を発行し、それに対してスレーブが応答するというペアで通信が行われます。通常、マスタは HMI や SCADA システムであり、スレーブはセンサーや PLC、PAC などです。要求と応答の内容、およびそれらが運ばれるネットワーク層は、Modbus プロトコルの各レイヤによって定義されています。
SerialTool は Modbus を含む多くの CRC 計算方式をサポートしています。
送受信の例:
SEND REQUEST: Modbus ASCII 3A 30 32 30 31 30 30 32 30 30 30 30 43 44 31 0D 0A + CRC
READ RESPONSE: Modbus ASCII 3A 30 32 30 31 30 32 38 30 30 32 37 39 0D 0A + CRC

Modbus の送信と受信の例。

SerialTool が対応する CRC タイプ

CRC-8

  1. CRC 8
  2. CRC 8 EBU
  3. CRC 8 HDLC
  4. CRC 8 MAXIM
  5. CRC 8 WCDMA
  6. CRC 8 LTE
CRC-16
  1. CRC 16 ARC
  2. CRC 16 BUYPASS
  3. CRC 16 CCITTFALSE
  4. CRC 16 MCRF4XX
  5. CRC 16 CDMA2000
  6. CRC 16 CMS
  7. CRC 16 DECTR
  8. CRC 16 DECTX
  9. CRC 16 DNP
  10. CRC 16 GENIBUS
  11. CRC 16 KERMIT
  12. CRC 16 MAXIM
  13. CRC 16 MODBUS
  14. CRC 16 T10DIF
  15. CRC 16 USB
  16. CRC 16 X25
  17. CRC 16 XMODEM
CRC-24
  1. CRC 24
  2. CRC 24 FLEXRAYA
  3. CRC 24 FLEXRAYB
  4. CRC 24 LTEA
  5. CRC 24 LTEB
  6. CRC 24 NRC
CRC-32
  1. CRC 32
  2. CRC 32 BZIP2
  3. CRC 32 C
  4. CRC 32 MPEG2
  5. CRC 32 POSIX
  6. CRC 32 Q