ModbusプロトコルのCRCチェックは、Modbusデータパケットの完全性を検証するために使用されるチェック方法であり、データ転送中のエラーやデータ改ざんを効果的に防止することができます。Modbusプロトコルで使用されるCRCチェックは多項式除算方式を採用しており、以下のように計算されます。
- まず、Modbusデータパケット内のすべてのバイトを順番にバイト配列にします。
- 次に、このバイト配列のすべてのバイトをCRC計算関数に入れて、CRCチェック値を計算します。
- 計算されたCRCチェック値は、Modbusデータパケットの最後に追加され、データの完全性を検証します。
CRCチェック値を計算する具体的な手順は次のとおりです。
- 16ビットレジスタの初期値を0 x FFFFに設定します。
- バイト配列の各バイトに対して次の操作を行います。
- このバイトの値を0 x FFと排他的ORにします。
- 上記の結果を16ビットレジスタの下位8ビットに対して排他的和演算して、新しい16ビットレジスタの値を得ます。
- 新しい16ビットレジスタの値を8回サイクルします。各サイクル:
- レジスタの最上位ビットが1の場合、レジスタを1ビット左にシフトし、0 x A 001に対して排他的ORを行います。
- レジスタの最上位ビットが0の場合、レジスタを1ビット左にシフトします。
- 結果として得られる16ビットレジスタの値がCRCチェック値となります。
CRCチェック値を計算する場合、バイトの順序はModbusプロトコルによって規定される順序に従う必要があり、一般的には低位から高位へと順次に配列されることに留意されたい。また、CRCチェック値の付加方法もModbusプロトコルで規定されたフォーマットに従う必要があります。
CRCオンライン試験の一部をダウンロードしてください。
http://www.ip33.com/crc.html
https://www.23bei.com/tool/232.html
难道ではない右移吗