Avançado

Codificação de Tags e Memória EPC

Domine a arquitetura de memória da tag e a codificação GS1 para integração da cadeia de suprimentos

Os 4 Bancos de Memória

Cada tag EPC Gen2 tem exatamente 4 bancos de memória, cada um com uma finalidade específica. Compreender essa estrutura é essencial para codificar, ler e proteger suas tags.

Banco 00 (Reservado): Contém a Senha de Kill de 32 bits e a Senha de Acesso de 32 bits. Os valores padrão são 0x00000000. A senha de kill desabilita permanentemente a tag quando enviada. Irreversível. A senha de acesso bloqueia os bancos de memória para evitar gravações não autorizadas.

Banco 01 (EPC): Contém StoredCRC (16 bits, calculado automaticamente), StoredPC/Protocol Control (16 bits, indica o comprimento do EPC e as capacidades da tag) e o próprio valor do EPC. Normalmente 96 bits (12 bytes) para SGTIN-96. Algumas tags suportam EPCs de 128 bits ou até 496 bits.

Banco 10 (TID): Identificador de Tag programado na fábrica. Contém o código do fabricante do chip, o número do modelo e um número de série exclusivo. Este banco é somente leitura e nunca pode ser alterado. tornando-o inestimável para anticontrafacção e autenticação de tags.

Banco 11 (Usuário): Armazenamento adicional opcional. O tamanho varia de acordo com o chip: NXP UCODE 9 tem 0 bits (sem memória do usuário), Quanray QStar-7U tem 512 bits (64 bytes). Use-o para números de lote, datas de inspeção, limites de temperatura ou registros de manutenção. Sempre verifique a capacidade disponível antes de escrever.

Codificação SGTIN-96. Passo a Passo

SGTIN-96 é o esquema EPC mais amplamente utilizado. Ele codifica um GTIN-14 (código de barras do seu produto) mais um número de série exclusivo em exatamente 96 bits (12 bytes). Isso permite até 274 bilhões de números de série exclusivos por tipo de produto.

A estrutura de 96 bits: Header (8 bits, sempre 0x30 para SGTIN-96) → Filter (3 bits: 0=todos, 1=PDV, 2=caixa completa, 3=reservado, 4=embalagem interna, 5=reservado, 6=carga unitária, 7=componente) → Partition (3 bits: define como os bits são divididos entre o prefixo da empresa e a referência do item) → Prefixo da Empresa (20–40 bits) → Referência do Item (4–24 bits) → Número de Série (38 bits).

O valor da Partição (0–6) determina o comprimento do Prefixo da Empresa: P=0 → prefixo de 40 bits (12 dígitos), P=1 → 37 bits (11 dígitos), P=2 → 34 bits (10 dígitos), P=3 → 30 bits (9 dígitos), P=4 → 27 bits (8 dígitos), P=5 → 24 bits (7 dígitos), P=6 → 20 bits (6 dígitos). O comprimento do prefixo da sua empresa GS1 determina qual valor de partição usar.

💡

Use a ferramenta Nextwaves TDS RFID Converter em /tools/tds-rfid-converter para codificar e decodificar valores SGTIN-96 interativamente. Insira seu GTIN-14 + serial e obtenha o EPC hexadecimal instantaneamente.

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

Outros Esquemas EPC

Além do SGTIN-96, o GS1 define vários outros esquemas EPC de 96 bits para diferentes identificadores da cadeia de suprimentos. Cada um tem seu próprio byte de cabeçalho.

Leitura e Escrita na Memória da Tag

A leitura de tags durante o inventário é passiva. o leitor transmite uma consulta e as tags respondem com seu EPC do Banco 01. Mas você também pode ler explicitamente qualquer banco de memória enviando um comando READ com o número do banco, deslocamento da palavra e contagem de palavras.

Escrever em tags requer mais precisão. A tag deve ser singulada (apenas uma tag respondendo), e as escritas acontecem uma palavra (16 bits) por vez. Uma escrita EPC completa de 96 bits requer 6 escritas de palavras sequenciais. Cada escrita leva de 10 a 20ms, então codificar uma única tag leva de 60 a 120ms apenas para os dados EPC.

Falhas comuns de escrita: Tag muito longe da antena (precisa de um sinal mais forte para escritas do que para leituras. Aproxime a tag a 1m). Múltiplas tags no campo (singulação falhou. Isole a tag alvo). Memória da tag bloqueada (senha de acesso necessária). Verificação de escrita falhou (tente novamente, ou a tag pode estar com defeito. A taxa de defeito típica é de 1 a 3 a cada 10.000).

💡

Melhor prática: sempre verifique após a escrita, lendo os dados de volta e comparando. Um comando de escrita pode ter sucesso, mas corromper bits adjacentes em casos raros. A verificação de leitura após a escrita detecta esses problemas.

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]

Segurança de Tag e Senhas

As tags EPC Gen2 suportam duas senhas de 32 bits para segurança. A Senha de Acesso bloqueia bancos de memória específicos. Uma vez definida, esse banco requer a senha antes de qualquer operação de leitura ou gravação. A Senha de Eliminação desabilita permanentemente a tag quando transmitida. Uma operação irreversível usada principalmente para privacidade do consumidor no varejo (destruindo a tag após o checkout).

Melhores práticas de segurança: Nunca use a senha padrão de todos os zeros (0x00000000) em produção. Ela não oferece segurança alguma. Gere senhas exclusivas por lote de tags ou use o prefixo da sua empresa como semente. Armazene as senhas em seu sistema de back-end, nunca na própria tag (a memória da senha pode ser lida se a tag estiver desbloqueada). Bloqueie os bancos de senhas após a programação. Considere o modo Untraceable (disponível em chips mais recentes), que oculta o TID e reduz o EPC, fornecendo privacidade sem eliminar a tag.

⚠️

O comando Kill é permanente e irreversível. Não há como desfazer. Uma vez que uma tag é morta, ela nunca mais poderá responder a nenhum leitor. Sempre implemente a verificação da senha de kill em seu software e exija a autorização do gerente antes de executar comandos kill.