Алгоритмы идентификации
Штатная идентификация — iButton, Wiegand, HID по RS-485 — описана в статье «Настройка идентификации». Здесь собраны считыватели, которые подключаются алгоритмом EasyLogic: он сам общается с устройством по последовательному порту и складывает результат в теги.
Общая схема работы у всех трёх алгоритмов одна:
- Включите нужные модули на вкладке «Система» — как минимум RS232 и Запись архива точек в память, — примените настройки и перезагрузите прибор.
- Установите для используемого порта RS-232 тип периферии «Нет».
- Отметьте в основном пакете нужный тег (массив пользователя или тег пользователя — зависит от алгоритма).
- Убедитесь, что прибор в интернете, и загрузите алгоритм командой
SCRIPT galileosky/<имя>. При локальном подключении алгоритм можно загрузить.bin-файлом в разделе EasyLogic. - Перезагрузите прибор.
Про сами последовательные порты — распиновку, скорости и то, какие устройства могут делить одну шину, — читайте в статье «Последовательные порты».
Проверить загрузку: имя алгоритма появится в идентификационных данных на
вкладке «Устройство». Диагностика алгоритмов видна в разделе
«Диагностика» при включённой опции «Диагностика алгоритмов и
скриптов»; префикс p<n> в сообщениях — номер порта (p0 —
RS-232[0]).
⚙ Открыть настройки системы
Инвентаризация меток RFID считывателями ISBC UHF
Заголовок раздела «Инвентаризация меток RFID считывателями ISBC UHF»Алгоритм периодически инвентаризует окружающие метки стандарта EPC global Gen2 (ISO 18000-6C) и отправляет их список на сервер. Одновременно учитывается до 300 меток.
Поддерживаемые считыватели ISBC: стационарные UHF SLR 1104, 1116, 2000, 2100, 3000; моноблочные UHF MLR 1600, 1650, 1660, 1900.
Доступно на Galileosky 10 с прошивки 3.0 и 7x с прошивки 47.18, с портом RS-232.
Подготовка ISBC UHF
Заголовок раздела «Подготовка ISBC UHF»Задайте меткам уникальные EPC длиной 12 байт — программой производителя считывателя или любым другим ПО для работы с RFID.

Отметьте в основном пакете массив пользователя, задайте типу периферии RS-232 значение «Нет» и загрузите алгоритм:
SCRIPT galileosky/isbcinventoryallp0Как работает инвентаризация ISBC UHF
Заголовок раздела «Как работает инвентаризация ISBC UHF»Алгоритм циклически инвентаризует метки и записывает их RSSI и EPC в тег массива пользователя. Запись происходит по изменению: когда меняется количество окружающих меток, уровень сигнала от них или статус обмена со считывателем. Каждая запись создаёт внеочередную точку.
Настройки хранятся в энергонезависимой памяти и применяются на следующей инвентаризации.
Команды ISBC UHF
Заголовок раздела «Команды ISBC UHF»ISBCINVALL — текущие настройки, ответ invTimeMs=<t>,rssiTr=<r>ISBCINVALL <t>,<r> — задать настройкиt — время инвентаризации, 0…65535 мс (по умолчанию 5000).
r — «погрешность неподвижности» метки (по умолчанию 5):
минимальная разница текущего и предыдущего RSSI, при которой изменение
ещё не считается перемещением. Например, при rssiTr=5 переход RSSI
с −50 на −44 будет засчитан как перемещение, и прибор запишет
внеочередную точку со всеми найденными метками.
Диагностика ISBC UHF
Заголовок раздела «Диагностика ISBC UHF»inited! / inited? — успешная или ошибочная инициализация порта.
Ошибка означает нехватку памяти либо что прибор не перезагрузили после
загрузки алгоритма (в диагностике будут дополнительные сообщения
Port Initialization error), либо предупреждает об устаревшей прошивке.
Прочие сообщения: portionTagsCount=<n> — размер порции обнаруженных
меток; rssi=<n>,epc=<hex>h — уровень сигнала и EPC метки;
limit tags=<n> — достигнут предел, данные остальных меток не учтены;
res=<n>,status=<n> — результат обмена и статус команды;
saving data tags=<n> — сохранена внеочередная точка.
Результаты взаимодействия: 1 успешно; 0 обмена не было (однократно при старте); −1 нет ответа за отведённое время — проверьте питание и связь; −2 ошибка передачи — проверьте связь и версию протокола; −4 ошибка последовательного порта при отправке — не хватает оперативной памяти или процессорного времени; −5 считыватель вернул сбойный статус.
Статусы считывателя: 0 команда выполнена; 64 в поле считывателя нет меток. По остальным обращайтесь к производителю считывателя.
Формат данных ISBC UHF
Заголовок раздела «Формат данных ISBC UHF»Данные уходят в теге массива пользователя универсальной структуры. В одну
точку помещаются данные максимум 11 меток, поэтому используется
«страничный» режим: страницы с одинаковым upar0 относятся к одной
точке.
| Параметр | Размер | Описание |
|---|---|---|
upar0 | 4 | Идентификатор набора данных — Unix-время приёма данных от меток |
upar1 | 1 | Номер страницы |
upar2 | 1 | Всего страниц |
upar3 | 1 | Результат обмена со считывателем (только на странице 1) |
upar4 | 1 | Статус команды считывателя (только на странице 1 и только при соответствующем результате) |
upar5 | 1 | Метка 1, RSSI |
upar6…upar8 | 4 + 4 + 4 | Метка 1, EPC байты 0…11 |
| … | далее по 4 параметра на метку | |
upar45…upar48 | Метка 11 |
Все параметры целые беззнаковые, кроме RSSI — он знаковый.
Сканер отпечатков пальцев Idemia MSO
Заголовок раздела «Сканер отпечатков пальцев Idemia MSO»Алгоритм идентифицирует пользователей сканером Idemia MSO с прошивками Nemo (модели MSO 1300, MSO 1300 E3 и аналогичные) и записывает номер опознанного пользователя в тег.
Доступно на Galileosky 10 с прошивки 3.0 и 7x с прошивки 38.31, с портом RS-232.
Подготовка базы отпечатков
Заголовок раздела «Подготовка базы отпечатков»База отпечатков живёт внутри сканера, а не в приборе. Заполняется она
с компьютера программой MSO_Demo из комплекта SDK производителя:
подключите сканер по USB (или по RS-232), создайте базу кнопкой
Create Base, включите параметр Save PK in DataBase и отсканируйте
отпечатки — по три изображения на каждый палец.
Кнопки Remove User и Remove All удаляют пользователей, сохраняя структуру базы; Destroy Base уничтожает базу целиком, после чего её придётся создавать заново.
Для подключения сканера к RS-232 нужно разобрать корпус и вывести провода от внутреннего коннектора наружу.


