Avansert

Tag-koding og EPC-minne

Mestre tag-minnearkitektur og GS1-koding for integrasjon i forsyningskjeden

De 4 minnebankene

Hver EPC Gen2-tag har nøyaktig 4 minnebanker, som hver tjener et spesifikt formål. Å forstå denne strukturen er avgjørende for koding, lesing og sikring av taggene dine.

Bank 00 (Reservert): Inneholder 32-bit Kill-passord og 32-bit Access-passord. Standardverdier er 0x00000000. Kill-passordet deaktiverer taggen permanent når det sendes — irreversibelt. Access-passordet låser minnebanker for å forhindre uautorisert skriving.

Bank 01 (EPC): Inneholder StoredCRC (16 bit, auto-beregnet), StoredPC/Protocol Control (16 bit, indikerer EPC-lengde og tag-funksjonalitet), og selve EPC-verdien — vanligvis 96 bit (12 byte) for SGTIN-96. Noen tagger støtter 128-bit eller til og med 496-bit EPC-er.

Bank 10 (TID): Fabrikkprogrammert Tag Identifier. Inneholder brikkeprodusentkode, modellnummer og et unikt serienummer. Denne banken er skrivebeskyttet og kan aldri endres — noe som gjør den uvurderlig for anti-forfalskning og tag-autentisering.

Bank 11 (User): Valgfri tilleggslagring. Størrelsen varierer etter brikke: NXP UCODE 9 har 0 bit (ikke brukerminne), Quanray QStar-7U har 512 bit (64 byte). Bruk den til batchnumre, inspeksjonsdatoer, temperaturgrenser eller vedlikeholdsjournaler. Sjekk alltid tilgjengelig kapasitet før skriving.

SGTIN-96-koding — steg for steg

SGTIN-96 er den mest brukte EPC-ordningen. Den koder en GTIN-14 (produktets strekkode) pluss et unikt serienummer til nøyaktig 96 bit (12 byte). Dette tillater opptil 274 milliarder unike serienumre per produkttype.

Den 96-biters strukturen: Header (8 bit, alltid 0x30 for SGTIN-96) → Filter (3 bit: 0=alle, 1=POS, 2=full eske, 3=reservert, 4=inneremballasje, 5=reservert, 6=enhetslast, 7=komponent) → Partisjon (3 bit: definerer hvordan bitene er delt mellom selskapsprefiks og vare-referanse) → Selskapsprefiks (20–40 bit) → Vare-referanse (4–24 bit) → Serienummer (38 bit).

Partisjonsverdien (0–6) bestemmer lengden på selskapsprefikset (Company Prefix): P=0 → 40-bit prefiks (12 siffer), P=1 → 37-bit (11 siffer), P=2 → 34-bit (10 siffer), P=3 → 30-bit (9 siffer), P=4 → 27-bit (8 siffer), P=5 → 24-bit (7 siffer), P=6 → 20-bit (6 siffer). Lengden på ditt GS1-selskapsprefiks avgjør hvilken partisjonsverdi som skal brukes.

💡

Bruk Nextwaves TDS RFID Converter-verktøyet på /tools/tds-rfid-converter for å kode og dekode SGTIN-96-verdier interaktivt. Skriv inn din GTIN-14 + serienummer og få hex-EPC umiddelbart.

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

Andre EPC-ordninger

Utover SGTIN-96 definerer GS1 flere andre 96-bit EPC-ordninger for ulike identifikatorer i forsyningskjeden. Hver har sin egen header-byte.

Lese og skrive til brikkeminnne

Lesing av brikker under varetelling er passivt — leseren sender ut en forespørsel og brikkene svarer med sin EPC fra Bank 01. Men du kan også eksplisitt lese hvilken som helst minnebank ved å sende en READ-kommando med banknummer, ord-offset og ord-antall.

Skriving til brikker krever mer presisjon. Brikken må være singulert (kun én brikke svarer), og skriving skjer ett ord (16 bit) om gangen. En fullstendig 96-bit EPC-skriving krever 6 sekvensielle ord-skrivinger. Hver skriving tar 10–20 ms, så koding av en enkelt brikke tar 60–120 ms for kun EPC-data.

Vanlige skrivefeil: Brikken er for langt fra antennen (krever sterkere signal for skriving enn lesing — flytt brikken innenfor 1 m). Flere brikker i feltet (singulering mislyktes — isoler målbrikken). Brikkeminnne låst (tilgangskode kreves). Skriveverifisering mislyktes (prøv på nytt, eller brikken kan være defekt — typisk feilrate er 1–3 per 10 000).

💡

Beste praksis: Verifiser alltid etter skriving ved å lese tilbake dataene og sammenligne. En skrivekommando kan lykkes, men i sjeldne tilfeller korrumpere tilstøtende biter. Verifisering ved lesing etter skriving fanger opp disse problemene.

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]

Brikkesikkerhet og passord

EPC Gen2-brikker støtter to 32-biters passord for sikkerhet. Access Password låser spesifikke minnebanker — når det er satt, krever den banken passordet før enhver lese- eller skriveoperasjon. Kill Password deaktiverer brikken permanent når det sendes — en irreversibel operasjon som primært brukes for personvern i detaljhandelen (ødelegger brikken etter betaling).

Beste praksis for sikkerhet: Bruk aldri standardpassordet med bare nuller (0x00000000) i produksjon — det gir ingen sikkerhet. Generer unike passord per brikkeparti eller bruk selskapets prefiks som utgangspunkt. Lagre passord i backend-systemet ditt, aldri på selve brikken (passordminnet kan leses hvis brikken er ulåst). Lås passordbankene etter programmering. Vurder Untraceable-modus (tilgjengelig på nyere brikker) som skjuler TID og reduserer EPC, noe som gir personvern uten å ødelegge brikken.

⚠️

Kill-kommandoen er permanent og irreversibel. Det finnes ingen angreknapp. Når en brikke er deaktivert (killed), kan den aldri svare en leser igjen. Implementer alltid verifisering av kill-passord i programvaren din og krev ledergodkjenning før du utfører kill-kommandoer.