Z397 IP Advanced Mode

Материал из IronLogic Wiki
Перейти к: навигация, поиск

Система команд конвертера

Общая структура команд


Типы команд

  • 0x69 - Получение полного описания конвертера, пакет данных не передается. Действует во всех режимах.

Пример ответа конвертера на команду:

Z397-Guard converter S/N:00214
Pulsar Ltd. +7(812)703-77-65, +7(495)787-70-66
Copyright 2010 RF Enabled
http://www.ironlogic.ru
Version 2.4 build Sep 15 2010  13:07:16
----------------------------------
Current mode – Normal
  • 0xC8 - Получение краткого (заводской номер и режим) описания конвертера, пакет данных не передается. Действует во всех режимах.

Пример ответа конвертера на команду:

Z397-Guard S/N:00214,Mode:0
  • 0x4C - Получение списка лицензий, установленных в конвертер. Для установленных лицензий будут выведены параметры ограничения (число контроллеров/число карт).
  • 0x1E - Передача пакетной команды, относящейся к работе с лицензиями.
  • 0x1F - Передача пакетной команды, относящейся к работе с контроллерами.
  • 0x20 - Передача пакетной команды, относящейся к работе с конвертером.

Структура пакета данных для команд 0x1E-0x20

Общая логическая структура пакета может быть описана следующим образом:

Смещение Размер Описание
0x00 1 байт Контрольная сумма пакета
  • исходящий пакет - контроль на 0x00 (сумма всех байт пакета =0x00)
  • входящий пакет - контроль на 0xFF
0x01 1 байт Длина пакета в байтах
0x02 1 байт Номер лицензии
0x03 1 байт Идентификатор пакета (ответ на пакет будет содержать тот же идентификатор)
0x04 1 байт Код операции (зависит от типа команды)
0x05 1 байт Сетевой адрес контроллера, к которому относится команда
0x06 2 байта Параметры операции
0x08 0-92 байта Дополнительные данные

Размер неупакованного пакета всегда должен быть кратен 4 байтам, поскольку перед передачей в конвертер пакет необходимо преобразовать таким образом, чтобы он не содержал байты, значение которых меньше 0x30.

Псевдокод, реализующий преобразование IN[4] > OUT[5]:

OUT[0]=(IN[0]&0x80)>>4)+(IN[1]&0x80)>>5)+(IN[2]&0x80)>>6)+(IN[3]&0x80)>>7);
for(i=0;i<4;i++)OUT[i+1]=IN[i]&0x7F;
for(i=0;i<5;i++)if(OUT[i]<48)OUT[i]^=0xCA;

Обратное преобразование (для пакетов, полученных от конвертера) IN[5] > OUT[4]:

for(i=0;i<5;i++)if(IN[i]&0x80)IN[i]^=0xCA;
for(i=0;i<4;i++)OUT[i]=IN[i]|(((IN[4]>>i)&1)<<7);

Сообщения об ошибках

При обнаружении ошибок и несоответсвий в запросах конвертер отправляет сообщение об ошибке. Оно начинается с байта, равного 0x02, далее 2 или 3 байта сообщения и завершающий байт 0x0D

Сообщение ASCII Описание ошибки
0x48 0x48 HH Ошибка в контрольной сумме или при преобразовании
0x48 0x4C 0x43 HLC Недопустимая команда при работе с лицензиями
0x48 0x43 HC Попытка обращения к неизвестному контроллеру
0x48 0x4C 0x31 HL1 Лицензия не активирована
0x48 0x4C 0x32 HL2 Лицензия устарела
0x48 0x4C 0x33 HL3 Количество контроллеров превышает лицензионное ограничение
0x48 0x4C 0x34 HL4 Ошибка чтения - количество карт превышает лицензионное ограничение
0x48 0x4C 0x35 HL5 Ошибка записи - количество карт превышает лицензионное ограничение
0x48 0x4C 0x36 HL6 Ошибка записи - лицензия устарела
0x48 0x4A HJ Ошибка формата пакета - недопустимый первый байт

Работа с лицензиями

Для работы с лицензиями поддерживается две операции

  • чтение установленных лицензий (код операции 0x01) - обязательная команда для начала работы с конвертером
  • установка новой лицензии (код операции 0x02)

Чтение установленных лицензий

Для запроса установленных лицензий используется команда типа 0x1E с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт 0x08 Контрольная сумма
0x01 1 байт 0x08 Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x01 Код операции (чтение)
0x05 1 байт 0x08 Номер лицензии
0x06 2 байта 0x0000 Зарезервировано