При наличии преобразователя TTL ⇄ RS-232 схема упрощается:

Подключение к прибору
Заголовок раздела «Подключение к прибору»
Схема приведена для порта RS-232[0]; для RS-232[1] всё аналогично на соответствующих контактах.

Настройка прибора для Idemia MSO
Заголовок раздела «Настройка прибора для Idemia MSO»- Включите модули RS232 и Запись архива точек в память, примените настройки и перезагрузите прибор.
- Тип периферии порта RS-232 — «Нет».
- Отметьте в пакете тег номера идентифицированного пользователя.
- Удалите алгоритмы, занимающие тот же порт:
CLEARSCRIPT <имяАлгоритма>. - Загрузите алгоритм под свой порт:
SCRIPT galileosky/idemianemop0(RS-232[0]) илиSCRIPT galileosky/idemianemop1(RS-232[1]). - Перезагрузите прибор.
Как работает сканер Idemia MSO
Заголовок раздела «Как работает сканер Idemia MSO»Через ~10 секунд после старта алгоритм читает настройки из энергонезависимой памяти и обнуляет тег текущего пользователя. Дальше он циклически запускает идентификацию: на сканере загорается светодиод — приложите палец. Пока светодиод горит, процесс не окончен; можно подвинуть палец выше, ниже, левее, правее, прижать сильнее, очистить или просушить поверхность.
Если отпечаток опознан, в тег записывается номер пользователя во внутренней базе сканера, увеличенный на 1, и создаётся внеочередная точка. По истечении заданного времени фиксации тег обнуляется — это означает «пользователь не идентифицирован».
На Galileosky 10 и 7x с прошивки 41 настройки хранятся в энергонезависимой памяти. На более ранних прошивках 7x они лежат в файле
idemianemo/settings.cfg; править этот файл вручную нельзя, допустимо только удалить его целиком.
Команды Idemia MSO
Заголовок раздела «Команды Idemia MSO»Все параметры задаются в десятичном виде.
| Команда | Назначение |
|---|---|
IDEMIANEMO 0 | Текущее состояние: settings=,userNum=,asyncType=,scanStatus= |
IDEMIANEMO 1 | Текущие настройки: settings=,tagId=,hold=,treshold=,timeout=,coder=,ffdLevel= |
IDEMIANEMO 2,<tagId> | Тег для номера пользователя (по умолчанию 98 — тег пользователя 0) |
IDEMIANEMO 3,<time> | Время фиксации номера в теге, с (по умолчанию 3) |
IDEMIANEMO 4,<treshold> | Порог идентификации, 0…10 (по умолчанию 5) |
IDEMIANEMO 5,<timeout> | Таймаут идентификации, 0…42948 с (по умолчанию 30; 0 — ждать бесконечно) |
IDEMIANEMO 6,<coder> | Извлечение мелких деталей: 0 не специфицировано (по умолчанию), 3 как в сканере, 8 включено |
IDEMIANEMO 7,<ffdLevel> | Обнаружение поддельных отпечатков: 0 низкий, 1 средний, 2 высокий, 3 отключено, 4 критический |
Общие ответы: cmd? — неверный номер команды; wait init — дождитесь
инициализации настроек; param? — неверный параметр.
Чем выше порог идентификации, тем строже проверка. Для работников тяжёлого физического труда и людей с повреждёнными отпечатками порог имеет смысл снизить.
Значения coder=8 и любой уровень ffdLevel, кроме 3, увеличивают время
обработки отпечатка. coder=8 полезен для детей и тонких пальцев.
Диагностика Idemia MSO
Заголовок раздела «Диагностика Idemia MSO»inited! / inited? — как у ISBC.
match res=<n>,score=<n> — результат сопоставления и оценка соответствия
(чем выше, тем ближе отпечаток к шаблону).
user num=<n>,dbIndex=<n>,id=<строка>,idSize=<n>: — номер пользователя,
его индекс в базе, идентификатор и его длина; следующей строкой —
идентификатор в HEX.
res=<n>,status=<n>,errorCode=<n> — результат обмена, статус команды и
код ошибки.
Асинхронные подсказки по положению пальца выводятся как
asyncMsg: finger - …: NO FINGER (приложите палец), UP /\ (выше),
DOWN \/ (ниже), LEFT <<--, RIGHT -->>, PRESS (надавите сильнее),
LATENT (обнаружен скрытый отпечаток — уберите палец и приложите
заново), REMOVE (уберите палец), OK (захват завершён, идёт
сопоставление), DETECTED (палец обнаружен). asyncMsg: scanner Busy —
сканер занят.
Статусы сканирования (scanStatus): 0 палец отсутствует, 1 низко,
2 высоко, 3 справа, 4 слева, 5 слабый нажим, 6 скрытый отпечаток,
7 нужно убрать палец, 8 сканирование завершено, 9 палец обнаружен.
Результаты сопоставления: 1 отпечаток найден в базе; 2 не соответствует ни одному шаблону; 34 обнаружен поддельный палец; 35 палец слишком влажный.
Результаты взаимодействия со сканером: 1 успешно; −1 нет ответа; −2 внутренняя ошибка прибора (порт, файловая система); −3 ошибка передачи — возможно, изменился протокол; −4 сбойный статус; −5 команда отклонена; −6 неверные входные данные.
Наиболее частые коды ошибок команд: 0 нет ошибок; 171 база непригодна и должна быть уничтожена — выполните первоначальную настройку; 218 палец или сканер слишком влажные; 219 поддельный палец; 247 базы нет — создайте её и внесите отпечатки; 250 таймаут, повторите; 242 и 255 — сканер будет перезагружен. Коды 157, 188, 193, 195, 199, 234, 254 означают проблему на стороне сканера или его прошивки — обращайтесь к дистрибьютору.
Формат данных Idemia MSO
Заголовок раздела «Формат данных Idemia MSO»По умолчанию используется тег пользователя 0: 0 — пользователь не идентифицирован, больше нуля — номер идентифицированного пользователя.
Управление выгрузкой зерноуборочного комбайна
Заголовок раздела «Управление выгрузкой зерноуборочного комбайна»Алгоритм управляет выгрузкой зерна: разрешает её, только если рядом есть UHF-карта нужного формата, и записывает данные выгрузки в память самой карты. Используется считыватель Smartec ST-LR320 и UHF-карты стандартов ISO 18000-6C и ISO 18000-6B.
Доступно на Galileosky 10 с прошивки 2.9 и 7x с прошивки 47.15.
Подготовка комбайна
Заголовок раздела «Подготовка комбайна»В ПО производителя считывателя задайте ему адрес 1 и скорость 115200 бит/с.
UHF-картам задайте EPC длиной 12 байт в одном из форматов:
FF XX XX XX XX XX XX XX XX XX XX FEFE XX XX XX XX XX XX XX XX XX XX FFгде XX — произвольный байт. Карты другого формата алгоритм игнорирует.
Подключение
Заголовок раздела «Подключение»
- переключатель аварийного режима — на дискретно-аналоговый вход 4;
- блокирующее устройство — на дискретный выход 2;
- считыватель Smartec — на порт RS-232;
- считыватель iButton — на шину 1-Wire.
Настройка прибора для комбайна
Заголовок раздела «Настройка прибора для комбайна»- Включите модули Выходы, RS232, 1-Wire и Запись архива точек в память.
- На вкладке «Трек» задайте периодичность сохранения точек в отсутствие событий выгрузки — сами события пишутся внеочередными точками.
- На вкладке «Входы/выходы» задайте входу 4 тип фильтра «среднее значение».
- Отметьте в основном пакете массив пользователя.
- Тип периферии RS-232 — «Нет»; задайте доверенные ключи iButton.
- Загрузите алгоритм:
SCRIPT galileosky/smarteccombineunloadingи перезагрузите прибор.
Настройка доверенных ключей iButton описана в статье «Настройка идентификации».
Как работает управление выгрузкой
Заголовок раздела «Как работает управление выгрузкой»
При первом запуске номер выгрузки устанавливается в 1 — но если в теге пользователя 4 уже лежит ненулевое значение, номер берётся оттуда. Номер хранится в энергонезависимой памяти и дублируется в тег пользователя 4: это страховка на случай повторной загрузки алгоритма, когда его энергонезависимая память очищается.
Тег массива пользователя записывается по изменению хранимых значений, с созданием внеочередной точки.
Диагностика выгрузки комбайна
Заголовок раздела «Диагностика выгрузки комбайна»Ключевые сообщения: unloadingNum=<n> — номер выгрузки; adr=<n>? —
неправильный адрес считывателя; emergencyIn=<n> — состояние входа
аварийного режима; iButton? / iButton=<hex>h — нет ключа либо номер
доверенной карты водителя; EPC format? — карта не того формата;
EPCs irrelevant — подходящей карты для записи выгрузки нет;
unloading unlocked for <n> min / unloading locked — снятие и
установка блокировки; r.ROM? — ошибка чтения энергонезависимой памяти
(нормально при первом запуске); w.ROM? — ошибка записи, обратитесь в
сервис; res=<n>,st=<n>,ec=<n> — результат обмена, статус и код ошибки.
Результаты взаимодействия: 1 успешно; −1 нет ответа — проверьте питание и связь; −2 ошибка передачи — проверьте связь и версию протокола; −4 ошибка последовательного порта; −5 негативный статус; −6 код ошибки карты.
Наиболее содержательные статусы считывателя: 0 команда выполнена; 1…4 — особенности инвентаризации (возврат до завершения, переполнение времени сканирования, данные не поместились в одно сообщение, заполнена флэш-память считывателя); 250 плохая связь с картами; 251 карт в поле нет; 252 карта вернула код ошибки; 253…255 — проблемы протокола или параметров команды.
Коды ошибок карты: 0 прочие ошибки; 3 переполнение памяти; 4 память заблокирована; 11 карте не хватает мощности на запись; 15 неспецифицированная ошибка.
Формат данных выгрузки комбайна
Заголовок раздела «Формат данных выгрузки комбайна»Данные уходят в теге массива пользователя универсальной структуры.
| Параметр | Размер | Описание |
|---|---|---|
upar0 | 1 | Состояние: 0 инициализация, 1 ожидание ответа считывателя, 2 ошибка конфигурации считывателя, 3 ожидание выгрузки, 4 данные выгрузки сформированы |
upar1 | 2 | Номер выгрузки, 1…65280 |
upar2 | 4 | Идентификатор ключа iButton на начало поиска меток; 0 — ключа нет (аварийный режим) |
upar3…upar5 | 4 × 3 | EPC карты, байты 0…11 |
upar6…upar8 | 4 × 3 | TID карты, байты 0…11 |
upar9, upar10 | 4 + 2 | Данные текущей выгрузки, байты 0…5 |
upar11 | 1 | Код команды |
upar12 | 1 | Статус выполнения команды |
upar13 | 1 | Код ошибки |
upar14…upar29 | 4 × 16 | UserMemory карты, байты 0…63 |
Структура UserMemory карты: байты 0…3 — данные весовой (их пишет другое устройство), причём в байте 3 лежит маркер, по которому алгоритм находит позицию для записи; байты 4…9, 10…15 и далее до 58…63 — записи выгрузок по 6 байт.
См. также: Идентификация водителя и объектов · Подключение по Modbus · Дискретные, токовые датчики и терморезисторы · Последовательные порты RS-232 и RS-485