Электронный код объекта – это цепочка байтов, которую можно декодировать по заранее определенным правилам, чтобы получить на выходе данные об объекте, маркированном RFID-меткой. Т.е. объект идентифицирует не сама метка, и не номер метки, а электронный код объекта, прописанный в ней.
Для разных типов объектов (автомобили, грузы, товары, книги и т.п.) стандартами определен свой набор данных, который считается достаточным для идентификации соответствующего объекта. Предполагается, что перед нанесением RFID-метки на объект, в неё будет прописан закодированный электронный код этого объекта.
В настоящий момент существуют две системы стандартов электронных кодов объектов для использования в RFID. Первые разрабатывает организация EPCglobal GS1. Вторые разрабатывает ISO/IEC. Обе системы частично пересекаются в вопросах, что маркировать и как кодировать. При чтении меток программа всегда имеет возможность понять, по какому стандарту закодирована метка. Вопрос, какой стандарт следует использовать для кодирования, решается отдельно в каждой конкретной области применения, для каждого конкретного типа маркируемых объектов.
Метки HF кодируются по стандартам ISO/IEC. Метки UHF кодируются как по стандартам ISO/IEC (реже), так и по стандарту EPCglobal GS1 (чаще).
Архитекторы UHF RFID на метках Class 1 Gen 2 выстроили довольно сложную систему идентификации объектов, которая базируется на существующих стандартах международных организаций GS1 и ISO/IEC по идентификации товаров, грузовых контейнеров, автомобилей, книг, авиабагажа и т.п. Результирующие решения, реализованные в «железе» Class 1 Gen 2, кардинально отличаются от того, что ожидает от RFID-учета любой неподготовленный заранее «технарь».
В первую очередь это касается вопроса об «уникальных номерах меток».
Для HF каждая без исключения метка имеет уникальный неизменяемый номер метки, прошитый на стадии производства. Этот номер уникально идентифицирует саму метку. В памяти, доступной для записи, метка несет информацию о маркируемом объекте.
Таким образом, систему на HF можно построить на базе простого соответствия уникального кода метки объектам базы данных учетной системы, а в память метки, отвечающую за данные о маркируемом объекте, вообще ничего не писать.
Для UHF Class 1 Gen 2 метка может не иметь уникального номера. Даже если номер предусмотрен производителем, он необязательно уникальный. И даже если он уникальный, этот код расположен в отдельном специальном банке памяти метки, который медленно читается и не подходит для массовой инвентаризации (см. подробности ниже).
Таким образом, строить систему на UHF путем соответствия заранее кем-то назначенных «уникальных кодов» объектам своей базы данных не всегда возможно (либо возможно, но не всегда практично с точки зрения скорости чтения). «Уникальные коды» зачастую придется генерировать и прописывать самим.
На заре UHF RFID предполагалось, что RFID-метки будут служить простой альтернативой GS1 штрихкодам (например, EAN13, которые одинаковы для всех идентичных экземпляров товара), и что прошиваться и наноситься на товары они будут еще на этапе производства. Просто вместо того, чтобы заказывать обычные бирки или пачки с заранее напечатанным EAN13, производитель будет заказывать «умные» бирки со штрихкодом + встроенными чипами с заранее прописанным аналогом EAN13, совершенно одинаковым для экземпляров товара. Учета уникальных единиц товара не предполагалось.
В системе с неуникальными метками человек должен был подходить с товаром на кассу и система пробивала бы его – какой-то товар просто «по штрихкоду», какой-то «по штрихкоду из RFID-метки» (метки Class 0). В итоге даже в Class 1 Gen 2 есть возможность подсчета точного количества меток на кассе, даже если все метки идентичны!
Недостатком такой системы служат непреодолимые сложности при инвентаризации. Хотя на кассе система точно подсчитывает количество товара, этого невозможно сделать в мобильном режиме в торговом зале, т.к. человек со считывателем может несколько раз пройти мимо одной и той же полки с разрывом в несколько минут, и система несколько раз «пробъет» товар на ней в результаты инвентаризации.
Решением проблемы является наличие для каждого экземпляра товара некоего уникального кода, в дополнение к коду товара, что и было реализовано в Class 1 Gen 2. Для маркировки товаров по схеме GS1 EPC таким кодом был выбран серийный номер – числовой для меток в 128 бит и строковый для меток от 512 бит и более (имеется в виду размер банка EPC/UII). Для учета библиотечных фондов, основных средств, сотрудников и т.п. были придуманы еще более сложные академические схемы, основанные на системе Relative OIDs и классификации ASN.1
Ответственность за назначение серийных и прочих номеров была возложена на пользователя меток. Серийные номера могут быть «фиктивными», т.е. никак не отражаться в учете и назначаться просто по счетчику, а могут быть реальными. В идеале от организации требовалось организовать у себя систему учета на уровне отдельных объектов, по серийным номерам.
Во всех случаях предполагалось, что код объекта в метку прошьет пользователь, а не производитель. С появлением новых чипов и осознанием производителями того факта, что пользователи ожидают от них заранее прошитых уникальных меток, ситуация постепенно меняется, но не кардинально.
Если представить, что на дворе 2050 год и всё вокруг промаркировано RFID-метками, то ситуация будет кардинально отличается от той, когда всё вокруг промаркировано штрихкодами. Потому что штрихкод считывается только тот, на который был направлен сканер. А RFID-метки читаются все вокруг, сразу несколько, и с учетом переотражения сигнала потенциально могут считаться любые метки в радиусе нескольких метров.
Используя штрихкоды, почти всегда можно было закрыть глаза на все стандарты, ведь всегда известно, какой штрихкод наш, где он наклеен и как выглядит. Какие-то стандарты могут потребоваться только при маркировке для продаж в крупных супермаркетах, при маркировке грузов в международной логистике и прочих крупных затеях. Это разрешено, т.к. сканер штрихкодов читает только то, на что мы его направили. Невозможно себе представить, что мы направили луч на один штрихкод, а считался совсем другой с обратной стороны коробки. Внезапное чтение «левого» штрихкода с пачки сигарет, которая лежит в кармане кладовщика, также невозможно.
С RFID всё иначе. Каждая промаркированная RFID пачка сигарет, маркированная личная одежда персонала, каждый документ (паспорта, права) – любая мелочь в охвате нескольких метров может быть прочитана вашим считывателем как своя.
Поэтому станут актуальными подобные запреты:
Имеется в виду: «не проносить с собой чужих RFID-меток!». К сожалению, такой запрет не подходит для магазина.
Итак, RFID читает всё вокруг. Для проверки прихода и отгрузки можно использовать RFID-тоннель, который читает только то, что проходит сквозь него. Но, опять же, RFID-тоннель не подходит для задачи быстрой инвентаризации (т.к. перетаскать весь товар к тоннелю и обратно – это долго).
Таким образом, внедряя RFID-систему, придется использовать международные стандарты, специализированное оборудование.
Стандарт Class 1 Generation 2 (Class 1 Gen 2 или просто Gen2, второе поколение первого класса) – это набор документов, разработанных коммерческой организацией «EPCglobal, Inc.», в которых подробно описано своего рода «техническое задание» на чипы RFID-меток и работу RFID-считывателей (стандарт ISO18000-6С).
Основное в стандарте Class 1 Generation 2:
На уровне радио-протокола обмена между чипами меток Class 1 Gen 2 и считывателем UHF можно производить следующие операции:
Стандарт на Class 1 Generation 2 описывает только частоты, протоколы обмена и некоторые алгоритмы работы (или советы по алгоритмам) для чипов, используемых в RFID-метках. Помимо чипа, метка состоит из антенны и субстрата для крепления метки на объект. В стандарте ничего не сказано о креплении на металл, надежности приклеивания или размерах метки. Всё, что нужно для надежного крепления и хорошего считывания, – отдается на откуп производителя конкретных меток.
Метки могут быть любыми: тонкие самоклеющиеся бумажные и синтетические в виде этикетки, толстые пластмассовые корпусные, стеклянные вживляемые, съедобные и т.д.
Чип в метке стандарта Class 1 Gen 2 позволяет читать из 4 банков памяти разного размера и писать в 3 из них. Тот единственный банк, из которого можно только читать (но нельзя писать), – это банк №2, в котором должен храниться уникальный номер чипа, присваиваемый еще на стадии производства чипа.
Структура данных в чипе стандарта Gen2 (4 банка памяти):
* EPC - Electronic Product Code (Электронный код продукта), UII – Unique Item Identifier (Уникальный идентификатор объекта), см. специальный раздел ниже.
Пяти и больше банков в метке Class 1 Gen 2 быть не может, т.к. в протоколе общения считывателя с меткой номер банка кодируется всего двумя битами (итого получаются сочетания «00», «01», «10» и «11»).
Архитекторы UHF RFID разрабатывали всю систему исходя из следующего принципа идентификации:
Перед маркировкой объекта в метку записывается уникальный номер идентифицируемого объекта (в виде EPC или UI). Метка крепится к объекту. Таким образом, EPC/UII в метке идентифицирует объект, к которому прикреплена метка. Метки инвентаризуются по EPC/UII, со скоростью примерно тысяча меток в секунду.
В метке дополнительно может храниться номер чипа, который идентифицирует саму метку, а не тот объект, к которому она прикреплена. Номер чипа может отсутствовать и не обязан быть уникальным. Номер чипа никак не связан с EPC/UII и не имеет никакого отношения к идентифицируемому объекту.
Правильное понимание того, как устроен «уникальный код» RFID метки Class 1 Gen 2 (UHF RFID):
Этот пункт на практике очень сложно реализуем, особенно в распределенных системах учета. Требуется придумывать какие-то диапазоны номеров, реплицировать данные и т.п. Одним из возможных решений является Chip Based Serialization.
Но продавец говорит, что каждая его метка имеет уникальный код!
Продавец в данном случае говорит об уникальном номере у каждого RFID-чипа, используемого им при производстве меток. У любого чипа RFID-метки Class 1 Gen 2 (UHF RFID) согласно стандарту ISO18000-6С может быть код (необязательно уникальный). У любой такой метки в любой момент можно узнать номер используемого в ней чипа, но это значительно более медленная и ненадежная операция, чем инвентаризация RFID, и полагаться на неё в инвентаризации нельзя. Инвентаризация по кодам товаров позволяет читать до 1000 меток/сек. Инвентаризация по номерам чипов едва ли прочтет 5 меток/сек и почти никогда не прочтет все метки, если их лежит больше 1 шт, и не подходит для товарной инвентаризации. Для целей товарной инвентаризации исключительно всегда следует использовать банк EPC/UII, в котором метка хранит код объекта, на который она нанесена, и который возвращается считывателю при инвентаризации.
Наше ТЗ содержит простую таблицу соответствия кодов меток объектам нашей базы данных!
Ваше ТЗ ересь (в прямом смысле), т.к. идет против международных стандартов. Код метки не является случайным уникальным числом, а представляет собой «карточку», которую следует заполнить данными из вашей базы. В зависимости от характера маркируемых вами объектов (товары это, документы, книги или другое имущество) заранее предусмотрены стандартные схемы заполнения этой «карточки». Другие банки меток (в частности, пользовательский банк) не предусмотрены для быстрой инвентаризации, их используют для других задач (хранение расширенной информации для операций с отдельными метками, выявление клонов меток и подделок). Для целей инвентаризации исключительно всегда следует использовать банк EPC/UII, в котором метка хранит данные объекта, на который она нанесена, заполненные по правилам международных стандартов. Эти данные возвращается считывателю при инвентаризации. Изобретение своих схем кодирования не запрещается, но и не приветствуется.
Но наше ТЗ содержит простую таблицу соответствия кодов меток объектам нашей базы данных!
В этом случае убедитесь, что вы предварительно сами прописываете банк EPC/UII, и используете при этом стандартную действительно глобально уникальную схему кодирования.
EPC и UII как электронные коды объектов
Банк №1 для RFID-меток Class 1 Gen 2 (который также может называться «EPC-банк», «банк EPC», «банк UII», «второй банк» или «банк 01») содержит в себе электронный код объекта, представленный либо в виде EPC, либо в виде UII (третьего варианта нет, т.к. за выбор отвечает один единственный бит в заголовке банка). За стандартизацию кодирования EPC отвечает международная организация GS1, за стандартизацию UII отвечают организации ISO/IEC.
EPC (Electronic Product Code) – это способ идентификации конкретных единиц товаров, мест хранения, документов и т.п., который используется при маркировке объектов RFID-метками Class 1 Gen 2 по стандарту EPCglobal GS1.
В RFID-метку EPC записывается при помощи нулей и единиц. Перевод EPC в нули и единицы называется бинарным кодированием EPC, и уже реализовано в Wonderfid Link. Из метки EPC считывается точно так же в виде нулей и единиц (обычно в виде шестнадцатеричного представления закодированных байтов, например «3024000003320C4063A23312»), и чтобы получить из них код компании или серийный номер товара, необходимо произвести декодирование.
UII (Unique Item Identifier) – это способ идентификации конкретных единиц имущества, библиотечных элементов, грузов, бейджей сотрудников, документов и т.д., который используется при маркировке объектов любыми RFID-метками по стандартам ISO/IEC. Существует целый ряд стандартов ISO/IEC, расчитанный каждый на свою область применения, из которых основным является ISO-15961.
В RFID-метку UII записывается также при помощи нулей и единиц. Перевод UII в ноли и единицы называется бинарным кодированием UII, и уже реализовано в Wonderfid Link. Из метки UII считывается точно так же в виде нулей и единиц (обычно в виде шестнадцатеричного представления закодированных байтов, например «069100051CBE991A14»), и чтобы получить из них данные маркируемого объекта (например, номер книги), необходимо произвести декодирование.
Соответственно, для маркировки тех или иных объектов уже придуманы соответствующие схемы кодирования банка EPC/UII либо как EPC, либо как UII: