Fortgeschritten

Tag-Kodierung & EPC-Speicher

Meistern Sie die Tag-Speicherarchitektur und GS1-Kodierung für die Supply-Chain-Integration

Die 4 Speicherbänke

Jeder EPC Gen2-Tag verfügt über genau 4 Speicherbänke, die jeweils einem bestimmten Zweck dienen. Das Verständnis dieser Struktur ist für die Kodierung, das Auslesen und die Sicherung Ihrer Tags unerlässlich.

Bank 00 (Reserved): Enthält das 32-Bit Kill-Passwort und das 32-Bit Access-Passwort. Die Standardwerte sind 0x00000000. Das Kill-Passwort deaktiviert den Tag beim Senden dauerhaft — irreversibel. Das Access-Passwort sperrt Speicherbänke, um unbefugte Schreibvorgänge zu verhindern.

Bank 01 (EPC): Enthält StoredCRC (16 Bit, automatisch berechnet), StoredPC/Protocol Control (16 Bit, gibt EPC-Länge und Tag-Funktionen an) und den EPC-Wert selbst — typischerweise 96 Bit (12 Byte) für SGTIN-96. Einige Tags unterstützen 128-Bit- oder sogar 496-Bit-EPCs.

Bank 10 (TID): Werkseitig programmierter Tag Identifier. Enthält den Code des Chipherstellers, die Modellnummer und eine eindeutige Seriennummer. Diese Bank ist schreibgeschützt und kann niemals geändert werden — was sie für den Fälschungsschutz und die Tag-Authentifizierung unentbehrlich macht.

Bank 11 (User): Optionaler Zusatzspeicher. Die Größe variiert je nach Chip: NXP UCODE 9 hat 0 Bit (kein User-Speicher), Quanray QStar-7U hat 512 Bit (64 Byte). Verwenden Sie ihn für Chargennummern, Inspektionsdaten, Temperaturschwellenwerte oder Wartungsprotokolle. Prüfen Sie vor dem Schreiben immer die verfügbare Kapazität.

SGTIN-96-Kodierung — Schritt für Schritt

SGTIN-96 ist das am weitesten verbreitete EPC-Schema. Es kodiert eine GTIN-14 (Ihren Produkt-Barcode) plus eine eindeutige Seriennummer in genau 96 Bit (12 Byte). Dies ermöglicht bis zu 274 Milliarden eindeutige Seriennummern pro Produkttyp.

Die 96-Bit-Struktur: Header (8 Bit, immer 0x30 für SGTIN-96) → Filter (3 Bit: 0=alle, 1=POS, 2=Versandeinheit, 3=reserviert, 4=Innenverpackung, 5=reserviert, 6=Ladeeinheit, 7=Komponente) → Partition (3 Bit: definiert, wie die Bits zwischen Company Prefix und Item Reference aufgeteilt werden) → Company Prefix (20–40 Bit) → Item Reference (4–24 Bit) → Serial Number (38 Bit).

Der Partitionswert (0–6) bestimmt die Länge des Firmenpräfixes: P=0 → 40-Bit-Präfix (12 Stellen), P=1 → 37-Bit (11 Stellen), P=2 → 34-Bit (10 Stellen), P=3 → 30-Bit (9 Stellen), P=4 → 27-Bit (8 Stellen), P=5 → 24-Bit (7 Stellen), P=6 → 20-Bit (6 Stellen). Die Länge Ihres GS1-Firmenpräfixes bestimmt, welcher Partitionswert verwendet werden muss.

💡

Nutzen Sie das Nextwaves TDS RFID Converter Tool unter /tools/tds-rfid-converter, um SGTIN-96-Werte interaktiv zu kodieren und zu dekodieren. Geben Sie Ihre GTIN-14 + Seriennummer ein und erhalten Sie sofort den Hex-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

Andere EPC-Schemata

Über SGTIN-96 hinaus definiert GS1 mehrere andere 96-Bit-EPC-Schemata für verschiedene Identifikatoren in der Lieferkette. Jedes verfügt über ein eigenes Header-Byte.

Lesen und Schreiben von Tag-Speicher

Das Lesen von Tags während der Inventur erfolgt passiv — das Lesegerät sendet eine Abfrage und die Tags antworten mit ihrem EPC aus Bank 01. Sie können jedoch auch explizit jede Speicherbank auslesen, indem Sie einen READ-Befehl mit der Banknummer, dem Wort-Offset und der Wortanzahl senden.

Das Schreiben auf Tags erfordert mehr Präzision. Der Tag muss singuliert werden (nur ein Tag antwortet), und Schreibvorgänge erfolgen wortweise (16 Bit). Ein vollständiger 96-Bit-EPC-Schreibvorgang erfordert 6 aufeinanderfolgende Wort-Schreibvorgänge. Jeder Schreibvorgang dauert 10–20 ms, sodass die Kodierung eines einzelnen Tags allein für die EPC-Daten 60–120 ms in Anspruch nimmt.

Häufige Schreibfehler: Tag zu weit von der Antenne entfernt (benötigt ein stärkeres Signal zum Schreiben als zum Lesen — Tag in einen Umkreis von 1 m bringen). Mehrere Tags im Feld (Singulierung fehlgeschlagen — Ziel-Tag isolieren). Tag-Speicher gesperrt (Zugriffspasswort erforderlich). Schreibprüfung fehlgeschlagen (erneut versuchen oder Tag ist möglicherweise defekt — typische Fehlerrate liegt bei 1–3 pro 10.000).

💡

Best Practice: Nach dem Schreiben immer verifizieren, indem die Daten zurückgelesen und verglichen werden. Ein Schreibbefehl kann erfolgreich sein, aber in seltenen Fällen benachbarte Bits beschädigen. Eine Read-after-Write-Verifizierung erkennt diese Probleme.

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]

Tag-Sicherheit und Passwörter

EPC Gen2-Tags unterstützen zwei 32-Bit-Passwörter für die Sicherheit. Das Access-Passwort sperrt bestimmte Speicherbänke – sobald es gesetzt ist, erfordert diese Bank das Passwort vor jedem Lese- oder Schreibvorgang. Das Kill-Passwort deaktiviert den Tag dauerhaft, wenn es übertragen wird – ein irreversibler Vorgang, der primär für den Datenschutz der Verbraucher im Einzelhandel eingesetzt wird (Zerstörung des Tags nach dem Bezahlen).

Sicherheits-Best-Practices: Verwenden Sie in der Produktion niemals das Standard-Passwort aus lauter Nullen (0x00000000) – es bietet keinerlei Sicherheit. Generieren Sie eindeutige Passwörter pro Tag-Charge oder nutzen Sie Ihr Unternehmenspräfix als Seed. Speichern Sie Passwörter in Ihrem Backend-System, niemals auf dem Tag selbst (der Passwortspeicher kann ausgelesen werden, wenn der Tag entsperrt ist). Sperren Sie die Passwortbänke nach der Programmierung. Erwägen Sie den Untraceable-Modus (verfügbar auf neueren Chips), der die TID verbirgt und den EPC reduziert, was Privatsphäre bietet, ohne den Tag zu zerstören.

⚠️

Der Kill-Befehl ist dauerhaft und irreversibel. Es gibt kein Rückgängigmachen. Sobald ein Tag zerstört wurde, kann er nie wieder auf ein Lesegerät reagieren. Implementieren Sie in Ihrer Software immer eine Verifizierung des Kill-Passworts und verlangen Sie eine Autorisierung durch einen Manager, bevor Sie Kill-Befehle ausführen.