Продвинутый

Кодирование меток и память EPC

Освойте архитектуру памяти меток и кодирование GS1 для интеграции цепочки поставок

4 банка памяти

Каждая метка EPC Gen2 имеет ровно 4 банка памяти, каждый из которых служит определенной цели. Понимание этой структуры необходимо для кодирования, чтения и защиты ваших меток.

Банк 00 (Reserved): Содержит 32-битный Kill Password и 32-битный Access Password. Значения по умолчанию — 0x00000000. Пароль Kill навсегда отключает метку при отправке. Необратимо. Пароль доступа блокирует банки памяти, чтобы предотвратить несанкционированные записи.

Банк 01 (EPC): Содержит StoredCRC (16 бит, вычисляется автоматически), StoredPC/Protocol Control (16 бит, указывает длину EPC и возможности метки) и само значение EPC. Обычно 96 бит (12 байт) для SGTIN-96. Некоторые метки поддерживают 128-битные или даже 496-битные EPC.

Банк 10 (TID): Заводской идентификатор метки. Содержит код производителя чипа, номер модели и уникальный серийный номер. Этот банк доступен только для чтения и никогда не может быть изменен. что делает его бесценным для борьбы с подделками и аутентификации меток.

Банк 11 (User): Дополнительное дополнительное хранилище. Размер варьируется в зависимости от чипа: NXP UCODE 9 имеет 0 бит (нет пользовательской памяти), Quanray QStar-7U имеет 512 бит (64 байта). Используйте его для номеров партий, дат проверок, пороговых значений температуры или записей обслуживания. Всегда проверяйте доступную емкость перед записью.

Кодирование SGTIN-96. Шаг за шагом

SGTIN-96 — наиболее широко используемая схема EPC. Она кодирует GTIN-14 (ваш штрих-код продукта) плюс уникальный серийный номер ровно в 96 битах (12 байтах). Это позволяет использовать до 274 миллиардов уникальных серийных номеров для каждого типа продукта.

96-битная структура: Заголовок (8 бит, всегда 0x30 для SGTIN-96) → Фильтр (3 бита: 0=все, 1=POS, 2=полный кейс, 3=зарезервировано, 4=внутренняя упаковка, 5=зарезервировано, 6=единичная загрузка, 7=компонент) → Раздел (3 бита: определяет, как биты разделяются между префиксом компании и ссылкой на товар) → Префикс компании (20–40 бит) → Ссылка на товар (4–24 бита) → Серийный номер (38 бит).

Значение раздела (0–6) определяет длину префикса компании: P=0 → 40-битный префикс (12 цифр), P=1 → 37-битный (11 цифр), P=2 → 34-битный (10 цифр), P=3 → 30-битный (9 цифр), P=4 → 27-битный (8 цифр), P=5 → 24-битный (7 цифр), P=6 → 20-битный (6 цифр). Длина префикса вашей компании GS1 определяет, какое значение раздела использовать.

💡

Используйте инструмент Nextwaves TDS RFID Converter по адресу /tools/tds-rfid-converter для интерактивного кодирования и декодирования значений SGTIN-96. Введите свой GTIN-14 + серийный номер и мгновенно получите шестнадцатеричный 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

Другие схемы EPC

Помимо SGTIN-96, GS1 определяет несколько других 96-битных схем EPC для различных идентификаторов цепочки поставок. Каждый из них имеет свой собственный байт заголовка.

Чтение и запись в память меток

Чтение меток во время инвентаризации является пассивным. считыватель рассылает запрос, и метки отвечают своим EPC из банка 01. Но вы также можете явно прочитать любой банк памяти, отправив команду READ с номером банка, смещением слова и количеством слов.

Запись на метки требует большей точности. Метка должна быть сингулирована (отвечает только одна метка), и запись происходит по одному слову (16 бит) за раз. Полная запись EPC объемом 96 бит требует 6 последовательных записей слов. Каждая запись занимает 10–20 мс, поэтому кодирование одной метки занимает 60–120 мс только для данных EPC.

Распространенные сбои при записи: Метка слишком далеко от антенны (для записи требуется более сильный сигнал, чем для чтения. Поднесите метку на расстояние до 1 м). Несколько меток в поле (сингуляция не удалась. Изолируйте целевую метку). Память метки заблокирована (требуется пароль доступа). Не удалось проверить запись (повторите попытку, или метка может быть дефектной. Типичный уровень дефектов составляет 1–3 на 10 000).

💡

Рекомендованная практика: Всегда выполняйте проверку после записи, считывая данные обратно и сравнивая их. Команда записи может выполниться успешно, но в редких случаях повредить соседние биты. Проверка после записи выявляет эти проблемы.

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]

Безопасность меток и пароли

Метки EPC Gen2 поддерживают два 32-битных пароля для безопасности. Пароль доступа блокирует определенные банки памяти. После установки этот банк требует пароль перед любой операцией чтения или записи. Пароль уничтожения навсегда отключает метку при передаче. Необратимая операция, используемая в основном для конфиденциальности потребителей в розничной торговле (уничтожение метки после оформления заказа).

Рекомендации по безопасности: Никогда не используйте пароль по умолчанию, состоящий из нулей (0x00000000) в производстве. Он не обеспечивает никакой безопасности. Создавайте уникальные пароли для каждой партии меток или используйте префикс вашей компании в качестве основы. Храните пароли в своей серверной системе, никогда не на самой метке (память пароля можно прочитать, если метка разблокирована). Заблокируйте банки паролей после программирования. Рассмотрите возможность использования режима Untraceable (доступен на новых чипах), который скрывает TID и уменьшает EPC, обеспечивая конфиденциальность без уничтожения метки.

⚠️

Команда Kill является постоянной и необратимой. Отменить ее невозможно. После уничтожения метка больше никогда не сможет отвечать ни на один считыватель. Всегда реализуйте проверку пароля Kill в своем программном обеспечении и требуйте авторизацию менеджера перед выполнением команд Kill.