末尾が含まれるかを決める
計算は入力の全バイトを対象にします。検証は最後の2バイトだけを取り出して残りを計算します。CRCの有無を推測しないので、入力範囲を明示できます。サンプルは現在のモードと順序に合わせてプレビューされます。
シリアルフレームの確認
CRCを除くバイト列から計算するか、末尾2バイトを含むフレームを検証します。
完全なバイト対を空白、改行、カンマで区切れます。0xは1バイトにのみ付けられます。
処理はこのブラウザータブ内で完結し、入力を送信・保存しません。
幅16 · 多項式8005(反射A001)· 初期値FFFF · 入出力反射true · 最終XOR 0000
CRCの一致は機能コード、レジスターや装置通信を検証しません。
バイトを入力するかサンプルを読み込んでください。
ログのCDC5と受信バイトのC5 CDは、同じ結果を別の順序で表示している場合があります。Modbus CRC計算では数値、下位バイト、上位バイトを分けて表示するため、プログラムを修正する前に比較対象をそろえられます。
一般的なCRC計算機と異なり、ここでは1つのRTUフレームを扱います。既存のチェックサムがある場合は検証モードを選択してください。改行はバイトの区切りであり、複数フレームを自動で分割する機能ではありません。
Modbus CRC計算で01 03 00 00 00 0Aを処理すると、数値はCDC5、標準の末尾はC5 CDになります。上位先行へ切り替えても、アドレスやデータの順番は変わりません。変更対象はCRCの2バイトだけです。
検証結果には受信した末尾と期待する末尾の両方が残ります。再構成したフレームは別の出力として表示されるため、原因を調べる途中で元のキャプチャを上書きしてしまうことがありません。
計算は入力の全バイトを対象にします。検証は最後の2バイトだけを取り出して残りを計算します。CRCの有無を推測しないので、入力範囲を明示できます。サンプルは現在のモードと順序に合わせてプレビューされます。
Modbus RTUではCRCの下位バイトが先です。これはレジスター値の並びとは別の規則です。上位先行は診断専用で、一致しても非標準と表示します。上下の値が同じ場合、順序を交換しても区別できません。
自動計算は変更後350ミリ秒で実行します。無効にするとボタンまたはCtrl/Cmd+Enterで実行できます。入力や選択を変えた直後は古い結果をコピーできません。サンプルとクリアは適用前に確認でき、1回だけ元に戻せます。
CRC-16/MODBUSの幅は16、多項式は8005、反射形はA001、初期値はFFFFです。入力と出力を反射し、最終XORは0000。31から39までのバイト列のチェック値は4B37です。別の変種に切り替わる設定はありません。
連続した偶数桁、空白、改行、カンマ区切りに対応します。0x接頭辞は1バイトにのみ使用できます。奇数桁や不正文字は行と列を示して拒否し、ログの余分な文字を勝手に除去しません。
数値、上下のバイト、期待する末尾、完全なフレームを表示します。検証では末尾2バイトを受信値として比較します。不一致でも計算自体は完了しているため、調査用レポートを保存できます。
CRCバイトとフレームは個別にコピーできます。JSONにはモード、順序、パラメーター、計算対象、受信値、期待値と一致結果が含まれます。四桁の値だけを共有したときに失われる前提も確認できます。
CRCは通信中の偶発的な誤りを見つけるための仕組みです。送信者の認証や悪意ある改変への耐性は保証しません。値が一致しても、メッセージの出所や内容を信頼できるという意味にはなりません。
通信仕様に記載された完全なモデルを選びます。16ビットという幅だけでは不十分です。本ページはMODBUSの多項式、初期値、反射と最終XORを固定し、確認できるよう表示しています。
最初に対象バイト、既存CRCの混入、表示順序を確認してください。CDC5という数値とC5 CDという送信列は矛盾しません。アルゴリズムの変種が同じかも確認し、フレーム全体を反転して合わせないでください。
主な違いは多項式や初期値などのモデルです。同じ幅でも結果は交換できません。MODBUSは多項式8005と初期値FFFFを使います。CCITTという呼び方には複数の変種があるため、個々の設定を比較する必要があります。
実際のバイトを16進数で入力できます。01は値が1の単一バイトであり、文字0と1の符号化ではありません。ファイル読込みや文字コード変換はなく、単一RTUフレームの長さ制限が適用されます。
解決しませんでしたか?