上級

タグエンコーディングとEPCメモリ

サプライチェーン統合のためのタグメモリアーキテクチャとGS1エンコーディングをマスターする

4つのメモリバンク

すべてのEPC Gen2タグには、それぞれ特定の目的を果たす4つのメモリバンクがあります。この構造を理解することは、タグのエンコーディング、読み取り、および保護に不可欠です。

バンク00(予約済み):32ビットのキルパスワードと32ビットのアクセスパスワードが含まれています。デフォルト値は0x00000000です。キルパスワードは、送信時にタグを永久的に無効にします(不可逆的)。アクセスパスワードは、不正な書き込みを防ぐためにメモリバンクをロックします。

バンク01(EPC):StoredCRC(16ビット、自動計算)、StoredPC/プロトコル制御(16ビット、EPCの長さとタグの機能を指示)、およびEPC値自体(通常はSGTIN-96の場合は96ビット(12バイト))が含まれています。一部のタグは、128ビットまたは496ビットのEPCをサポートしています。

バンク10(TID):工場でプログラムされたタグ識別子。チップメーカーコード、モデル番号、および一意のシリアル番号が含まれています。このバンクは読み取り専用であり、変更することはできません。これは、偽造防止とタグ認証に非常に役立ちます。

バンク11(ユーザー):オプションの追加ストレージ。サイズはチップによって異なります:NXP UCODE 9は0ビット(ユーザーメモリなし)、Quanray QStar-7Uは512ビット(64バイト)です。バッチ番号、検査日、温度しきい値、またはメンテナンス記録に使用します。書き込み前に、常に利用可能な容量を確認してください。

SGTIN-96エンコーディング. ステップバイステップ

SGTIN-96は、最も広く使用されているEPCスキームです。GTIN-14(製品バーコード)と一意のシリアル番号を正確に96ビット(12バイト)にエンコードします。これにより、製品タイプごとに最大2,740億の一意のシリアル番号を使用できます。

96ビット構造:ヘッダー(8ビット、SGTIN-96の場合は常に0x30)→ フィルター(3ビット:0=すべて、1=POS、2=フルケース、3=予約済み、4=インナーパック、5=予約済み、6=ユニットロード、7=コンポーネント)→ パーティション(3ビット:会社プレフィックスとアイテムリファレンスの間のビットの分割方法を定義)→ 会社プレフィックス(20〜40ビット)→ アイテムリファレンス(4〜24ビット)→ シリアル番号(38ビット)。

パーティション値(0〜6)は、会社プレフィックスの長さを決定します:P=0 → 40ビットプレフィックス(12桁)、P=1 → 37ビット(11桁)、P=2 → 34ビット(10桁)、P=3 → 30ビット(9桁)、P=4 → 27ビット(8桁)、P=5 → 24ビット(7桁)、P=6 → 20ビット(6桁)。GS1会社プレフィックスの長さによって、使用するパーティション値が決まります。

💡

Nextwaves TDS RFID Converterツール(/tools/tds-rfid-converter)を使用して、SGTIN-96の値をインタラクティブにエンコードおよびデコードします。GTIN-14 + シリアル番号を入力すると、16進数のEPCが即座に表示されます。

SGTIN-96 Bit Structure
┌────────┬──────┬─────┬──────────────┬──────────────┬──────────────┐
│ Header │Filter│Part │Company Prefix│Item Reference│   Serial     │
│ 8 bits │3 bits│3bits│  20-40 bits  │   4-24 bits  │   38 bits    │
│  0x30  │ 0-7  │ 0-6 │  GS1 prefix  │  product ref │  unique ID   │
└────────┴──────┴─────┴──────────────┴──────────────┴──────────────┘

Partition table (defines prefix/item bit allocation):
P=0: 40-bit prefix (12 digits)  P=4: 27-bit prefix (8 digits)
P=1: 37-bit prefix (11 digits)  P=5: 24-bit prefix (7 digits)
P=2: 34-bit prefix (10 digits)  P=6: 20-bit prefix (6 digits)
P=3: 30-bit prefix (9 digits)

Example: 3034257BF7194E4000001A85
  Header=0x30 Filter=1 Part=5 Prefix=0614141
  Item=812345 Serial=6789 → GTIN-14: 80614141123458

その他のEPCスキーム

SGTIN-96を超えて、GS1は、さまざまなサプライチェーン識別子に対して、他のいくつかの96ビットEPCスキームを定義しています。それぞれに独自のヘッダーバイトがあります。

タグメモリの読み取りと書き込み

在庫中のタグの読み取りはパッシブです。リーダーはクエリをブロードキャストし、タグはバンク01からEPCで応答します。ただし、バンク番号、ワードオフセット、およびワードカウントを使用してREADコマンドを送信することにより、任意のメモリバンクを明示的に読み取ることもできます。

タグへの書き込みには、より高い精度が必要です。タグはシングレーション(1つのタグのみが応答)する必要があり、書き込みは一度に1ワード(16ビット)で行われます。完全な96ビットEPCの書き込みには、6回の連続したワード書き込みが必要です。各書き込みには10〜20msかかるため、単一のタグをエンコードするには、EPCデータだけで60〜120msかかります。

一般的な書き込みの失敗:アンテナからタグが遠すぎる(読み取りよりも書き込みの方が強い信号が必要 - タグを1m以内に近づけてください)。フィールド内に複数のタグが存在する(シングレーションに失敗 - 対象のタグを分離してください)。タグメモリがロックされている(アクセスパスワードが必要です)。書き込み検証に失敗しました(再試行するか、タグに欠陥がある可能性があります - 典型的な欠陥率は10,000個あたり1〜3です)。

💡

ベストプラクティス:書き込み後、常にデータを読み戻して比較することにより検証します。書き込みコマンドは成功する可能性がありますが、まれに隣接するビットが破損する可能性があります。書き込み後の検証は、これらの問題をキャッチします。

Write EPC — Nextwaves NRN Protocol
TX → 5A 00 01 02 11 00 0C [EPC_12_BYTES] [CRC16]

Write per 16-bit word: 10-20ms
Full 96-bit EPC = 6 words = 60-120ms total

With access password:
TX → 5A 00 01 02 11 00 10 [PWD_4B] [EPC_12B] [CRC16]

タグのセキュリティとパスワード

EPC Gen2タグは、セキュリティのために2つの32ビットパスワードをサポートしています。アクセスパスワードは、特定のメモリバンクをロックします。一度設定すると、そのバンクは読み取りまたは書き込み操作の前にパスワードを要求します。キルパスワードは、送信時にタグを永久に無効にします。これは、主に小売業における消費者のプライバシーのために使用される不可逆的な操作です(チェックアウト後にタグを破棄する)。

セキュリティのベストプラクティス:本番環境では、デフォルトのオールゼロパスワード(0x00000000)を絶対に使用しないでください。これはセキュリティを提供しません。タグバッチごとに一意のパスワードを生成するか、会社のプレフィックスをシードとして使用します。パスワードはタグ自体ではなく、バックエンドシステムに保存します(タグがロック解除されている場合、パスワードメモリは読み取ることができます)。プログラミング後にパスワードバンクをロックします。TIDを隠し、EPCを削減するUntraceableモード(新しいチップで利用可能)を検討してください。これにより、タグを破壊することなくプライバシーが提供されます。

⚠️

キルコマンドは永続的で不可逆です。元に戻すことはできません。タグがキルされると、二度といかなるリーダーにも応答できなくなります。キルパスワードの検証をソフトウェアに必ず実装し、キルコマンドを実行する前にマネージャーの承認を要求してください。