Avancé

Encodage des tags et mémoire EPC

Maîtrisez l'architecture de la mémoire des tags et l'encodage GS1 pour l'intégration dans la chaîne d'approvisionnement

Les 4 banques de mémoire

Chaque tag EPC Gen2 possède exactement 4 banques de mémoire, chacune ayant un but spécifique. Comprendre cette structure est essentiel pour l'encodage, la lecture et la sécurisation de vos tags.

Banque 00 (Reserved) : Contient le Kill Password de 32 bits et l'Access Password de 32 bits. Les valeurs par défaut sont 0x00000000. Le kill password désactive définitivement le tag lorsqu'il est envoyé — c'est irréversible. L'access password verrouille les banques de mémoire pour empêcher les écritures non autorisées.

Banque 01 (EPC) : Contient le StoredCRC (16 bits, calculé automatiquement), le StoredPC/Protocol Control (16 bits, indique la longueur de l'EPC et les capacités du tag), et la valeur EPC elle-même — généralement 96 bits (12 octets) pour le SGTIN-96. Certains tags prennent en charge des EPC de 128 bits ou même 496 bits.

Banque 10 (TID) : Identifiant de tag (Tag Identifier) programmé en usine. Contient le code du fabricant de la puce, le numéro de modèle et un numéro de série unique. Cette banque est en lecture seule et ne peut jamais être modifiée — ce qui la rend inestimable pour la lutte contre la contrefaçon et l'authentification des tags.

Banque 11 (User) : Stockage supplémentaire optionnel. La taille varie selon la puce : NXP UCODE 9 possède 0 bit (pas de mémoire utilisateur), Quanray QStar-7U possède 512 bits (64 octets). Utilisez-la pour les numéros de lot, les dates d'inspection, les seuils de température ou les dossiers de maintenance. Vérifiez toujours la capacité disponible avant d'écrire.

Encodage SGTIN-96 — Étape par étape

Le SGTIN-96 est le schéma EPC le plus largement utilisé. Il encode un GTIN-14 (le code-barres de votre produit) plus un numéro de série unique en exactement 96 bits (12 octets). Cela permet jusqu'à 274 milliards de numéros de série uniques par type de produit.

La structure de 96 bits : Header (8 bits, toujours 0x30 pour le SGTIN-96) → Filter (3 bits : 0=all, 1=POS, 2=full case, 3=reserved, 4=inner pack, 5=reserved, 6=unit load, 7=component) → Partition (3 bits : définit comment les bits sont répartis entre le Company Prefix et l'Item Reference) → Company Prefix (20–40 bits) → Item Reference (4–24 bits) → Serial Number (38 bits).

La valeur de Partition (0–6) détermine la longueur du Préfixe Entreprise : P=0 → préfixe de 40 bits (12 chiffres), P=1 → 37 bits (11 chiffres), P=2 → 34 bits (10 chiffres), P=3 → 30 bits (9 chiffres), P=4 → 27 bits (8 chiffres), P=5 → 24 bits (7 chiffres), P=6 → 20 bits (6 chiffres). La longueur de votre préfixe entreprise GS1 détermine la valeur de partition à utiliser.

💡

Utilisez l'outil Nextwaves TDS RFID Converter sur /tools/tds-rfid-converter pour encoder et décoder les valeurs SGTIN-96 de manière interactive. Saisissez votre GTIN-14 + série et obtenez instantanément l'EPC hexadécimal.

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

Autres schémas EPC

Au-delà du SGTIN-96, GS1 définit plusieurs autres schémas EPC de 96 bits pour différents identifiants de la chaîne d'approvisionnement. Chacun possède son propre octet d'en-tête.

Lecture et écriture de la mémoire des tags

La lecture des tags lors de l'inventaire est passive — le lecteur diffuse une requête et les tags répondent avec leur EPC provenant de la Banque 01. Mais vous pouvez également lire explicitement n'importe quelle banque de mémoire en envoyant une commande READ avec le numéro de banque, l'offset de mot et le nombre de mots.

L'écriture sur les tags nécessite plus de précision. Le tag doit être singularisé (un seul tag répondant), et les écritures se font un mot (16 bits) à la fois. Une écriture EPC complète de 96 bits nécessite 6 écritures de mots séquentielles. Chaque écriture prend 10 à 20 ms, l'encodage d'un seul tag prend donc 60 à 120 ms pour les seules données EPC.

Échecs d'écriture courants : Tag trop loin de l'antenne (nécessite un signal plus fort pour l'écriture que pour la lecture — placez le tag à moins d'un mètre). Plusieurs tags dans le champ (échec de la singularisation — isolez le tag cible). Mémoire du tag verrouillée (mot de passe d'accès requis). Échec de la vérification d'écriture (réessayez, ou le tag peut être défectueux — le taux de défaut typique est de 1 à 3 pour 10 000).

💡

Bonne pratique : Vérifiez toujours après l'écriture en relisant les données et en les comparant. Une commande d'écriture peut réussir mais corrompre des bits adjacents dans de rares cas. La vérification de lecture après écriture permet de détecter ces problèmes.

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]

Sécurité des tags et mots de passe

Les tags EPC Gen2 prennent en charge deux mots de passe de 32 bits pour la sécurité. L'Access Password verrouille des banques de mémoire spécifiques — une fois défini, cette banque nécessite le mot de passe avant toute opération de lecture ou d'écriture. Le Kill Password désactive de manière permanente le tag lorsqu'il est transmis — une opération irréversible principalement utilisée pour la confidentialité des consommateurs dans le commerce de détail (destruction du tag après le passage en caisse).

Bonnes pratiques de sécurité : N'utilisez jamais le mot de passe par défaut composé uniquement de zéros (0x00000000) en production — il n'offre aucune sécurité. Générez des mots de passe uniques par lot de tags ou utilisez le préfixe de votre entreprise comme graine. Stockez les mots de passe dans votre système backend, jamais sur le tag lui-même (la mémoire du mot de passe peut être lue si le tag est déverrouillé). Verrouillez les banques de mots de passe après la programmation. Envisagez le mode Untraceable (disponible sur les puces plus récentes) qui masque le TID et réduit l'EPC, offrant une confidentialité sans détruire le tag.

⚠️

La commande Kill est permanente et irréversible. Il n'y a pas de retour en arrière possible. Une fois qu'un tag est détruit, il ne pourra plus jamais répondre à aucun lecteur. Implémentez toujours une vérification du kill-password dans votre logiciel et exigez l'autorisation d'un responsable avant d'exécuter des commandes Kill.