シリアルフレームの確認

Modbus CRC計算

CRCを除くバイト列から計算するか、末尾2バイトを含むフレームを検証します。

Modbus CRC計算

フレームのバイト(16進数)

完全なバイト対を空白、改行、カンマで区切れます。0xは1バイトにのみ付けられます。

結果

処理はこのブラウザータブ内で完結し、入力を送信・保存しません。

オプション

固定CRC-16/MODBUSパラメーター

幅16 · 多項式8005(反射A001)· 初期値FFFF · 入出力反射true · 最終XOR 0000

CRCの一致は機能コード、レジスターや装置通信を検証しません。

バイトを入力するかサンプルを読み込んでください。

ログのCDC5と受信バイトのC5 CDは、同じ結果を別の順序で表示している場合があります。Modbus CRC計算では数値、下位バイト、上位バイトを分けて表示するため、プログラムを修正する前に比較対象をそろえられます。

一般的なCRC計算機と異なり、ここでは1つのRTUフレームを扱います。既存のチェックサムがある場合は検証モードを選択してください。改行はバイトの区切りであり、複数フレームを自動で分割する機能ではありません。

Modbus CRC計算で確認できること

数値と末尾バイトを区別する

Modbus CRC計算で01 03 00 00 00 0Aを処理すると、数値はCDC5、標準の末尾はC5 CDになります。上位先行へ切り替えても、アドレスやデータの順番は変わりません。変更対象はCRCの2バイトだけです。

色の異なるCRCの2バイトが数値の順序から下位先行へ並び替わり、フレーム末尾に付加される図。

不一致の受信データを残す

検証結果には受信した末尾と期待する末尾の両方が残ります。再構成したフレームは別の出力として表示されるため、原因を調べる途中で元のキャプチャを上書きしてしまうことがありません。

受信した末尾と再計算した末尾を並べ、異なる1バイトを強調した図。

計算範囲と送信順序をそろえる

01

末尾が含まれるかを決める

計算は入力の全バイトを対象にします。検証は最後の2バイトだけを取り出して残りを計算します。CRCの有無を推測しないので、入力範囲を明示できます。サンプルは現在のモードと順序に合わせてプレビューされます。

02

下位先行を基準に比較する

Modbus RTUではCRCの下位バイトが先です。これはレジスター値の並びとは別の規則です。上位先行は診断専用で、一致しても非標準と表示します。上下の値が同じ場合、順序を交換しても区別できません。

03

更新と取り消しのタイミングを知る

自動計算は変更後350ミリ秒で実行します。無効にするとボタンまたはCtrl/Cmd+Enterで実行できます。入力や選択を変えた直後は古い結果をコピーできません。サンプルとクリアは適用前に確認でき、1回だけ元に戻せます。

数値だけでは分からない情報

固定されたアルゴリズム

CRC-16/MODBUSの幅は16、多項式は8005、反射形はA001、初期値はFFFFです。入力と出力を反射し、最終XORは0000。31から39までのバイト列のチェック値は4B37です。別の変種に切り替わる設定はありません。

16進数の入力を厳密に読む

連続した偶数桁、空白、改行、カンマ区切りに対応します。0x接頭辞は1バイトにのみ使用できます。奇数桁や不正文字は行と列を示して拒否し、ログの余分な文字を勝手に除去しません。

受信値を分離した比較

数値、上下のバイト、期待する末尾、完全なフレームを表示します。検証では末尾2バイトを受信値として比較します。不一致でも計算自体は完了しているため、調査用レポートを保存できます。

条件も残るレポート

CRCバイトとフレームは個別にコピーできます。JSONにはモード、順序、パラメーター、計算対象、受信値、期待値と一致結果が含まれます。四桁の値だけを共有したときに失われる前提も確認できます。

一致しても保証されないこと

1フレーム分の長さ
計算は2〜254バイト、検証はCRC込みで4〜256バイトです。原文は4096文字まで。大きなバイナリファイルや複数フレームの一括処理には使えません。改行から通信上のフレーム境界は判断しません。
装置やコマンドは検証しない
CRCの一致は機能コード、レジスター範囲、応答や配線の正しさを意味しません。装置への接続や送信は行いません。偶発的な誤りの検出と、送信者の認証や意図的な改変への保護は異なります。
RTU以外の検査方式は対象外
Modbus ASCIIのLRCやTCPのMBAPヘッダーは生成しません。多項式、初期値、反射設定も変更できません。別のCRCモデルを調べる場合は、汎用のチェックサムツールで完全なパラメーターを指定してください。
自動判定や修復はしない
計算モードで既存のCRCらしい末尾を除去することはありません。検証で一致するまで順序を交換することもありません。再構成結果は右側に表示し、入力欄へ追加したり書き戻したりしません。
入力は明示的なバイト列のみ
ファイル、URL、C配列やキャプチャログの取込みはありません。オフセット、括弧、コメントは自分で除去してください。履歴は永続保存されず、置換プレビューは文字数で変更範囲を示します。

Modbus CRC計算のよくある質問

CRCと暗号学的ハッシュはどう違いますか?

CRCは通信中の偶発的な誤りを見つけるための仕組みです。送信者の認証や悪意ある改変への耐性は保証しません。値が一致しても、メッセージの出所や内容を信頼できるという意味にはなりません。

用途に合うCRCの種類はどう選びますか?

通信仕様に記載された完全なモデルを選びます。16ビットという幅だけでは不十分です。本ページはMODBUSの多項式、初期値、反射と最終XORを固定し、確認できるよう表示しています。

期待したCRC値と一致しない原因は何ですか?

最初に対象バイト、既存CRCの混入、表示順序を確認してください。CDC5という数値とC5 CDという送信列は矛盾しません。アルゴリズムの変種が同じかも確認し、フレーム全体を反転して合わせないでください。

MODBUSとCCITTのCRC-16は何が違いますか?

主な違いは多項式や初期値などのモデルです。同じ幅でも結果は交換できません。MODBUSは多項式8005と初期値FFFFを使います。CCITTという呼び方には複数の変種があるため、個々の設定を比較する必要があります。

バイナリデータでもCRCを求められますか?

実際のバイトを16進数で入力できます。01は値が1の単一バイトであり、文字0と1の符号化ではありません。ファイル読込みや文字コード変換はなく、単一RTUフレームの長さ制限が適用されます。

解決しませんでしたか?

次のフレームを確認する

Modbus CRC計算で次の受信フレームを確認し、受信した末尾を残したまま送信プログラムの結果と比較してください。