ГОСТ Р ИСО/МЭК 18000-62-2014. Национальный стандарт Российской Федерации. Информационные технологии. Идентификация радиочастотная для управления предметами. Часть 62. Параметры радиоинтерфейса для связи в диапазоне частот 860 - 960 МГц, тип B
6.2. Протокол бинарного дерева и антиколлизионный алгоритм
6.2.1. Определение элементов данных, порядок битов и байтов
6.2.1.1 Уникальный идентификатор
См. приложения B и C.
6.2.1.2 Код CRC-16
См. приложение A.
6.2.1.3 Флаги
6.2.1.3.1 Общие сведения о флагах
Радиочастотная метка должна поддерживать поле из восьми флагов, которое называется FLAGS (см. таблицу 12).
Таблица 12
Поле флагов FLAGS
Бит | Обозначение флага |
Флаг 1 (LSB) | DE_SB (Data_Exchange Status Bit) |
Флаг 2 | WRITE_OK |
Флаг 3 | BATTERY_POWERED |
Флаг 4 | BATTERY_OK |
Флаг 5 | 0 (RFU) |
Флаг 6 | 0 (RFU) |
Флаг 7 | 0 (RFU) |
Флаг 8 (MSB) | 0 (RFU) |
6.2.1.3.2 Флаг DE_SB (Data_Exchange Status Bit)
Радиочастотная метка устанавливает указанный флаг (бит состояния обмена данными) при переходе в состояние DATA_EXCHANGE и сохраняет его до перехода в состояние POWER-OFF.
Если флаг DE_SB установлен, а радиочастотная метка переходит в состояние POWER-OFF, она включает счетчик времени, который обнуляет бит DE_SB после истечения интервала времени tDE_SB.
Длительность интервала времени tDE_SB в диапазоне температур от минус 30 °C до 60 °C должна быть не менее 2 с.
Длительность интервала времени tDE_SB в диапазоне температур от 0 °C до 50 °C должна быть не менее 4 с.
При получении команды INITIALIZE радиочастотная метка немедленно обнуляет бит DE_SB.
6.2.1.3.3 Флаг WRITE_OK
Флаг WRITE_OK устанавливается после успешной записи или защиты данных в памяти радиочастотной метки (например, после команды WRITE или LOCK).
Бит флага WRITE_OK обнуляется после выполнения радиочастотной меткой команды, следующей за командой записи.
6.2.1.3.4 Флаг BATTERY_POWERED
Флаг BATTERY_POWERED устанавливается, если радиочастотная метка имеет внутренний источник питания (то есть для полупассивных меток). Для пассивных радиочастотных меток бит данного флага обнуляется.
6.2.1.3.5 Флаг BATTERY_OK
Флаг BATTERY_OK устанавливается, если источник питания полупассивной радиочастотной метки обладает достаточной мощностью для обеспечения ее работы. Для пассивных радиочастотных меток бит данного флага обнуляется.
Примечание - Флаг BATTERY_POWERED указывает на наличие внутреннего источника питания радиочастотной метки, в то время как флаг BATTERY_OK сообщает о состоянии источника питания. Флаг BATTERY_POWERED может быть "зашит" в память радиочастотной метки.
6.2.2. Структура памяти радиочастотной метки
Функциональная память должна состоять из однобайтовых блоков.
Организация памяти предусматривает до 256 блоков по 1 байту. Таким образом, максимальный объем памяти составляет около 2 Кбит.
Примечание - Организация памяти позволяет в дальнейшем увеличивать ее максимальный объем с использованием дополнительных команд, которые будут определены при необходимости.
6.2.3. Статус блокировки данных
Каждому байту данных соответствует 1 бит блокировки. Биты блокировки могут быть установлены с помощью команды LOCK. Состояние блокировки может быть считано с помощью команды QUERY_LOCK. Радиочастотная метка не может обнулить бит блокировки, установленный в процессе ее изготовления, после прохождения последней операции изготовления. В большинстве случаев последней операцией изготовления радиочастотной метки является присвоение уникального идентификатора.
6.2.4. Общее описание протокола бинарного дерева
6.2.4.1 Состояния радиочастотной метки
Радиочастотная метка имеет четыре основных состояния (см. рисунок 16):
POWER-OFF - состояние радиочастотной метки, при котором устройство опроса не может ее активировать (для радиочастотных меток с внутренним источником питания это означает, что уровень радиочастотного возбуждения недостаточен для включения электронных цепей метки).
READY - состояние радиочастотной метки, на которую подано питание устройством опроса.
ID - состояние радиочастотной метки, при котором она находится в процессе идентификации устройством опроса.
DATA_EXCHANGE - состояние радиочастотной метки после того, как устройство опроса выбрало и идентифицировало ее.
Рисунок 16 - Диаграмма состояний
Примечание - На рисунке 16 не указано, что радиочастотная метка переходит в состояние POWER-OFF из любого состояния в случае, если радиочастотное поле устройства опроса отключено и цепи питания радиочастотной метки не могут поддерживать ее работоспособность.
На рисунке 16 представлена общая информация о возможных переходах состояний радиочастотной метки. Более подробные сведения приведены в таблице 14.
Power-On:
изменение состояния при включении радиочастотного поля устройства опроса.
Select:
изменение состояния при выборе радиочастотной метки по командам GROUP_SELECT или READ.
Unselect:
изменение состояния при отмене выбора радиочастотной метки по командам GROUP_UNSELECT или INITIALIZE.
Collision_Arbitration:
во время выполнения антиколлизионного алгоритма изменение состояния радиочастотной метки не происходит до тех пор, пока отдельная радиочастотная метка не будет идентифицирована.
Data_Read:
изменение состояния происходит при первом обращении к радиочастотной метке в процессе выполнения антиколлизионного алгоритма.
Read:
изменение состояния происходит при считывании независимо от того, выполняется антиколлизионный алгоритм или нет.
Initialize:
изменение состояния происходит при отмене выбора радиочастотной метки по команде INITIALIZE.
Переходы состояний приведены в таблице 14.
6.2.4.2 Условия выполнения команд
Согласно таблице 13 команды должны выполняться в состояниях, отмеченных "X", во всех других случаях не происходит ни изменения состояния радиочастотной метки, ни передачи ее ответа.
Таблица 13
Условия выполнения команд
Команда | Состояния | ||
READY | ID | DATA_EXCHANGE | |
GROUP_SELECT_EQ | X | X |
|
GROUP_SELECT_NE | X | X |
|
GROUP_SELECT_GT | X | X |
|
GROUP_SELECT_LT | X | X |
|
GROUP_SELECT_EQ_FLAGS | X | X |
|
GROUP_SELECT_NE_FLAGS | X | X |
|
GROUP_UNSELECT_EQ |
| X |
|
GROUP_UNSELECT_NE |
| X |
|
GROUP_SELECT_GT |
| X |
|
GROUP_SELECT_LT |
| X |
|
GROUP_SELECT_EQ_FLAGS |
| X |
|
GROUP_SELECT_NE_FLAGS |
| X |
|
MULTIPLE_UNSELECT |
| X |
|
FAIL |
| X |
|
SUCCESS |
| X |
|
RESEND |
| X |
|
INITIALIZE | X | X | X |
READ | X | X | X |
DATA_READ |
| X | X |
READ_VERIFY | X | X | X |
READ_VERIFY_4BYTE | X | X | X |
WRITE | X | X | X |
WRITE4BYTE | X | X | X |
WRITE4BYTE_MULTIPLE |
| X | X |
WRITE_MULTIPLE |
| X | X |
LOCK |
|
| X |
QUERY_LOCK | X | X | X |
FAIL_O |
| X |
|
SUCCESS_O |
| X |
|
DATA_READ_O |
| X | X |
READ_FLAGS | X | X | X |
READ_VARIABLE | X | X | X |
READ_PORT | X | X | X |
READ_UNADDRESSED | X | X | X |
RESEND_O |
| X |
|
Таблица 14
Таблица переходов состояний
Текущее состояние | Команда | Условие | Новое состояние |
POWER-OFF | ЛЮБАЯ КОМАНДА |
| POWER-OFF |
POWER-OFF | Включение радиочастотного сигнала УСО |
| READY |
READY | GROUP_SELECT_EQ | READY | |
READY | GROUP_SELECT_NE | = | READY |
READY | GROUP_SELECT_GT | READY | |
READY | GROUP_SELECT_EQ_FLAGS | Флаг не установлен | READY |
READY | GROUP_SELECT_NE_FLAGS | Флаг установлен | READY |
READY | GROUP_SELECT_LT | READY | |
READY | GROUP_SELECT_EQ | = | ID |
READY | GROUP_SELECT_NE | ID | |
READY | GROUP_SELECT_GT | > | ID |
READY | GROUP_SELECT_LT | < | ID |
READY | GROUP_SELECT_EQ_FLAGS | Флаг установлен | ID |
READY | GROUP_SELECT_NE_FLAGS | Флаг не установлен | ID |
READY | INITIALIZE |
| READY |
READY | READ | ID не совпадает | READY |
READY | READ | ID совпадает | DATA_EXCHANGE |
READY | READ_VERIFY | ID не совпадает ИЛИ флаг WRITE_OK='0' | READY |
READY | READ_VERIFY | ID совпадает И флаг WRITE_OK='1' | DATA_EXCHANGE |
READY | READ_VERIFY_4BYTE | ID не совпадает ИЛИ флаг WRITE_OK='0' | READY |
READY | READ_VERIFY_4BYTE | ID совпадает И флаг WRITE_OK='1' | DATA_EXCHANGE |
READY | WRITE | ID не совпадает | READY |
READY | WRITE | ID совпадает | DATA_EXCHANGE |
READY | WRITE4BYTE | ID не совпадает | READY |
READY | WRITE4BYTE | ID совпадает | DATA_EXCHANGE |
READY | QUERY_LOCK | ID не совпадает | READY |
READY | QUERY_LOCK | ID совпадает | DATA_EXCHANGE |
READY | READ_FLAGS | ID не совпадает | READY |
READY | READ_FLAGS | ID совпадает | DATA_EXCHANGE |
READY | READ_VARIABLE | ID не совпадает | READY |
READY | READ_VARIABLE | ID совпадает | DATA_EXCHANGE |
READY | READ_PORT | ID не совпадает | READY |
READY | READ_PORT | ID совпадает | DATA_EXCHANGE |
READY | READ_UNADDRESSED |
| DATA_EXCHANGE |
ID | GROUP_UNSELECT_EQ | ID | |
ID | GROUP_UNSELECT_NE | = | ID |
ID | GROUP_UNSELECT_GT | ID | |
ID | GROUP_UNSELECT_LT | ID | |
ID | GROUP_UNSELECT_EQ_FLAGS | флаг не установлен | ID |
ID | GROUP_UNSELECT_NE_FLAGS | флаг установлен | ID |
ID | GROUP_UNSELECT_EQ | = | READY |
ID | GROUP_UNSELECT_NE | READY | |
ID | GROUP_UNSELECT_GT | > | READY |
ID | GROUP_UNSELECT_LT | < | READY |
ID | GROUP_UNSELECT_EQ_FLAGS | флаг установлен | READY |
ID | GROUP_UNSELECT_NE_FLAGS | флаг не установлен | READY |
ID | MULTIPLE_UNSELECT |
| ID |
ID | MULTIPLE_UNSELECT | = И флаг WRITE_OK='1' | READY |
ID | GROUP_SELECT_EQ |
| ID |
ID | GROUP_SELECT_NE |
| ID |
ID | GROUP_SELECT_GT |
| ID |
ID | GROUP_SELECT_LT |
| ID |
ID | GROUP_SELECT_EQ_FLAGS |
| ID |
ID | GROUP_SELECT_NE_FLAGS |
| ID |
ID | FAIL |
| ID |
ID | SUCCESS |
| ID |
ID | RESEND |
| ID |
ID | INITIALIZE |
| READY |
ID | READ | ID не совпадает | ID |
ID | READ | ID совпадает | DATA_EXCHANGE |
ID | DATA_READ | ID не совпадает | ID |
ID | DATA_READ | ID совпадает | DATA_EXCHANGE |
ID | READ_VERIFY | ID не совпадает ИЛИ флаг WRITE_OK='0' | ID |
ID | READ_VERIFY | ID совпадает И флаг WRITE_OK='1' | DATA_EXCHANGE |
ID | READ_VERIFY_4BYTE | ID не совпадает ИЛИ флаг WRITE_OK='0' | ID |
ID | READ_VERIFY_4BYTE | ID совпадает И флаг WRITE_OK='1' | DATA_EXCHANGE |
ID | WRITE | ID не совпадает | ID |
ID | WRITE | ID совпадает | DATA_EXCHANGE |
ID | WRITE4BYTE | ID не совпадает | ID |
ID | WRITE4BYTE | ID совпадает | DATA_EXCHANGE |
ID | WRITE_MULTIPLE |
| ID |
ID | WRITE4BYTE_MULTIPLE |
| ID |
ID | QUERY_LOCK | ID не совпадает | ID |
ID | QUERY_LOCK | ID совпадает | DATA_EXCHANGE |
ID | RESEND_O |
| ID |
ID | READ_FLAGS | ID не совпадает | ID |
ID | READ_FLAGS | ID совпадает | DATA_EXCHANGE |
ID | READ_VARIABLE | ID не совпадает | ID |
ID | READ_VARIABLE | ID совпадает | DATA_EXCHANGE |
ID | READ_PORT | ID не совпадает | ID |
ID | READ_PORT | ID совпадает | DATA_EXCHANGE |
ID | FAIL_O |
| ID |
ID | SUCCESS_O |
| ID |
ID | DATA_READ_O | ID не совпадает | ID |
ID | DATA_READ_O | ID совпадает | DATA_EXCHANGE |
ID | READ_UNADDRESSED |
| DATA_EXCHANGE |
DATA_EXCHANGE | INITIALIZE |
| READY |
DATA_EXCHANGE | READ |
| DATA_EXCHANGE |
DATA_EXCHANGE | DATA_READ |
| DATA_EXCHANGE |
DATA_EXCHANGE | READ_VERIFY |
| DATA_EXCHANGE |
DATA_EXCHANGE | READ_VERIFY_4BYTE |
| DATA_EXCHANGE |
DATA_EXCHANGE | WRITE |
| DATA_EXCHANGE |
DATA_EXCHANGE | WRITE4BYTE |
| DATA_EXCHANGE |
DATA_EXCHANGE | WRITE4BYTE_MULTIPLE |
| DATA_EXCHANGE |
DATA_EXCHANGE | WRITE_MULTIPLE |
| DATA_EXCHANGE |
DATA_EXCHANGE | LOCK |
| DATA_EXCHANGE |
DATA_EXCHANGE | QUERY_LOCK |
| DATA_EXCHANGE |
DATA_EXCHANGE | READ_UNADDRESSED |
| DATA_EXCHANGE |
DATA_EXCHANGE | DATA_READ_O |
| DATA_EXCHANGE |
DATA_EXCHANGE | READ_FLAGS |
| DATA_EXCHANGE |
DATA_EXCHANGE | READ_VARIABLE |
| DATA_EXCHANGE |
DATA_EXCHANGE | READ_PORT |
| DATA_EXCHANGE |
6.2.5. Антиколлизионный алгоритм
6.2.5.1 Общие сведения об антиколлизионном алгоритме
Устройство опроса может использовать команды GROUP_SELECT и GROUP_UNSELECT, чтобы определить все множество или подмножество радиочастотных меток, находящихся в рабочей области, для участия в антиколлизионном алгоритме. Затем устройство опроса может использовать команды идентификации для выполнения антиколлизионного алгоритма.
Для участия в антиколлизионном алгоритме радиочастотная метка должна иметь два компонента аппаратного обеспечения:
- 8-битовый счетчик COUNT;
- генератор случайных чисел (с двумя возможными значениями '0' или '1').
Сначала команда GROUP_SELECT переводит группу радиочастотных меток в состояние ID, причем они устанавливают свои внутренние счетчики на '0'. Для возвращения подмножества радиочастотных меток указанной группы в состояние READY можно применить команду GROUP_UNSELECT. До начала процесса идентификации могут быть выбраны и другие группы. Результаты моделирования показывают отсутствие преимуществ идентификации одной группы по сравнению с идентификацией нескольких меньших по размеру групп.
После выбора радиочастотных меток выполняются следующие действия:
1) Все радиочастотные метки в состоянии ID со значением счетчика COUNT, установленным на '0', должны передать свой идентификатор TID. Это начальное множество включает все выбранные радиочастотные метки.
2) Если передачу осуществляют несколько радиочастотных меток, устройство опроса воспринимает их ответы как ошибку и передает команду FAIL.
3) Получившие команду FAIL радиочастотные метки со значением счетчика COUNT, не равным '0', увеличивают его значение на '1'. При этом время их возможной передачи отдаляется.
Получившие команду FAIL радиочастотные метки со значением счетчика COUNT, равным '0' (то есть те радиочастотные метки, которые только что вели передачу), генерируют случайное число. Если случайное число равно '1', радиочастотная метка увеличивает значение своего счетчика на '1' и лишается возможности вести передачу. Если случайное число равно '0', радиочастотная метка оставляет значение своего счетчика равным '0' и повторно передает свой идентификатор TID.
Далее реализуется один из следующих вариантов:
4) Если передачу ведут несколько радиочастотных меток, то повторяется этап 2 с выдачей команды FAIL (Вариант 1).
5) Если случайное число у всех радиочастотных меток оказывается равным '1', то ни одна радиочастотная метка не ведет передачу. Устройство опроса не получает сигнал ответа и передает команду SUCCESS. Значение счетчиков всех радиочастотных меток уменьшается на '1'. Радиочастотные метки, значение счетчика которых оказалось равным '0', отправляют ответ. После этого обычно происходит возврат на этап 2 (Вариант 2).
6) Если передачу ведет только одна радиочастотная метка и ее идентификатор TID принят, устройство опроса посылает команду DATA_READ с указанием идентификатора ID. Если команда DATA_READ принята правильно, радиочастотная метка переходит в состояние DATA_EXCHANGE и передает свои данные.
Устройство опроса передает команду SUCCESS. Все радиочастотные метки, находящиеся в состоянии ID, уменьшают значение своего счетчика COUNT на единицу.
7) Если только у одной радиочастотной метки значение счетчика равно '1' и она ведет передачу, то после этого повторяется этап 5 или 6. Если передачу ведут несколько радиочастотных меток, то повторяется этап 2 (Вариант 3).
8) Если передачу ведет только одна радиочастотная метка, а идентификатор TID принят с ошибкой, то устройство опроса выдает команду RESEND. Если идентификатор TID принят правильно, то повторяется этап 5. Если идентификатор TID повторно принят определенное число раз (число устанавливается в зависимости от требуемого уровня надежности работы системы), то предполагается, что передачу ведут несколько радиочастотных меток, и повторяется этап 2 (Вариант 4).
6.2.5.2 Специальный антиколлизионный алгоритм
В случае, когда составляющие данных пользователя являются уникальными или вероятность совпадения информации достаточно низка, для разрешения коллизий могут использоваться команды FAIL_O, SUCCESS_O и DATA_READ_O. При этом применяется обычный антиколлизионный алгоритм, но в качестве идентификатора ID используются 32 или 64 бита данных пользователя, начиная с адреса памяти '14'.
Кроме указанного выше применения, команды GROUP_SELECT и GROUP_UNSELECT также могут применяться в сочетании с командами с постфиксом "_", использующими 32-битовый идентификатор. В этом случае команда GROUP_SELECT выбирает только те радиочастотные метки, у которых старшие 32 бита 64-битового идентификатора метки TID равны нулю, после чего проверяет, не осталось ли радиочастотных меток, у которых старшие 32 бита 64-битового идентификатора содержат не только нули.
6.2.6. Команды
Команды делятся на четыре функциональные группы:
- команды выбора;
- команды идентификации;
- команды передачи данных;
- многоцелевые команды.
Существуют следующие классы команд (см. таблицу 15):
- обязательные команды;
- дополнительные команды;
- команды пользователя;
- команды изготовителя.
Таблица 15
Классы команд
Код | Класс команд | Число возможных кодов |
'00' - '0A', '0C', '15', '1E' - '3F' | Обязательные | 47 |
'0B', '0D' - '0F', '11' - '13', '17' - '1D', '40 ' - '9F' | Дополнительные | 110 |
'A0' - 'DF' | Пользователя | 64 |
'10', '14', '16', 'E0' - 'FF' | Изготовителя | 35 |
6.2.7. Классы команд
6.2.7.1 Общие сведения о классах команд
Все радиочастотные метки с одинаковым кодом изготовителя и номером версии интегральной микросхемы должны выполнять все команды одинаково.
6.2.7.2 Обязательные команды
Коды обязательных команд имеют значения от '00' до '0A', '0C', '15' и от '1E' до '3F'.
Обязательные команды должны поддерживать все радиочастотные метки, соответствующие настоящему стандарту.
Устройства опроса, соответствующие настоящему стандарту, также должны поддерживать все обязательные команды.
Обязательные команды должны применяться согласно настоящему стандарту.
6.2.7.3 Дополнительные команды
Коды дополнительных команд имеют значения '0B', от '0D' до '0F', от '11' до '13', от '17' до '1D' и от '40' до '9F'.
Дополнительные команды определены в настоящем стандарте. Технические возможности устройств опроса должны обеспечивать поддержку всех дополнительных команд (хотя практическая реализация указанных команд может не потребоваться). Радиочастотные метки могут поддерживать дополнительные команды, но это не является обязательным.
Если дополнительная команда используется, она должна соответствовать требованиям настоящего стандарта.
Если радиочастотная метка не поддерживает полученную дополнительную команду, она не должна передавать никаких ответных сообщений.
Примечание - Дополнительные команды с кодами '0B', '0D' - '13' и '17' - '1D' не являются необходимыми для функционирования радиочастотных меток. Но в целях улучшения рабочих характеристик рекомендуется, чтобы радиочастотные метки поддерживали команды, которые в таблице 16 указаны как "рекомендуемые".
6.2.7.4 Команды пользователя
Коды команд пользователя имеют значения от 'A0' до 'DF'.
Радиочастотные метки могут поддерживать команды пользователя, обеспечивая выполнение определенных изготовителем специфических функций. В команде пользователя можно оперировать только полями параметров и данных.
Все команды пользователя в качестве первого параметра содержат код изготовителя интегральных микросхем. Это позволяет изготовителям ИС вводить указанные команды без риска дублирования кодов других команд и исключает возможность их неправильной интерпретации. Команды пользователя являются допустимыми, но не определяются в настоящем стандарте.
Не допускается, чтобы команда пользователя каким-либо образом дублировала функциональные возможности обязательных или дополнительных команд, определенных в настоящем стандарте.
Если радиочастотная метка не поддерживает полученную команду пользователя, она не должна передавать никаких сообщений.
6.2.7.5 Команды изготовителя
Коды команд изготовителя имеют значения '10', '14', '16' и 'E0' - 'FF'.
Изготовители интегральных микросхем и радиочастотных меток применяют указанные команды для различных целей (например, испытаний, программирования системной информации и т.д.). Изготовитель интегральной микросхемы вправе решить, документировать указанные команды или нет. После изготовления микросхемы и/или радиочастотной метки указанные команды разрешается заблокировать.
Команды изготовителя являются допустимыми, но не определяются в настоящем стандарте. Не допускается, чтобы команда изготовителя каким-либо образом дублировала функциональные возможности обязательных или дополнительных команд, определенных в настоящем стандарте.
6.2.7.6 Коды и формат команд
6.2.7.6.1 Общие сведения о кодах и формате команд
Коды и формат команд приведены в таблице 16.
Таблица 16
Коды и формат команд
Код команды | Класс команды | Наименование команды | Параметры | |||
'00' | Обязательная | GROUP_SELECT_EQ | ADDRESS | BYTE_MASK | WORD_DATA | |
'01' | Обязательная | GROUP_SELECT_NE | ADDRESS | BYTE_MASK | WORD_DATA | |
'02 | Обязательная | GROUP_SELECT_GT | ADDRESS | BYTE_MASK | WORD_DATA | |
'03' | Обязательная | GROUP_SELECT_LT | ADDRESS | BYTE_MASK | WORD_DATA | |
'04' | Обязательная | GROUP_UNSELECT_EQ | ADDRESS | BYTE_MASK | WORD_DATA | |
'05' | Обязательная | GROUP_UNSELECT_NE | ADDRESS | BYTE_MASK | WORD_DATA | |
'06' | Обязательная | GROUP_UNSELECT_GT | ADDRESS | BYTE_MASK | WORD_DATA | |
'07' | Обязательная | GROUP_UNSELECT_LT | ADDRESS | BYTE_MASK | WORD_DATA | |
'08' | Обязательная | FAIL | Нет | Нет | Нет | |
'09' | Обязательная | SUCCESS | Нет | Нет | Нет | |
'0A' | Обязательная | INITIALIZE | Нет | Нет | Нет | |
'0B' | Рекомендуемая | DATA_READ | ID | ADDRESS | Нет | |
'0C' | Обязательная | READ | ID | ADDRESS | Нет | |
'0D' | Рекомендуемая | WRITE | ID | ADDRESS | BYTE_DATA | |
'0E' | Рекомендуемая | WRITE_MULTIPLE | Нет | ADDRESS | BYTE_DATA | |
'0F' | Рекомендуемая | LOCK | ID | ADDRESS | Нет | |
'10' | Изготовителя | Зависит от изготовителя ИС |
|
|
| |
'11' | Рекомендуемая | QUERY_LOCK | ID | ADDRESS | Нет | |
'12' | Рекомендуемая | READ_VERIFY | ID | ADDRESS | Нет | |
'13' | Рекомендуемая | MULTIPLE_UNSELECT | ADDRESS | BYTE_DATA | Нет | |
'14' | Изготовителя | Зависит от изготовителя ИС |
|
|
| |
'15' | Обязательная | RESEND | Нет | Нет | Нет | |
'16' | Изготовителя | Зависит от изготовителя ИС |
|
|
| |
'17' | Рекомендуемая | GROUP_SELECT_EQ_FLAGS | Нет | BYTE_MASK | BYTE_DATA | |
'18' | Рекомендуемая | GROUP_SELECT_NE_FLAGS | Нет | BYTE_MASK | BYTE_DATA | |
'19' | Рекомендуемая | GROUP_UNSELECT_EQ_FLAGS | Нет | BYTE_MASK | BYTE_DATA | |
'1A' | Рекомендуемая | GROUP_UNSELECT_NE_FLAGS | Нет | BYTE_MASK | BYTE_DATA | |
'1B' | Рекомендуемая | WRITE4BYTE | ID | ADDRESS | BYTE_MASK | 4BYTE_DATA |
'1C' | Рекомендуемая | WRITE4BYTE_MULTIPLE | ADDRESS | BYTE_MASK | 4BYTE_DATA | |
'1D' | Рекомендуемая | READ_VERIFY_4BYTE | ID | ADDRESS | нет | |
'1E' - '3F' | Обязательная | RFU |
|
|
| |
'40', '41' | Дополнительная | FAIL_O | Нет | Нет | Нет | |
'42', '43' | Дополнительная | SUCCESS_O | Нет | Нет | Нет | |
'44', '45' | Дополнительная | DATA_READ_O | ID | ADDRESS | Нет | |
'46', '47' | Дополнительная | RESEND_O | Нет | Нет | Нет | |
'48' - '4F' | Дополнительная | RFU |
|
|
| |
'50' | Дополнительная | READ_FLAGS | ID | ADDRESS | Нет | |
'51' | Дополнительная | READ_VARIABLE | ID | ADDRESS | LENGTH | |
'52' | Дополнительная | READ_PORT | ID | ADDRESS | Нет | |
'53' | Дополнительная | READ_UNADDRESSED |
| ADDRESS | Нет | |
'54' - '9F' | Дополнительная | RFU |
|
|
| |
'A0' - 'DF' | Пользователя | Зависит от изготовителя ИС |
|
|
| |
'E0' - 'FF' | Изготовителя | Зависит от изготовителя ИС |
|
|
|
6.2.7.6.2 Поля команд
Поля команд приведены в таблице 17.
Таблица 17
Поля команд
Наименование поля | Размер поля, байт |
Код команды COMMAND | 1 |
Адрес ADDRESS | 1 |
Маска BYTE_MASK | 1 |
Идентификатор ID | 8 |
Данные WORD_DATA | 8 |
Данные BYTE_DATA | 1 |
Данные 4BYTE_DATA | 4 |
Длина LENGTH | 1 |
Код CRC-16 | 2 |
6.2.7.6.3 Ответы радиочастотной метки
Ответы радиочастотной метки приведены в таблице 18.
Таблица 18
Ответы радиочастотной метки
Код ответа | Наименование ответа | Размер ответа, байт |
'00' | ACKNOWLEDGE | 1 |
ACKNOWLEDGE_NOK | 1 | |
'01' | ACKNOWLEDGE_OK | 1 |
'FE' | ERROR_NOK | 1 |
'FF' | ERROR | 1 |
ERROR_OK | 1 | |
Не применяется | Данные WORD_DATA | 8 |
Не применяется | Данные VARIABLE DATA | = длине LENGTH |
Не применяется | Данные BYTE_DATA | 1 |
| CRC-16 | 2 |
| ID | 8 |
6.2.7.7 Команды выбора
6.2.7.7.1 Общие сведения о командах выбора
Команды выбора определяют подмножество радиочастотных меток, находящихся в рабочей области устройства опроса, для идентификации или записи, а также могут быть использованы в антиколлизионном алгоритме.
6.2.7.7.2 Сравнение данных для команд выбора по содержанию памяти
Команды выбора радиочастотных меток по содержанию памяти:
- GROUP_SELECT_EQ;
- GROUP_SELECT_NE;
- GROUP_SELECT_GT;
- GROUP_SELECT_LT;
- GROUP_UNSELECT_EQ;
- GROUP_UNSELECT_NE;
- GROUP_UNSELECT_GT;
- GROUP_UNSELECT_LT.
Каждая из перечисленных команд имеет три аргумента (параметр и данные):
- Адрес ADDRESS;
- Маска BYTE_MASK;
- Данные WORD_DATA.
Радиочастотная метка выполняет одно из 4 возможных сравнений:
- EQ - M EQUAL D (M равно D);
- NE - M NOT EQUAL D (M не равно D);
- GT - M GREATER THAN D (M больше D);
- LT - M LOWER THAN D (M меньше D).
Аргументы сравнения для радиочастотных меток приведены в таблице 19.
Таблица 19
Аргументы сравнения
M7 (MSB) | M6 | M5 | M4 | M3 | M2 | M1 | M0 (LSB) |
Байт памяти по адресу ADRESS+0 | Байт памяти по адресу ADRESS+1 | Байт памяти по адресу ADRESS+2 | Байт памяти по адресу ADRESS+3 | Байт памяти по адресу ADRESS+4 | Байт памяти по адресу ADRESS+5 | Байт памяти по адресу ADRESS+6 | Байт памяти по адресу ADRESS+7 |
M = M0 + M1 * 28 + M2 * 216 + M3 * 224 + M4 * 232 + M5 * 240 + M6 * 248 + M7 * 256.
Аргументы сравнения для команды приведены в таблице 20.
Таблица 20
Аргументы сравнения для команды
D7 (MSB) | D6 | D5 | D4 | D3 | D2 | D1 | D0 (LSB) |
Первый байт данных команды |
| Последний байт данных команды |
D = D0 + D1 * 28 + D2 * 216 + D3 * 224 + D4 * 232 + D5 * 240 + D6 * 248 + D7 * 256.
Маска BYTE_MASK, приведенная в таблице 21, определяет байты, участвующие в сравнении.
Таблица 21
Маска сравнения данных
для команд GROUP_SELECT и GROUP_UNSELECT
Маска BYTE_MASK | Данные WORD_DATA |
Бит 7 (MSB) установлен | D7 и M7 участвуют в сравнении |
Бит 6 установлен | D6 и M6 участвуют в сравнении |
Бит 5 установлен | D5 и M5 участвуют в сравнении |
Бит 4 установлен | D4 и M4 участвуют в сравнении |
Бит 3 установлен | D3 и M3 участвуют в сравнении |
Бит 2 установлен | D2 и M2 участвуют в сравнении |
Бит 1 установлен | D1 и M1 участвуют в сравнении |
Бит 0 (LSB) установлен | D0 и M0 участвуют в сравнении |
Бит 7 (MSB) обнулен | D7 и M7 игнорируются при сравнении |
Бит 6 обнулен | D6 и M6 игнорируются при сравнении |
Бит 5 обнулен | D5 и M5 игнорируются при сравнении |
Бит 4 обнулен | D4 и M4 игнорируются при сравнении |
Бит 3 обнулен | D3 и M3 игнорируются при сравнении |
Бит 2 обнулен | D2 и M2 игнорируются при сравнении |
Бит 1 обнулен | D1 и M1 игнорируются при сравнении |
Бит 0 (LSB) обнулен | D0 и M0 игнорируются при сравнении |
6.2.7.7.3 Сравнение данных для команд выбора по флагам
- Команды выбора радиочастотных меток по флагам:
- GROUP_SELECT_EQ_FLAGS;
- GROUP_SELECT_NE_FLAGS;
- GROUP_UNSELECT_EQ_FLAGS;
- GROUP_UNSELECT_NE_FLAGS.
Каждая из перечисленных команд имеет два аргумента (параметр и данные):
- Маска BYTE_MASK;
- Данные BYTE_DATA.
Радиочастотная метка выполняет два возможных сравнения:
- EQ - FLAGS EQUAL D (FLAGS равны D);
- NE - FLAGS NOT EQUAL D (FLAGS не равны D).
Аргументами сравнения является поле флагов FLAGS в соответствии с 6.2.1.3 и аргумент команды D, включающий биты с D7 (MSB) по D0 (LSB).
Маска BYTE_MASK, приведенная в таблице 22, определяет биты, участвующие в сравнении.
Таблица 22
Маска сравнения данных для команд GROUP_SELECT_FLAGS
и GROUP_UNSELECT_FLAGS
Маска BYTE_MASK | Данные BYTE _DATA |
Бит 7 (MSB) задан | Значения D7 и FLAG7 участвуют в сравнении |
Бит 6 задан | Значения D6 и FLAG6 участвуют в сравнении |
Бит 5 задан | Значения D5 и FLAG5 участвуют в сравнении |
Бит 4 задан | Значения D4 и FLAG4 участвуют в сравнении |
Бит 3 задан | Значения D3 и FLAG3 участвуют в сравнении |
Бит 2 задан | Значения D2 и FLAG2 участвуют в сравнении |
Бит 1 задан | Значения D1 и FLAG1 участвуют в сравнении |
Бит 0 (LSB) задан | Значения D0 и FLAG0 участвуют в сравнении |
Бит 7 (MSB) обнулен | Значения D7 и FLAG7 игнорируются при сравнении |
Бит 6 обнулен | Значения D6 и FLAG6 игнорируются при сравнении |
Бит 5 обнулен | Значения D5 и FLAG5 игнорируются при сравнении |
Бит 4 обнулен | Значения D4 и FLAG4 игнорируются при сравнении |
Бит 3 обнулен | Значения D3 и FLAG3 игнорируются при сравнении |
Бит 2 обнулен | Значения D2 и FLAG2 игнорируются при сравнении |
Бит 1 обнулен | Значения D1 и FLAG1 игнорируются при сравнении |
Бит 0 (LSB) обнулен | Значения D0 и FLAG0 игнорируются при сравнении |
Примечание - В приведенных ниже формулах применяются следующие символы сравнения:
"=" - "РАВНО";
"!=" - "НЕ РАВНО";
"!" - логическое "НЕ" булевой алгебры.
Формула, описывающая функцию равенства EQUAL:
Сравнение EQUAL выполняется, если [!B7+(D7=FLAG7)] * [!B6+(D6=FLAG6)] * [!B5+(D5=FLAG5)] * [!B4+(D4=FLAG4)] * [!B3+(D3=FLAG3)] * [!B2+(D2=FLAG2)] * [!B1+(D1=FLAG1)] * [!B0+(D0=FLAG0)] верно.
Формула, описывающая функцию неравенства UNEQUAL:
Сравнение UNEQUAL выполняется, если B7*(D7!=FLAG7) + B6*(D6!=FLAG6) + B5*(D5!=FLAG5) + B4*(D4!=FLAG4) + B3*(D3!=FLAG3) + B2*(D2!=FLAG2) + B1*(D1!=FLAG1) + B0*(D0!=FLAG0) верно.
6.2.7.7.4 Команда GROUP_SELECT_EQ
Код команды '00'
При получении команды GROUP_SELECT_EQ (см. таблицу 23) радиочастотная метка, находящаяся в состоянии READY, должна прочитать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если считанные данные памяти равны данным WORD_DATA, радиочастотная метка должна обнулить свой счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 24), а затем перейти в состояние ID.
При получении команды GROUP_SELECT_EQ в состоянии ID радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его устройству опроса, оставшись в состоянии ID.
В остальных случаях радиочастотная метка не передает ответ.
Таблица 23
Команда GROUP_SELECT_EQ
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 24
Ответ на команду GROUP_SELECT_EQ при отсутствии ошибки
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
Примечание - Если значение поля маски BYTE_MASK равно нулю, то по команде GROUP_SELECT_EQ будут выбраны все радиочастотные метки.
6.2.7.7.5 Команда GROUP_SELECT_NE
Код команды = '01'
При получении команды GROUP_SELECT_NE (см. таблицу 25) радиочастотная метка, находящаяся в состоянии READY, должна считать 8 байт содержания памяти, начиная с указанного адреса, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти не равно данным WORD_DATA, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 26), а затем перейти в состояние ID.
При получении команды GROUP_SELECT_NE в состоянии ID радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его устройству опроса, оставшись в состоянии ID.
Во всех остальных случаях радиочастотная метка не передает ответ.
Таблица 25
Команда GROUP_SELECT_NE
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 26
Ответ на команду GROUP_SELECT_NE при отсутствии ошибки
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.6 Команда GROUP_SELECT_GT
Код команды = '02'
При получении команды GROUP_SELECT_GT (см. таблицу 27) радиочастотная метка, находящаяся в состоянии READY, должна считать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти больше данных WORD_DATA, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 28), а затем перейти в состояние ID.
При получении команды GROUP_SELECT_GT в состоянии ID радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его устройству опроса, оставшись в состоянии ID.
Во всех остальных случаях радиочастотная метка не передает ответ.
Таблица 27
Команда GROUP_SELECT_GT
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 28
Ответ на команду GROUP_SELECT_GT при отсутствии ошибки
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.7 Команда GROUP_SELECT_LT
Код команды = '03'
При получении команды GROUP_SELECT_LT (см. таблицу 29) радиочастотная метка, находящаяся в состоянии READY, должна прочитать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти меньше данных WORD_DATA, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 30), а затем перейти в состояние ID.
При получении команды GROUP_SELECT_LT в состоянии ID радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его устройству опроса, оставшись в состоянии ID.
Во всех остальных случаях радиочастотная метка не передает ответ.
Таблица 29
Команда GROUP_SELECT_LT
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 30
Ответ на команду GROUP_SELECT_LT при отсутствии ошибки
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.8 Команда GROUP_UNSELECT_EQ
Код команды = '04'
При получении команды GROUP_UNSELECT_EQ (см. таблицу 31) радиочастотная метка, находящаяся в состоянии ID, должна прочитать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти равно данным WORD_DATA, радиочастотная метка должна перейти в состояние READY, не передавая ответ.
Если заданное сравнение не выполняется, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 32).
В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 31
Команда GROUP_UNSELECT_EQ
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 32
Ответ на команду GROUP_UNSELECT_EQ
при отсутствии ошибки и невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
Примечание - Если значение поля маски BYTE_MASK равно нулю, то по команде GROUP_UNSELECT_EQ будет отменен выбор всех радиочастотных меток.
6.2.7.7.9 Команда GROUP_UNSELECT_NE
Код команды = '05'
При получении команды GROUP_UNSELECT_NE (см. таблицу 33) радиочастотная метка, находящаяся в состоянии ID, должна считать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти не равно данным WORD_DATA, радиочастотная метка должна перейти в состояние READY, не передавая ответ.
Если заданное сравнение не выполняется, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 34).
В остальных случаях радиочастотная метка не передает ответ.
Таблица 33
Команда GROUP_UNSELECT_NE
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 34
Ответ на команду GROUP_UNSELECT_NE
при отсутствии ошибки и невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.10 Команда GROUP_UNSELECT_GT
Код команды = '06'
При получении команды GROUP_UNSELECT_GT (см. таблицу 35) радиочастотная метка, находящаяся в состоянии ID, должна считать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти больше данных WORD_DATA, радиочастотная метка должна перейти в состояние READY и не передавать ответ.
Если заданное сравнение не выполняется, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 36).
В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 35
Команда GROUP_UNSELECT_GT
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 36
Ответ на команду GROUP_UNSELECT_GT
при отсутствии ошибки и невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.11 Команда GROUP_UNSELECT_LT
Код команды = '07'
При получении команды GROUP_UNSELECT_LT (см. таблицу 37) радиочастотная метка, находящаяся в состоянии ID, должна считать 8 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом WORD_DATA, переданным устройством опроса. Если содержание памяти меньше данных WORD_DATA, радиочастотная метка должна перейти в состояние READY и не передавать ответ.
Если заданное сравнение не выполняется, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 38).
В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 37
Команда GROUP_UNSELECT_LT
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные WORD_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 64 бита | 16 бит |
Таблица 38
Ответ на команду GROUP_UNSELECT_LT
при отсутствии ошибки и невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.12 Команда MULTIPLE_UNSELECT
Код команды = '13'
При получении команды MULTIPLE_UNSELECT (см. таблицу 39) радиочастотная метка, находящаяся в состоянии ID, должна прочитать 1 байт содержания памяти, начиная с указанного адреса ADDRESS, и сравнить его с аргументом BYTE_DATA, переданным устройством опроса. Если содержание памяти равно данным BYTE_DATA и флаг WRITE_OK установлен, радиочастотная метка должна перейти в состояние READY и не передавать ответ. Если указанные условия не выполняются, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 40).
В остальных случаях радиочастотная метка не передает ответ.
Таблица 39
Команда MULTIPLE_UNSELECT
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Данные BYTE_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 16 бит |
Таблица 40
Ответ на команду MULTIPLE_UNSELECT при неустановленном флаге
WRITE_OK и/или при невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
Данная команда может использоваться для отмены выбора всех радиочастотных меток, успешно осуществивших запись. Радиочастотные метки, неудачно выполнившие запись или имеющие проблемы при записи, остаются выбранными.
6.2.7.7.13 Команда GROUP_SELECT_EQ_FLAGS
Код команды = '17'
При получении команды GROUP_SELECT_EQ_FLAGS (см. таблицу 41) радиочастотная метка, находящаяся в состоянии READY, должна сравнить данные поля флагов FLAGS с аргументом BYTE_DATA, переданным устройством опроса. Если флаги FLAGS равны переданным данным BYTE_DATA, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 42), а затем перейти в состояние ID.
При получении команды GROUP_SELECT_EQ_FLAGS радиочастотная метка, находящаяся в состоянии ID, должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса, оставшись в состоянии ID.
В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 41
Команда GROUP_SELECT_EQ_FLAGS
Заголовок | Разделитель | Код команды | Маска BYTE_MASK | Данные BYTE_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 16 бит |
Таблица 42
Ответ на команду GROUP_SELECT_EQ_FLAGS при отсутствии ошибки
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
Примечание - Если значение в поле маски BYTE_MASK равно нулю, то по команде GROUP_SELECT_EQ_FLAGS будут выбраны все радиочастотные метки.
6.2.7.7.14 Команда GROUP_SELECT_NE_FLAGS
Код команды = '18'
При получении команды GROUP_SELECT_NE_FLAGS (см. таблицу 43) радиочастотная метка, находящаяся в состоянии READY, должна сравнить данные поля флагов FLAGS с аргументом BYTE_DATA, переданным устройством опроса. Если флаги FLAGS не равны переданным данным BYTE_DATA, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 44), а затем перейти в состояние ID.
При получении команды GROUP_SELECT_NE_FLAGS радиочастотная метка, находящаяся в состоянии ID, должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса, оставшись в состоянии ID.
В остальных случаях радиочастотная метка не передает ответ.
Таблица 43
Команда GROUP_SELECT_NE_FLAGS
Заголовок | Разделитель | Код команды | Маска BYTE_MASK | Данные BYTE_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 16 бит |
Таблица 44
Ответ на команду GROUP_SELECT_NE_FLAGS при отсутствии ошибки
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.7.15 Команда GROUP_UNSELECT_EQ_FLAGS
Код команды = '19'
При получении команды GROUP_UNSELECT_EQ_FLAGS (см. таблицу 45) радиочастотная метка, находящаяся в состоянии ID, должна сравнить данные поля флагов FLAGS с аргументом BYTE_DATA, переданным устройством опроса. Если флаги FLAGS равны переданным данным BYTE_DATA, радиочастотная метка должна перейти в состояние READY и не передавать ответ.
Если заданное сравнение не выполняется, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 46).
В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 45
Команда GROUP_UNSELECT_EQ_FLAGS
Заголовок | Разделитель | Код команды | Маска BYTE_MASK | Данные BYTE_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 16 бит |
Таблица 46
Ответ на команду GROUP_UNSELECT_EQ_FLAGS при отсутствии
ошибки и невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
Примечание - Если значение в поле маски BYTE_MASK равно нулю, то по команде GROUP_UNSELECT_EQ_FLAGS выбор всех радиочастотных меток будет отменен.
6.2.7.7.16 Команда GROUP_UNSELECT_NE_FLAGS
Код команды = '1A'
При получении команды GROUP_UNSELECT_NE_FLAGS (см. таблицу 47) радиочастотная метка, находящаяся в состоянии ID, должна сравнить данные поля флагов FLAGS с аргументом BYTE_DATA, переданным устройством опроса. Если флаги FLAGS не равны переданным данным BYTE_DATA, радиочастотная метка должна перейти в состояние READY и не передавать ответ.
Если заданное сравнение не выполняется, радиочастотная метка должна обнулить свой внутренний счетчик COUNT, считать свой идентификатор TID и передать его в ответе устройству опроса (см. таблицу 48).
В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 47
Команда GROUP_UNSELECT_NE_FLAGS
Заголовок | Разделитель | Код команды | Маска BYTE_MASK | Данные BYTE_DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 16 бит |
Таблица 48
Ответ на команду GROUP_UNSELECT_NE_FLAGS
при отсутствии ошибки и невыполнении сравнения
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.8 Команды идентификации
6.2.7.8.1 Общие сведения о командах идентификации
Данные команды служат для выполнения процедуры идентификации множества радиочастотных меток.
6.2.7.8.2 Команда FAIL
Код команды = '08'
В алгоритме идентификации используется команда FAIL, когда одновременно несколько радиочастотных меток передают ответы в процессе их идентификации. По данной команде часть радиочастотных меток прекращает передачу, другие - осуществляют передачу повторно.
Радиочастотная метка должна выполнять команду FAIL, указанную в таблице 49, только в состоянии ID. Если ее внутренний счетчик COUNT отличен от нуля или результатом генерации случайного числа является '1', значение счетчика COUNT увеличивается на '1' до тех пор, пока не достигнет значения FF. При достижении значения FF для последующих команд FAIL значение счетчика остается неизменным.
Если значение счетчика COUNT оказалось равным '0', то радиочастотная метка считывает свой идентификатор TID и передает его в ответе (см. таблицу 50).
Таблица 49
Команда FAIL
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
Таблица 50
Ответ на команду FAIL, если значение счетчика COUNT
равно нулю
Заголовок | Идентификатор TID | Код CRC-16 |
- | 64 бита | 16 бит |
6.2.7.8.3 Команда SUCCESS
Код команды = '09'
Команда SUCCESS инициирует идентификацию следующей группы радиочастотных меток и применяется в двух случаях:
- при невыполнении передачи радиочастотными метками, получившими команду FAIL, заставляя их повторно осуществить передачу;
- после перехода идентифицированной радиочастотной метки в состояние DATA_EXCHANGE по команде DATA_READ, заставляя оставшуюся подгруппу выбранных, но не идентифицированных радиочастотных меток осуществить передачу.
Радиочастотная метка должна выполнять команду SUCCESS, указанную в таблице 51, только находясь в состоянии ID. Если значение внутреннего счетчика COUNT радиочастотной метки отлично от нуля, оно должно уменьшиться на '1'.
Если полученное значение COUNT оказалось равным '0', радиочастотная метка должна считать свой идентификатор TID и передать его в ответе (см. таблицу 52).
Таблица 51
Команда SUCCESS
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
Таблица 52
Ответ на команду SUCCESS, если значение счетчика COUNT
равно нулю
Заголовок | Идентификатор TID | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.8.4 Команда RESEND
Код команды = '15'
Алгоритм идентификации использует команду RESEND, если передачу осуществляет только одна радиочастотная метка, идентификатор TID которой был принят с ошибкой. По данной команде радиочастотная метка передает свой идентификатор TID повторно.
Радиочастотная метка должна принимать команду RESEND, указанную в таблице 53, только находясь в состоянии ID. Если значение счетчика COUNT равно нулю, радиочастотная метка должна считать свой идентификатор TID и передать его в ответе (см. таблицу 54).
Таблица 53
Команда RESEND
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
Таблица 54
Ответ на команду RESEND, если значение счетчика COUNT
равно нулю
Заголовок | Идентификатор TID | Код CRC-16 |
- | 64 бита | 16 бит |
6.2.7.8.5 Команда INITIALIZE
Код команды = '0A'
При получении команды INITIALIZE, указанной в таблице 55, радиочастотная метка переходит в состояние READY и обнуляет бит Data_Exchange_Status_Bit.
Радиочастотная метка не передает ответ.
Таблица 55
Команда INITIALIZE
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
6.2.7.8.6 Команда FAIL_O
Код команды = '40' или '41'
Алгоритм идентификации использует команду FAIL_O, когда одновременно несколько радиочастотных меток передают свои ответы. По данной команде часть радиочастотных меток прекращает передачу, другие - осуществляют передачу повторно.
Радиочастотная метка должна выполнять команду FAIL_O, указанную в таблице 56, только находясь в состоянии ID. Если ее внутренний счетчик COUNT отличен от нуля или результатом генерации случайного числа является '1', значение счетчика COUNT увеличивается на '1' до тех пор, пока не достигнет FF.
Если после генерации случайного числа значение счетчика COUNT оказалось равным '0', то радиочастотная метка считывает данные из памяти, начиная с адреса '14', и передает в ответе или 32 бита (для кода команды '40'), или 64 бита (для кода команды '41') согласно таблице 57.
Таблица 56
Команда FAIL_O
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
Таблица 57
Ответ на команду FAIL_O, если значение счетчика COUNT
равно нулю
Заголовок | Данные WORD_DATA | Код CRC-16 |
| 32 или 64 бита | 16 бит |
6.2.7.8.7 Команда SUCCESS_O
Код команды = '42' или '43'
Команда SUCCESS_O инициирует идентификацию следующей группы радиочастотных меток и применяется в двух случаях:
- при отсутствии передачи данных от радиочастотных меток, получивших команду FAIL_O, заставляя их повторно осуществить передачу;
- после перехода идентифицированной радиочастотной метки в состояние DATA_EXCHANGE по команде DATA_READ_O, заставляя осуществить передачу оставшуюся подгруппу выбранных, но не идентифицированных радиочастотных меток.
Радиочастотная метка должна выполнять команду SUCCESS_O, указанную в таблице 58, только находясь в состоянии ID. Если значение внутреннего счетчика COUNT радиочастотной метки отлично от нуля, оно должно уменьшиться на '1'.
Если полученное значение COUNT оказалось равным '0', радиочастотная метка считывает данные из памяти, начиная с адреса '14', и передает в ответе или 32 бита (для кода команды '42'), или 64 бита (для кода команды '43') согласно таблице 59.
Таблица 58
Команда SUCCESS_O
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
Таблица 59
Ответ на команду SUCCESS_O, если значение счетчика COUNT
равно нулю
Заголовок | Данные WORD_DATA | Код CRC-16 |
| 32 или 64 бита | 16 бит |
6.2.7.8.8 Команда RESEND_O
Код команды = '46' или '47'
Алгоритм идентификации использует команду RESEND_O, если передачу осуществляет только одна радиочастотная метка, идентификатор TID которой был принят с ошибкой. По данной команде радиочастотная метка повторно передает свой идентификатор TID.
Радиочастотная метка должна принимать команду RESEND_O, указанную в таблице 60, только находясь в состоянии ID. Если значение ее счетчика COUNT равно нулю, радиочастотная метка считывает данные из памяти, начиная с адреса '10', и передает в ответе или 32 бита (для кода команды '46'), или 64 бита (для кода команды '47') согласно таблице 61.
Таблица 60
Команда RESEND_O
Заголовок | Разделитель | Код команды | Код CRC-16 |
|
| 8 бит | 16 бит |
Таблица 61
Ответ на команду RESEND_O, если значение счетчика COUNT
равно нулю
Заголовок | Идентификатор TID | Код CRC-16 |
| 32 или 64 бита | 16 бит |
6.2.7.9 Команды передачи данных
6.2.7.9.1 Общие сведения о командах передачи данных
Команды передачи данных применяют для записи или считывания данных, хранящихся в памяти радиочастотной метки.
Для выполнения операций по блокировке памяти радиочастотная метка должна установить возможность блокировки по указанному адресу ADDRESS. Установку возможности блокировки по адресу ADDRESS осуществляют приведенные ниже команды, но только в том случае, если радиочастотная метка не пребывала до этого в состоянии POWER-OFF. При этом в течение операции может быть установлена возможность блокировки только по одному адресу.
6.2.7.9.2 Команда READ
Код команды = '0C'
При получении команды READ (см. таблицу 62) радиочастотная метка сравнивает переданный устройством опроса идентификатор ID со своим идентификатором TID. Если идентификаторы ID и TID совпадают, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать 8 байт памяти, начиная с указанного адреса ADDRESS, и передать считанные данные в ответе (см. таблицу 63). Затем радиочастотная метка должна установить возможность блокировки байта по указанному адресу ADDRESS. Если идентификаторы ID и TID не совпадают или возникли другие ошибки, радиочастотная метка не должна передавать ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 62
Команда READ
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 16 бит |
Таблица 63
Ответ на команду READ при отсутствии ошибок
Заголовок | Данные WORD_DATA | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.9.3 Команда DATA_READ
Код команды = '0B'
При получении команды DATA_READ (см. таблицу 64) радиочастотная метка, находящаяся в состоянии ID или DATA_EXCHANGE, сравнивает переданный устройством опроса идентификатор ID со своим идентификатором TID. Если идентификаторы ID и TID совпадают, радиочастотная метка из любого состояния, кроме READY, должна перейти в состояние DATA_EXCHANGE, считать 8 байт памяти, начиная с указанного адреса ADDRESS, и передать считанные данные в ответе (см. таблицу 65). Затем радиочастотная метка должна установить возможность блокировки байта по указанному адресу ADDRESS. Если радиочастотная метка находится в состоянии READY, или идентификаторы ID и TID не совпадают, или возникли другие ошибки, она не должна передавать ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 64
Команда DATA_READ
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 16 бит |
Таблица 65
Ответ на команду DATA_READ при отсутствии ошибок
Заголовок | Данные WORD_DATA | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.9.4 Команда DATA_READ_O
Код команды = '44' или '45'
При получении команды DATA_READ_O (см. таблицу 66) радиочастотная метка, находящаяся в состоянии ID или DATA_EXCHANGE, сравнивает переданные устройством опроса данные DATA с содержанием памяти, начинающимся с адреса '14'. Объем сравниваемых данных зависит от кода команды. Если код полученной команды '44', радиочастотная метка логически сравнивает 32 бита. Если код команды '45', радиочастотная метка логически сравнивает 64 бита. Если строки данных (состоящие из 32 или 64 бит) равны, то радиочастотная метка из любого состояния, кроме READY, должна перейти в состояние DATA_EXCHANGE, считать 8 байт памяти по указанному адресу ADDRESS и передать считанные данные в ответе (см. таблицу 67). Затем радиочастотная метка должна установить возможность блокировки байта по указанному адресу ADDRESS. Если радиочастотная метка находится в состоянии READY, или строки данных оказались не равны, или возникли другие ошибки, она не должна передавать ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 66
Команда DATA_READ_O
Заголовок | Разделитель | Код команды | Данные DATA | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 32 или 64 бита | 8 бит | 16 бит |
Таблица 67
Ответ на команду DATA_READ_O при отсутствии ошибок
Заголовок | Данные WORD_DATA | Код CRC-16 |
| 64 бита | 16 бит |
6.2.7.9.5 Команда READ_FLAGS
Код команды = '50'
При получении команды READ_FLAGS (см. таблицу 68) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если идентификаторы ID и TID совпадают, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать содержание поля флагов FLAGS (данные BYTE_DATA) и передать его в ответе (см. таблицу 69). Если идентификаторы ID и TID не совпадают или возникла другая ошибка, радиочастотная метка не передает ответ.
Таблица 68
Команда READ_FLAGS
Заголовок | Разделитель | Код команды | Идентификатор ID | Код CRC-16 |
|
| 8 бит | 64 бита | 16 бит |
Таблица 69
Ответ на команду READ_FLAGS при отсутствии ошибок
Заголовок | Данные BYTE_DATA | Код CRC-16 |
| 8 бит | 16 бит |
6.2.7.9.6 Команда READ_VARIABLE
Код команды = '51'
При получении команды READ_VARIABLE (см. таблицу 70) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если они совпадают, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать содержание памяти указанной длины LENGTH, начиная с указанного адреса ADDRESS, и передать считанные данные в ответе (см. таблицу 71). Если идентификаторы ID и TID не совпадают или возникла другая ошибка, радиочастотная метка не должна передавать ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Длина LENGTH может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 70
Команда READ_VARIABLE
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Длина LENGTH | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 8 бит | 16 бит |
Таблица 71
Ответ на команду READ_VARIABLE при отсутствии ошибок
Заголовок | (LENGTH + 1) * BYTE_DATA | Код CRC-16 |
| (LENGTH + 1) * 8 бит | 16 бит |
6.2.7.9.7 Команда READ_PORT
Код команды = '52'
При получении команды READ_PORT (см. таблицу 72) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если они совпадают, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать 8 бит памяти, начиная с указанного адреса порта ADDRESS, и передать считанные данные в ответе (см. таблицу 73). Если идентификаторы ID и TID не совпадают или возникла другая ошибка, радиочастотная метка не передает ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении) <1>.
--------------------------------
<1> В оригинале ИСО/МЭК 18000-62 для данной команды кроме значений параметра ADDRESS ошибочно определены значения параметра LENGTH.
Таблица 72
Команда READ_PORT
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 16 бит |
Таблица 73
Ответ на команду READ_PORT при отсутствии ошибки
Заголовок | Данные BYTE_DATA | Код CRC-16 |
| 8 бит | 16 бит |
При выборе порта '0' должны считываться флаги, указанные в 6.2.1.3 и таблице 12.
Порты '1', '2', ... 'FF' зарезервированы для использования в будущем.
6.2.7.9.8 Команда READ_UNADDRESSED
Код команды = '53'
При получении команды READ_UNADDRESSED (см. таблицу 74) радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать 16 байт памяти, начиная с указанного адреса ADDRESS, и передать его в ответе (см. таблицу 75).
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 74
Команда READ_UNADDRESSED
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 8 бит | 16 бит |
Таблица 75
Ответ на команду READ_UNADDRESSED при отсутствии ошибки
Заголовок | Данные WORD_DATA | Данные WORD_DATA | Код CRC-16 |
| 64 бита | 64 бита | 16 бит |
6.2.7.9.9 Команда READ_VERIFY
Код команды = '12'
При получении команды READ_VERIFY (см. таблицу 76) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если они совпадают и флаг WRITE_OK установлен, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать 1 байт памяти по указанному адресу ADDRESS и передать считанные данные в ответе (см. таблицу 77). Затем радиочастотная метка должна установить возможность блокировки байта по указанному адресу ADDRESS. Если идентификаторы ID и TID не совпадают, или флаг WRITE_OK не установлен, или возникли другие ошибки, радиочастотная метка не передает ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 76
Команда READ_VERIFY
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 16 бит |
Таблица 77
Ответ на команду READ_VERIFY при отсутствии ошибок
Заголовок | Данные BYTE_DATA | Код CRC-16 |
| 8 бит | 16 бит |
6.2.7.9.10 Команда READ_VERIFY_4BYTE
Код команды = '1D'
При получении команды READ_VERIFY_4BYTE (см. таблицу 78) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если они совпадают и флаг WRITE_OK установлен, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE, считать 4 байта памяти, начиная с указанного адреса ADDRESS, и передать считанные данные в ответе (см. таблицу 79). Затем радиочастотная метка должна установить возможность блокировки байта по указанному адресу ADDRESS. Байты с адресами ADDRESS + 1, ADDRESS + 2 и ADDRESS + 3 не должны быть отмечены для блокировки.
Если идентификатор ID не совпадает с идентификатором TID радиочастотной метки, или флаг WRITE_OK не установлен, или возникли другие ошибки, радиочастотная метка не передает ответ.
Поле маски BYTE_MASK команды:
адресу каждого байта памяти соответствует бит маски BYTE_MASK, определяющий его считывание <1>;
[ADDR+0] - B7;
[ADDR+1] - B6;
[ADDR+2] - B5;
[ADDR+3] - B4.
--------------------------------
<1> В оригинале ИСО/МЭК 18000-62 ошибочно указано "запись".
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 78
Команда READ_VERIFY_4BYTE
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Маска BYTE_MASK | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 8 бит | 16 бит |
Таблица 79
Ответ на команду READ_VERIFY_4BYTE при отсутствии ошибки
Заголовок | Данные BYTE_DATA | Код CRC-16 |
| 4 байта | 16 бит |
6.2.7.9.11 Команда WRITE
Код команды = '0D'
При получении команды WRITE (см. таблицу 80) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если они совпадают, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE и считать информацию о состоянии блокировки памяти по указанному адресу ADDRESS. Если память заблокирована, радиочастотная метка отправляет сообщение об ошибке ERROR (см. таблицу 82), отмечая при этом возможность блокировки байта по указанному адресу ADDRESS. Если память не заблокирована, радиочастотная метка должна передать в ответе подтверждение ACKNOWLEDGE (см. таблицу 81) и записать данные в память по указанному адресу ADDRESS. В остальных случаях радиочастотная метка не должна передавать ответ.
Если запись выполнена успешно, радиочастотная метка устанавливает флаг WRITE_OK. В противном случае бит данного флага должен быть обнулен.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 80
Команда WRIT
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Данные BYTE_DATA | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 8 бит | 16 бит |
Таблица 81
Ответ на команду WRITE при отсутствии ошибки
Заголовок | ACKNOWLEDGE | Код CRC-16 |
- | 8 бит | 16 бит |
Таблица 82
Ответ на команду WRITE при заблокированной памяти
Заголовок | ERROR | Код CRC-16 |
- | 8 бит | 16 бит |
6.2.7.9.12 Команда WRITE4BYTE
Код команды = '1B'
При получении команды WRITE4BYTE (см. таблицу 83) радиочастотная метка должна сравнить переданный устройством опроса идентификатор ID со своим идентификатором TID. Если идентификатор ID совпадает с идентификатором TID, радиочастотная метка из любого состояния должна перейти в состояние DATA_EXCHANGE и считать информацию о состоянии блокировки 4 байт памяти, начиная с указанного адреса ADDRESS. Если хотя бы один байт заблокирован, радиочастотная метка отправляет в ответе сообщение об ошибке ERROR (см. таблицу 85). Если ни один байт не заблокирован, радиочастотная метка передает в ответе подтверждение ACKNOWLEDGE (см. таблицу 84) и записывает данные DATA по указанному адресу ADDRESS. В остальных случаях радиочастотная метка не должна передавать ответ.
Таблица 83
Команда WRITE4BYTE
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Маска BYTE_MASK | Данные DATA | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 8 бит | 32 бита | 16 бит |
Таблица 84
Ответ на команду WRITE4BYTE при отсутствии ошибки
Заголовок | ACKNOWLEDGE | Код CRC-16 |
| 8 бит | 16 бит |
Таблица 85
Ответ на команду WRITE4BYTE при заблокированной памяти
Заголовок | ERROR | Код CRC-16 |
| 8 бит | 16 бит |
Выполняя команду WRITE4BYTE, радиочастотная метка должна записывать данные только в те байты, которые выбраны с помощью маски BYTE_MASK, следовательно, запись может быть осуществлена в байты с 1 по 4 (в соответствии с установленными битами маски BYTE_MASK).
Если запись выполнена успешно, радиочастотная метка должна установить флаг WRITE_OK. В противном случае бит указанного флага должен быть обнулен.
Поле маски BYTE_MASK команды:
адресу каждого байта памяти соответствует бит маски BYTE_MASK, определяющий его запись;
[ADDR+0] - B7;
[ADDR+1] - B6;
[ADDR+2] - B5;
[ADDR+3] - B4.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Начальный адрес для команды WRITE4BYTE должен совпадать с началом 4-байтовой страницы памяти.
6.2.7.9.13 Команда LOCK
Код команды = '0F'
При получении команды LOCK (см. таблицу 86) радиочастотная метка, находящаяся в состоянии DATA_EXCHANGE, должна считать свой идентификатор TID и сравнить его с идентификатором ID, переданным устройством опроса. Если идентификаторы ID и TID совпадают, значение адреса ADDRESS находится в диапазоне действительных адресов и для байта с указанным адресом ADDRESS установлена возможность блокировки, радиочастотная метка должна передать в ответе подтверждение ACKNOWLEDGE (см. таблицу 87) и установить бит блокировки по указанному адресу ADDRESS.
Таблица 86
Команда LOCK
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Код CRC-16 |
|
| 8 бит | 64 бита | 8 бит | 16 бит |
Таблица 87
Ответ на команду LOCK при возможности блокировки
Заголовок | ACKNOWLEDGE | Код CRC-16 |
| 8 бит | 16 бит |
Если значение адреса ADDRESS находится за пределами диапазона действительных адресов или для байта по указанному адресу ADDRESS не установлена возможность блокировки, радиочастотная метка должна передать в ответе ACKNOWLEDGE_NOK (см. таблицу 88).
Таблица 88
Ответ LOCK при невозможности блокировки
Заголовок | ACKNOWLEDGE_NOK <1> | Код CRC-16 |
| 8 бит | 16 бит |
--------------------------------
<1> В оригинале ИСО/МЭК 18000-62 ошибочно указано 'ERROR'.
В остальных случаях радиочастотная метка не должна передавать ответ.
Если запись выполнена успешно, радиочастотная метка должна установить флаг WRITE_OK. В противном случае бит данного флага должен быть обнулен.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
6.2.7.9.14 Команда QUERY_LOCK
Код команды = '11'
При получении команды QUERY_LOCK радиочастотная метка должна считать свой идентификатор TID и сравнить его с идентификатором ID, переданным устройством опроса. Если идентификаторы TID и ID совпадают и значение адреса ADDRESS находится в диапазоне действительных адресов, радиочастотная метка должна перейти в состояние DATA_EXCHANGE. Затем радиочастотная метка должна считать бит блокировки для байта памяти по указанному адресу ADDRESS. Если указанный байт не заблокирован, радиочастотная метка должна передать в ответе или ACKNOWLEDGE_OK при установленном флаге WRITE_OK, или ACKNOWLEDGE_NOK, если флаг WRITE_OK обнулен. Если указанный байт заблокирован, радиочастотная метка передает в ответе или ERROR_OK при установленном флаге WRITE_OK, или ERROR_NOK, если флаг WRITE_OK обнулен. Далее для незаблокированного байта по указанному адресу ADDRESS метка устанавливает возможность блокировки.
В остальных случаях радиочастотная метка не передает ответ.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 89
Команда QUERY_LOCK
Заголовок | Разделитель | Код команды | Идентификатор ID | Адрес ADDRESS | Код CRC-16 |
- | - | 8 бит | 64 бита | 8 бит | 16 бит |
Таблица 90
Ответ на команду QUERY_LOCK, если память не заблокирована
и флаг WRITE_OK установлен
Заголовок | ACKNOWLEDGE_OK | Код CRC-16 |
| 8 бит | 16 бит |
Таблица 91
Ответ на команду QUERY_LOCK, если память не заблокирована
и флаг WRITE_OK обнулен
Заголовок | ACKNOWLEDGE_NOK | Код CRC-16 |
| 8 бит | 16 бит |
Таблица 92
Ответ на команду QUERY_LOCK, если память заблокирована
и флаг WRITE_OK установлен
Заголовок | ERROR_OK | Код CRC-16 |
| 8 бит | 16 бит |
Таблица 93
Ответ на команду QUERY_LOCK, если память заблокирована
и флаг WRITE_OK обнулен
Заголовок | ERROR_NOK | Код CRC-16 |
| 8 бит | 16 бит |
6.2.7.9.15 Команда WRITE_MULTIPLE
Код команды = '0E'
Команда WRITE_MULTIPLE служит для записи и проверки множества радиочастотных меток одновременно.
При получении команды WRITE_MULTIPLE радиочастотная метка, находящаяся в состоянии ID или DATA_EXCHANGE, должна считать информацию о блокировке байта памяти по указанному в команде адресу ADDRESS. Если память заблокирована, радиочастотная метка не должна выполнять никаких действий. Если память не заблокирована, радиочастотная метка записывает данные в память по указанному адресу.
Если запись выполнена успешно, радиочастотная метка устанавливает флаг WRITE_OK. В противном случае бит данного флага должен быть обнулен.
Затем радиочастотная метка должна установить возможность блокировки байта по указанному адресу ADDRESS.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Таблица 94
Команда WRITE_MULTIPLE
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Данные DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 16 бит |
6.2.7.9.16 Команда WRITE4BYTE_MULTIPLE
Код команды = '1C'
Команды WRITE_MULTIPLE служат для записи и проверки множества радиочастотных меток одновременно.
При получении команды WRITE4BYTE_MULTIPLE (см. таблицу 95) радиочастотная метка, находясь в состоянии ID или DATA_EXCHANGE, должна считать информацию о состоянии блокировки 4 байт памяти, начиная с указанного адреса. Если хотя бы один из 4 байт заблокирован, радиочастотная метка не должна выполнять никаких действий. Если ни один из 4 байт не заблокирован, радиочастотная метка записывает данные DATA в память по указанному адресу.
Таблица 95
Команда WRITE4BYTE_MULTIPLE
Заголовок | Разделитель | Код команды | Адрес ADDRESS | Маска BYTE_MASK | Данные DATA | Код CRC-16 |
|
| 8 бит | 8 бит | 8 бит | 32 бита | 16 бит |
Выполняя команду WRITE4BYTE, радиочастотная метка должна записывать данные только в те байты, которые выбраны с помощью маски BYTE_MASK, следовательно, запись может быть осуществлена в байты с 1 по 4 (в соответствии с установленными битами маски BYTE_MASK).
Если запись выполнена успешно, радиочастотная метка устанавливает флаг WRITE_OK. В противном случае бит данного флага должен быть обнулен.
Поле маски BYTE_MASK команды устанавливает соответствие:
адрес - бит BYTE_MASK, определяющий запись в данный адрес, а именно:
[ADDR+0] - B7;
[ADDR+1] - B6;
[ADDR+2] - B5;
[ADDR+3] - B4.
Адрес ADDRESS может иметь значение от '00' до 'FF' в шестнадцатеричном представлении (от 0 до 255 в десятеричном представлении).
Начальный адрес для команды WRITE4BYTE должен совпадать с началом 4-байтовой страницы.
6.2.7.10 Описание ответов (в антиколлизионном алгоритме типа бинарного дерева)
6.2.7.10.1 Ответ 'ACKNOWLEDGE'
Ответ 'ACKNOWLEDGE' подтверждает успешное выполнение команды WRITE или LOCK.
6.2.7.10.2 Ответ 'ERROR'
Ответ 'ERROR' указывает на ошибку при выполнении команды WRITE (например, при попытке записи в заблокированную область памяти).
6.2.7.10.3 Ответ 'ACKNOWLEDGE_OK'
Ответ 'ACKNOWLEDGE_OK' на команду QUERY_LOCK подтверждает, что байт по указанному адресу памяти не заблокирован и команда записи успешно выполнена.
6.2.7.10.4 Ответ 'ACKNOWLEDGE_NOK'
Ответ 'ACKNOWLEDGE_NOK' на команду QUERY_LOCK подтверждает, что байт по указанному адресу памяти не заблокирован, но команда записи не выполнена.
6.2.7.10.5 Ответ 'ERROR_OK'
Ответ 'ERROR_OK' на команду QUERY_LOCK означает, что байт по указанному адресу памяти заблокирован, команда записи успешно выполнена.
6.2.7.10.6 Ответ 'ERROR_NOK'
Ответ 'ERROR_NOK' на команду QUERY_LOCK означает, что байт по указанному адресу памяти заблокирован, команда записи не выполнена.
6.2.7.10.7 Ответ 'Данные WORD_DATA'
'Данные WORD_DATA' - это 8 байт, передаваемые в ответ на команды READ, DATA_READ и DATA_READ_O.
6.2.7.10.8 Ответ 'Данные BYTE_DATA'
'Данные BYTE_DATA' - это 1 байт, передаваемый в ответ на команды READ_VERIFY и READ_PORT.
6.2.7.10.9 'Данные 4BYTE_DATA'
'Данные 4BYTE_DATA' - это 4 байта данных, которые используются как аргумент в командах WRITE4BYTE, WRITE4BYTE_MULTIPLE или в ответе на команду READ_VERIFY4BYTE.
6.2.8. Ошибки передачи
Существует два типа ошибок передачи: ошибки кодирования (обнаруживаются побитово) и ошибки кода CRC (обнаруживаются покомандно). Оба типа ошибок вызывают прерывание выполнения команды, при этом радиочастотные метки не передают ответ.
При обнаружении ошибок в коде CRC радиочастотная метка возвращается в состояние READY.
При обнаружении ошибок кодирования радиочастотная метка возвращается в состояние READY, если обнаружен действительный начальный разделитель. В противном случае радиочастотная метка сохраняет текущее состояние.