Ответ конвертера после преобразования - пакет из 12 байт со следующей структурой:

Смещение Размер Описание
0x00 1 байт Контрольная сумма пакета
0x01 1 байт Длина пакета в байтах (=0x0C)
0x02 1 байт Номер лицензии
0x03 1 байт Идентификатор пакета
0x04 1 байт Код операции (=0x01)
0x05 1 байт Максимальное количество контроллеров:
  • 0 - нет лицензии
  • 1..255 - количество контроллеров
0x06 2 байта Максимальное количество карт (0xFFFF - без ограничений)
0x08 2 байта Дата в виде (день & 0x1F) + (месяц & 0x0F) << 5 + (год%100)<< 9
0x0A 2 байта Оставшееся время жизни лицензии в минутах (0xFFFF - не ограничено)

Установка лицензии

Для установки новой лицензии используется команда типа 0x1E с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт 0x22 Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x02 Код операции (установка)
0x05 1 байт 0x08 Номер лицензии
0x06 2 байта 0x0000 Зарезервировано
0x08 26 байт
Закодированная лицензия
0x22 2 байта 0x0000 Выравнивание на границу 4 байт

Структура ответа на установку аналогична структуре ответа на запрос установленных лицензий.
Ниже приведена реальная лицензия для установки в конвертер.
Конвертеры поставляются без лицензии, поэтому перед началом работы нужно выполнить установку лицензии.


//Лицензия на 32 контроллера 65535 ключей
BYTE lic[26]=0x85,0x83,0x68,0xE4,0x03,0xCB,0xCE,0x35,0xC9,0x8D,0xC0,0x2B,0x62,0x96,0xCF,0x26,0x46,0x90,0x86,0x38,0xF6,0x0E,0xC4,0xC5,0x19,0xC7};


Содержимое файла Z397_uni.lic с лицензией 32/65535 (для установки можно воспользоваться Guard Commander или Guard Light)

[PARAMETER]
Controllers=32
Cards=65535
[LIC]
TXT=858368E403CBCE35C98DC02B6296CF2646908638F60EC4C519C7

Работа с конвертером

Работа с конвертером обеспечивает поиск и идентификацию подключенных контроллеров. Поддерживаются следующие операции:

  • поиск подключенных контроллеров (код операции 0x00, номер контроллера 0x00) - обязательная операция для начала работы с контроллерами
  • получение детальной информации о контроллере с сетевым адресом NN (код операции 0x00, номер контроллера 0xNN)

Запрос списка контроллеров

Для начала работы с контроллерами необходимо произвести сканирование линии RS-485 с целью обнаружения подключенных контроллеров. В процессе сканирования проверяется уникальность сетевых адресов контроллеров, в случае обнаружения конфликтов либо несоответствия номера допустимому диапазону (0x02..0x69) происходит переназначение сетевого адреса контроллера. Время сканирования зависит от числа контроллеров на линии и может занимать до нескольких секунд.

Для выполнения этой задачи используется команда типа 0x20 с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт 0x08 Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x00 Код операции (поиск)
0x05 1 байт 0x00 Адрес контроллера
0x06 2 байта 0x0000 Зарезервировано

Ответный пакет является копией запроса, к которой добавляется информация об адресах, используемых контроллерами.

Информация об адресах является битовой маской размером 13 байт, в которой 1 показывает наличие контроллера с данным адресом, а 0 - его отсутствие:

Номер байта Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
1 Адрес 0x09 Адрес 0x08 Адрес 0x07 Адрес 0x06 Адрес 0x05 Адрес 0x04 Адрес 0x03 Адрес 0x02
...
13 Адрес 0x69 Адрес 0x68 Адрес 0x67 Адрес 0x66 Адрес 0x65 Адрес 0x64 Адрес 0x63 Адрес 0x62

Запрос детальной информации о контроллере

Для выполнения этой задачи используется команда типа 0x20 с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт 0x08 Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x00 Код операции (0 - среди найденных, 1 - перепроверить этот сетевой адрес)
0x05 1 байт
Сетевой адрес контроллера
0x06 2 байта 0x0000 Зарезервировано

В случае, если контроллер с требуемым адресом не обнаружен, ответный пакет будет копией запроса, в которой байт пакета со смещением 0x05 (сетевой адрес контроллера) будет иметь старший бит равным 1

