Napredni

Kodiranje taga i EPC memorija

Ovladajte arhitekturom memorije tagova i GS1 kodiranjem za integraciju lanca snabdevanja

4 Memorijske Banke

Svaki EPC Gen2 tag ima tačno 4 memorijske banke, od kojih svaka služi određenoj svrsi. Razumevanje ove strukture je ključno za kodiranje, čitanje i obezbeđivanje vaših tagova.

Banka 00 (Reserved): Sadrži 32-bitnu Kill lozinku i 32-bitnu Access lozinku. Podrazumevane vrednosti su 0x00000000. Kill lozinka trajno onemogućava tag kada se pošalje. Nepovratno. Access lozinka zaključava memorijske banke kako bi se sprečilo neovlašćeno pisanje.

Banka 01 (EPC): Sadrži StoredCRC (16 bita, automatski izračunato), StoredPC/Protocol Control (16 bita, označava dužinu EPC-a i mogućnosti taga) i samu EPC vrednost. Obično 96 bita (12 bajtova) za SGTIN-96. Neki tagovi podržavaju 128-bitne ili čak 496-bitne EPC-ove.

Banka 10 (TID): Fabrički programiran Tag Identifier. Sadrži kod proizvođača čipa, broj modela i jedinstveni serijski broj. Ova banka je samo za čitanje i nikada se ne može promeniti. Što je čini neprocenjivom za borbu protiv falsifikovanja i autentifikaciju tagova.

Banka 11 (User): Opcionalno dodatno skladište. Veličina varira u zavisnosti od čipa: NXP UCODE 9 ima 0 bita (nema korisničke memorije), Quanray QStar-7U ima 512 bita (64 bajta). Koristite je za brojeve serija, datume inspekcije, temperaturne pragove ili zapise o održavanju. Uvek proverite dostupan kapacitet pre pisanja.

SGTIN-96 kodiranje. Korak po korak

SGTIN-96 je najčešće korišćena EPC šema. Kodira GTIN-14 (vaš bar kod proizvoda) plus jedinstveni serijski broj u tačno 96 bita (12 bajtova). Ovo omogućava do 274 milijarde jedinstvenih serijskih brojeva po tipu proizvoda.

96-bitna struktura: Zaglavlje (8 bita, uvek 0x30 za SGTIN-96) → Filter (3 bita: 0=sve, 1=POS, 2=pun slučaj, 3=rezervisano, 4=unutrašnje pakovanje, 5=rezervisano, 6=jedinično opterećenje, 7=komponenta) → Particija (3 bita: definiše kako se bitovi dele između prefiksa kompanije i reference artikla) → Prefiks kompanije (20–40 bita) → Referenca artikla (4–24 bita) → Serijski broj (38 bita).

Vrednost particije (0–6) određuje dužinu prefiksa kompanije: P=0 → 40-bitni prefiks (12 cifara), P=1 → 37-bitni (11 cifara), P=2 → 34-bitni (10 cifara), P=3 → 30-bitni (9 cifara), P=4 → 27-bitni (8 cifara), P=5 → 24-bitni (7 cifara), P=6 → 20-bitni (6 cifara). Dužina prefiksa vaše GS1 kompanije određuje koju vrednost particije treba koristiti.

💡

Koristite Nextwaves TDS RFID Converter alat na /tools/tds-rfid-converter da biste interaktivno kodirali i dekodirali SGTIN-96 vrednosti. Unesite svoj GTIN-14 + serijski broj i odmah dobijte heksadecimalni 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

Druge EPC Šeme

Pored SGTIN-96, GS1 definiše nekoliko drugih 96-bitnih EPC šema za različite identifikatore lanca snabdevanja. Svaka ima svoj bajt zaglavlja.

Čitanje i pisanje memorije taga

Čitanje tagova tokom inventara je pasivno. Čitač emituje upit i tagovi odgovaraju sa svojim EPC-om iz Banke 01. Ali takođe možete eksplicitno čitati bilo koju memorijsku banku slanjem komande READ sa brojem banke, ofsetom reči i brojem reči.

Pisanje na tagove zahteva veću preciznost. Tag mora biti singulisan (samo jedan tag odgovara), a pisanje se vrši reč po reč (16 bita). Potpuno pisanje EPC od 96 bita zahteva 6 uzastopnih pisanja reči. Svako pisanje traje 10–20ms, tako da kodiranje jednog taga traje 60–120ms samo za EPC podatke.

Uobičajeni neuspesi pisanja: Tag je predaleko od antene (potreban je jači signal za pisanje nego za čitanje. Približite tag na udaljenost od 1m). Više tagova u polju (singulacija nije uspela. Izolujte ciljni tag). Memorija taga zaključana (potrebna je lozinka za pristup). Provera pisanja nije uspela (pokušajte ponovo, ili tag može biti neispravan. Tipična stopa defekta je 1–3 na 10.000).

💡

Najbolja praksa: Uvek proverite nakon pisanja čitanjem podataka i poređenjem. Komanda za pisanje može uspeti, ali u retkim slučajevima oštetiti susedne bitove. Provera nakon pisanja hvata ove 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]

Bezbednost tagova i lozinke

EPC Gen2 tagovi podržavaju dve 32-bitne lozinke za bezbednost. Lozinka za pristup zaključava specifične memorijske banke. jednom postavljena, ta banka zahteva lozinku pre bilo kakve operacije čitanja ili pisanja. Lozinka za ubijanje trajno onemogućava tag kada se prenese. nepovratna operacija koja se prvenstveno koristi za privatnost potrošača u maloprodaji (uništavanje taga nakon odjave).

Najbolje prakse bezbednosti: Nikada ne koristite podrazumevanu lozinku sa svim nulama (0x00000000) u proizvodnji. ona ne pruža nikakvu bezbednost. Generišite jedinstvene lozinke po seriji tagova ili koristite prefiks vaše kompanije kao seme. Čuvajte lozinke u svom pozadinskom sistemu, nikada na samom tagu (memorija lozinke se može pročitati ako je tag otključan). Zaključajte banke lozinki nakon programiranja. Razmotrite Untraceable režim (dostupan na novijim čipovima) koji sakriva TID i smanjuje EPC, pružajući privatnost bez ubijanja taga.

⚠️

Komanda Kill je trajna i nepovratna. Nema poništavanja. Jednom kada je tag ubijen, on više nikada ne može da odgovori ni jednom čitaču. Uvek implementirajte verifikaciju kill-lozinke u vašem softveru i zahtevajte autorizaciju menadžera pre izvršavanja kill komandi.