Если идентификация контроллера прошла успешно, то в ответном пакете:

  • по смещению 0x06 будет возвращен двухбайтовый заводской номер контроллера
  • в конце пакета будет расположена следующая структура данных:
Смещение Размер Значение Описание
0x08 1 байт
Тип контроллера
  • 0x24 - Matrix-II-Net
  • 0x25 - Z5R-Net
0x09 1 байт
Параметры контроллера
  • биты 0-1 - размер памяти (0x00 - 2Kb, 0x01 - 4Kb, 0x02 - 8Kb)
  • бит 3 - карты кодируются по стандарту Wiegand
  • бит 7 - есть новые события

остальные биты зарезервированы

0x0A 2 байта
Версия ПО контроллера
0x0C 1 байт
зарезервировано
0x0D 2 байта
Адрес последнего записанного события
0x0F 2 байта
Адрес последнего считанного события

Работа с контроллерами

До начала работы с контроллерами необходимо выполнить настройку лицензии и сканирование линии RS-485. Для работы с контроллерами поддерживается две операции:

  • чтение памяти контроллера (код операции 0x02)
  • запись памяти контроллера (код операции 0x03)

Структура памяти контроллера

Память контроллера различается по типам (0xA0 и 0xD0) и номерам блоков. Каждый блок имеет свое функциональное назначение.

Блок карт (тип 0xA0, номер 0)

Смещение Размер Описание
0x0000 1 байт Время удержания замка в открытом состоянии в 1/10 сек
(для электромагнитных это длительность обесточивания, для электромеханических - длительность импульса напряжения. Тип замка задается перемычкой на плате контроллера)

0 - проход заблокирован (по кнопке и по карте)

0x0001 1 байт Время ожидания открытия двери в 1/10 сек
(если дверь будет открыта в этот период, тогда будет создано событие "проход совершен", иначе при открывании двери будет создано событие "взлом")

0 - ожидание не используется, сразу создается событие "проход совершен"

0x0002 1 байт Время ожидания закрытия двери в 1/10 сек
(если дверь не будет закрыта в этот период, тогда будет создано событие "Дверь оставлена открытой")

0 - ожидание не используется

0x0078 56 байт 7 временных зон по 8 байт
0x00BE 2 байта Адрес первой записи последней свободной области списка карт. Настраивается контроллером самостоятельно.
0x00С0 N * 8 байт N записей о картах по 8 байт

Максимальное число записей зависит от количества памяти, для 2Kb N не может превышать 2024

Блок событий (тип 0xA0, номер 2)

Смещение Размер Описание
0x0000 N * 8 байт N записей о событиях по 8 байт

Максимальное число записей зависит от количества памяти, для 2Kb N не может превышать 2048

Блок управления (тип 0xD0, номер 0)

Смещение Размер Описание
0x0000 1 байт Текущее время - секунды (BCD-формат)
0x0001 1 байт Текущее время - минуты (BCD-формат)
0x0002 1 байт Текущее время - часы (BCD-формат)
0x0003 1 байт Текущее время - день недели (1 - понедельник, 7 - воскресенье)
0x0004 1 байт Текущее время - день (BCD-формат)
0x0005 1 байт Текущее время - месяц (BCD-формат)
0x0006 1 байт Текущее время - год (BCD-формат)
0x0007 1 байт reserved
0x0008 2 байта Адрес, указывающий на ячейку в Блоке событий в которую будет произведена запись нового события. Старший байт первый.
0x000A 2 байта Адрес, указывающий на ячейку в Блоке событий из которой нужно будет читать новое событие. Старший байт первый.
0x000С 6 байт Буфер[6] кода последнего поднесенного ключа

Если последнее событие "неизвестный ключ", то в буфере находится код этого ключа

Структура временной зоны

Смещение Размер Описание
0x00 1 байт Маска дней недели (0 бит - понедельник, 6 бит - воскресенье)
0x01 1 байт Час времени начала зоны (BCD)
0x02 1 байт Минута времени начала зоны (BCD)
0x03 1 байт Час времени окончания зоны (BCD)
0x04 1 байт Минута времени окончания зоны (BCD)
0x05 3 байта зарезервировано

Структура записи о карте

Смещение Размер Описание
0x00 3 байта
  • в обычном режиме - три младших байта кода карты
  • в режиме Weigand - 0x000000
0x03 3 байта
  • в обычном режиме - три старших байта кода карты
  • в режиме Weigand - три байта кода карты
0x06 1 байт Флаги карты:
  • 0x08 - блокирующая карта
  • 0x10 - мастер-карта
  • 0x20 - короткий код карты (три байта)
0x07 1 байт Битовая маска (биты 0-6) разрешенных временных зон


Структура записи о событии

Смещение Размер Описание
0x00 1 байт Код события
0x01 2 байта Адрес ячейки в Блоке карт, которая содержит номер карты, вызвавшей событие.
0x03 1 байт Месяц времени события (BCD).
0x04 1 байт День времени события (BCD).
0x05 1 байт Час времени события (BCD).
0x06 1 байт Минута времени события (BCD).
0x07 1 байт Секунда времени события (BCD).

Коды событий

Событие Вход Выход
Открыто кнопкой 0x00 0x01
Ключ не найден в банке ключей 0x02 0x03
Ключ найден, дверь разблокирована 0x04 0x05
Ключ найден, нарушена временная зона 0x06 0x07
Открыто командой по RS-485 0x08 0x09
Ключ найден, либо нажата кнопка, либо выдана команда, но дверь заблокирована 0x0A 0x0B
Дверь взломана 0x0С 0x0D
Дверь оставлена открытой 0x0E 0x0F
Проход состоялся 0x10 0x11

Команда (0x02) чтения памяти

Для чтения памяти контроллеров используется команда типа 0x1F с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт 0x0B Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x02 Код операции (чтение)
0x05 1 байт
Сетевой адрес контроллера
0x06 1 байт 0x00 Номер банка памяти
0x07 1 байт 0xA0 Тип банка памяти
0x08 1 байт N Количество байт, запрашиваемых из памяти
0x09 1 байт
Старший байт адреса памяти
0x0A 1 байт
Младший байт адреса памяти

Ответный пакет

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт 0x0B Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x02 Код операции (чтение)
0x05 1 байт
Сетевой адрес контроллера
0x06 1 байт 0x00 Номер банка памяти
0x07 1 байт 0xA0 Тип банка памяти
0x08 N байт
Прочитанные из памяти данные

Команда (0x03) записи памяти

Для записи памяти контроллеров используется команда типа 0x1F с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт
Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x03 Код операции (запись)
0x05 1 байт
Сетевой адрес контроллера
0x06 1 байт 0x00 Номер банка памяти
0x07 1 байт 0xA0 Тип банка памяти
0x08 1 байт N Количество байт, записываемых в память
0x09 1 байт
Старший байт адреса памяти
0x0A 1 байт
Младший байт адреса памяти
0x0B N байт
Данные для записи

Первые 8 байт ответного пакета являются копией запроса, далее:

Смещение Размер Значение Описание
0x09 1 байт
Результат выполнения
  • 0x55 - успешно
  • 0xAA - недопустимая операция
0x0A 1 байт 0x03 Повтор команды записи [?]


Команда (0x07) дистанционного открытия двери

Для дистанционного открытия двери используется команда типа 0x1F с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт
Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0x07 Код операции (открыть дверь)
0x05 1 байт 0x05 Сетевой адрес контроллера
0x06 1 байт 0x00 Направление открывания (0 - для входа, 1 - для выхода)
0x07 1 байт 0x00 не имеет значения

Первые 8 байт ответного пакета являются копией запроса, далее:

Смещение Размер Значение Описание
0x09 1 байт
Результат выполнения
  • 0x55 - всегда успешно
0x0A 1 байт 0x07 Повтор команды открывания [?]

Внимание! Если дверь заблокирована, то открывание не произойдет.
По результату команды будет сформировано соответствующее событие.

Команда (0xF0,0x01) установки/проверки сетевого адреса по заводскому номеру

Для установки/проверки сетевого адреса контроллеров используется команда типа 0x1F с пакетом следующего вида (структура пакета приведена в исходном виде до преобразования):

Смещение Размер Значение Описание
0x00 1 байт
Контрольная сумма
0x01 1 байт
Длина пакета
0x02 1 байт 0x08 Номер лицензии
0x03 1 байт 0x01 Идентификатор пакета
0x04 1 байт 0xF0 Код операции (расширенные параметры)
0x05 1 байт 0x00 Это поле должно быть равно нулю
0x06 1 байт 0x34 Младший байт заводского номера
0x07 1 байт 0x12 Старший байт заводского номера
0x08 1 байт 0x01 Номер расширенного параметра
0x09 1 байт 0x10 Значение параметра (новый сетевой адрес: 1-254)

Ответный пакет является копией запроса.
Для проверки значения адреса [Значение параметра] не передается.