Система подсчёта пассажиров «Автокондуктор»
«Автокондуктор» — аппаратно-программный комплекс подсчёта пассажиров: бортовой компьютер, цифровые IP-камеры и PoE-коммутатор. Прибор получает от него данные подсчёта и передаёт их на сервер в теге массива пользователя.
Интеграция работает через алгоритм EasyLogic — общий порядок в статье «Подключение устройств через алгоритмы EasyLogic».
Минимальные версии прошивки: 10 — 3.11, 7x — 38.34.
Подключение
Заголовок раздела «Подключение»Смонтируйте оборудование по документации производителя и задайте в нём параметры обмена данными — параметры последовательного порта и адрес на линии. Их же потом укажите в настройках алгоритма.

Замечания к схеме:
- состояние дверей и зажигания можно определять либо дискретно-аналоговыми входами прибора (вариант на схеме), либо по значениям тегов протокола Galileosky;
- номера входов и выходов настраиваются командами
AUTOCONDUCTOR; - если порт RS-232 занят другой задачей, оборудование можно подключить к RS-485 через сторонний преобразователь RS-232 ↔ RS-485.
Настройка прибора
Заголовок раздела «Настройка прибора»-
В настройках включите модули Выходы, Запись архива точек в память и — в зависимости от способа подключения — RS-232 или RS-485. Примените настройки и перезагрузите прибор.
-
Включите Массив пользователя в основном пакете. При необходимости отметьте дополнительные теги состояния дверей и зажигания, если они используются.
-
В настройках последовательных портов задайте тип периферии:
- RS-232 — Нет;
- RS-485 — Только обработчики RS485 в EasyLogic или Обработчик фотокамеры в EasyLogic и ДУТ; на приборах 10 и 7x также допустимы Фотокамера Galileosky и ДУТ, Modbus, ДУТ и Modbus.
-
В настройках входов и выходов настройте входы дверей и зажигания. Логическая единица на входе соответствует открытой двери.
-
Если зажигание контролируется входом или напряжением внешнего питания, задайте параметры в настройках трека.
-
Загрузите алгоритм в Терминале:
SCRIPT galileosky/autoconductorp -
Примените настройки и перезагрузите прибор.
Как алгоритм работает
Заголовок раздела «Как алгоритм работает»После запуска алгоритм читает сохранённые настройки из энергонезависимой памяти прибора, начинает обрабатывать команды и выполняет шаги по своей блок-схеме.

Внеочередная точка сохраняется при переходе с одного шага на другой, при изменении состояния оборудования или кода ошибки, при получении данных подсчёта и при поступлении команды на перезагрузку. Команда перезагрузки отрабатывается по окончании текущего шага — алгоритм возвращается к шагу инициализации.
Настройки сохраняются в момент изменения.
Команды AUTOCONDUCTOR
Заголовок раздела «Команды AUTOCONDUCTOR»Общие ответы: wait init — настройки ещё загружаются (около 10 с); cmd? — неправильный
номер команды; param? — неправильный параметр.
| Команда | Что делает |
|---|---|
AUTOCONDUCTOR 1 | Текущее состояние оборудования |
AUTOCONDUCTOR 2 | Перезагрузить оборудование |
AUTOCONDUCTOR 3 | Текущие настройки |
AUTOCONDUCTOR 4,num,br,sb,par,tmt | Настройки последовательного порта |
AUTOCONDUCTOR 5,addr,offDelay | Настройки оборудования |
AUTOCONDUCTOR 6,tagId | Тег состояния зажигания |
AUTOCONDUCTOR 7,resetOutIdx | Выход управления питанием оборудования |
AUTOCONDUCTOR 8,tagId | Тег состояния дверей |
AUTOCONDUCTOR 9,doorIdx,inIdx | Вход контроля конкретной двери |
Текущее состояние
Заголовок раздела «Текущее состояние»Ответ на AUTOCONDUCTOR 1:
state=4,ignition=1,doorsOpen=5,err=0,cam=0state — текущий шаг алгоритма, ignition — наличие зажигания, doorsOpen — состояние
дверей, err — код последней ошибки обмена, cam — последний статус камер. В примере:
шаг опроса, зажигание включено, открыты двери 0 и 2, ошибок нет.
Перезагрузка оборудования
Заголовок раздела «Перезагрузка оборудования»AUTOCONDUCTOR 2 отвечает dev reset scheduled — перезагрузка запланирована на конец
текущего шага. Её завершение видно по команде AUTOCONDUCTOR 1.
Текущие настройки
Заголовок раздела «Текущие настройки»Ответ на AUTOCONDUCTOR 3:
port num=0,baudRate=19200,stopBits=1,parity=0,timeout=5000;dev addr=0,offDelay=1800;ignition tagId=-1;reset outIndex=0;doors tagId=2;door=in:0=1,1=-1,2=-1,3=-1| Поле | Значение |
|---|---|
port num | Порт подключения: 0 — RS-232[0], 1 — RS-232[1], 2 — RS-485 |
baudRate | Скорость передачи, бит/с |
stopBits | Количество стоповых бит |
parity | Чётность: 0 — без контроля, 1 — контроль нечётности, 2 — контроль чётности |
timeout | Таймаут ответа, мс |
dev addr | Адрес оборудования на линии |
offDelay | Время до выключения питания при отсутствии зажигания, с |
ignition tagId | Тег зажигания, -1 — не задан |
reset outIndex | Выход управления питанием оборудования |
doors tagId | Тег состояния дверей, -1 — не задан |
door=in | Индекс двери и соответствующий ей вход контроля |
Настройки порта
Заголовок раздела «Настройки порта»AUTOCONDUCTOR 4,num,br,sb,par,tmtПо умолчанию: порт 0 (RS-232[0]), скорость 19200, 1 стоповый бит, чётность 0,
таймаут 5000 мс.
Пример — поставить таймаут 3 секунды, остальное не менять:
AUTOCONDUCTOR 4,0,19200,1,0,3000Настройки оборудования
Заголовок раздела «Настройки оборудования»AUTOCONDUCTOR 5,addr,offDelayaddr — адрес оборудования на линии, 0…254 (по умолчанию 0). В память оборудования
он не записывается, используется только для формирования запросов. offDelay — время
до выключения питания при отсутствии зажигания, с (по умолчанию 1800).
Теги зажигания и дверей
Заголовок раздела «Теги зажигания и дверей»AUTOCONDUCTOR 6,tagId # тег зажиганияAUTOCONDUCTOR 8,tagId # тег состояния дверейИдентификатор берётся из таблицы тегов в контексте алгоритмов; -1 (по умолчанию) —
не используется.
- бит 0 тега зажигания переопределяет общие настройки зажигания прибора:
0— выключено,1— включено; - биты с 1-го по 5-й тега дверей переопределяют состояние физических входов дверей:
0— закрыта,1— открыта.
Биты отсчитываются справа налево, начиная с нуля.
Выход управления питанием
Заголовок раздела «Выход управления питанием»AUTOCONDUCTOR 7,resetOutIdxПо умолчанию выход 0.
Вход контроля двери
Заголовок раздела «Вход контроля двери»AUTOCONDUCTOR 9,doorIdx,inIdxdoorIdx — индекс двери 0…3, inIdx — индекс входа контроля состояния или -1, если
дверь не используется. Настройки входов игнорируются, если задан тег состояния дверей.
Что уходит на сервер
Заголовок раздела «Что уходит на сервер»Данные передаются в теге массива пользователя универсальной структуры.
| Байт | Значение | Параметр сервера | Описание |
|---|---|---|---|
| 0 | 0x7F | — | Тип данных: универсальная структура |
| 1 | 0x02 | — | Описатель группы: одно 2-байтное число |
| 2, 3 | XX | upar0 | Идентификатор события |
| 4 | 0x01/0x11 | — | Описатель группы: одно / два 1-байтных числа |
| 5 | X | upar1 | Состояние устройства |
| 6 | X | upar2 | Код ошибки |
| 7 | 0x04 | — | Описатель группы: одно 4-байтное число |
| 8…11 | XXXX | upar3 | Статус камер |
| 12 | 0x72 | — | Описатель группы: восемь 2-байтных чисел |
| 13…28 | XX | upar4…upar11 | Общие счётчики вошедших и вышедших по дверям 0…3 |
| 29 | 0x01 | — | Описатель группы: одно 1-байтное число |
| 30 | X | upar12 | Индекс двери подсчёта |
| 31 | 0x12 | — | Описатель группы: два 2-байтных числа |
| 32, 33 | XX | upar13 | Счётчик последних вошедших по указанной двери |
| 34, 35 | XX | upar14 | Счётчик последних вышедших по указанной двери |
| 36 | 0x34 | — | Описатель группы: четыре 4-байтных числа |
| 37…40 | XXXX | upar15 | Уникальная метка |
| 41…44 | XXXX | upar16 | Время для сортировки, Unixtime |
| 45…48 | XXXX | upar17 | Время видео, Unixtime |
| 49…52 | XXXX | upar18 | Идентификатор видео |
Передаются только те параметры, которые относятся к произошедшему событию; остальные могут отсутствовать.
Идентификаторы событий
Заголовок раздела «Идентификаторы событий»| Код | Событие |
|---|---|
| 9568 | Изменение статуса камер |
| 9569 | Включение оборудования |
| 9570 | Выключение оборудования |
| 9571 | Получены данные подсчёта |
| 9572 | Изменился код ошибки |
| 41571 | Получена команда на перезагрузку оборудования |
Состояние устройства
Заголовок раздела «Состояние устройства»Однобайтное число, биты справа налево:
- бит 0 — питание оборудования (
1— есть); - бит 1 — ответы оборудования (
1— есть); - бит 2 — синхронизация времени (
1— синхронизировано); - биты 3…7 — резерв.
Например, состояние 3 (00000011b) — есть питание и ответы, время не синхронизировано.
Статус камер
Заголовок раздела «Статус камер»Четырёхбайтное число; в каждом байте — однотипные ошибки, номер бита в байте соответствует индексу камеры (биты справа налево). Байты, тоже справа налево:
- байт 0 — ошибки изображения (
1— ошибка); - байт 1 — ошибки подключения (
1— ошибка); - байты 2 и 3 — резерв.
Например, статус 513 (00000010 00000001b) — ошибка изображения камеры 0 и не подключена
камера 1.
Состояние дверей
Заголовок раздела «Состояние дверей»Однобайтное число, каждый бит — своя дверь (биты справа налево): 1 — открыта,
0 — закрыта. Например, 5 (00000101b) — открыты двери 0 и 2.
Примеры содержимого тега
Заголовок раздела «Примеры содержимого тега»| Событие | Байты массива пользователя |
|---|---|
| Включение оборудования | 7F 02 6125 01 01 |
| Изменение статуса камер | 7F 02 6025 11 07 00 04 00030000 |
| Получение данных подсчёта | 7F 02 6325 11 07 43 04 00000000 72 0100 0000 0000 0000 0000 0000 0000 0000 01 00 12 0100 0000 34 F5CA2E68 ABCA2E68 ABCA2E68 02000000 |
Диагностика
Заголовок раздела «Диагностика»Включите канал Алгоритмы и скрипты в Каналах диагностики.
Префикс p%d — индекс последовательного порта (0 — RS-232[0], 1 — RS-232[1],
2 — RS-485), a%d — адрес оборудования на линии.
| Сообщение | Значение |
|---|---|
state=%d,ignition=%d,doorsOpen=%d | Текущий шаг, наличие зажигания, состояние дверей |
init! / init? | Порт инициализирован / ошибка инициализации: не хватает памяти, прибор не перезагружен после загрузки алгоритма (рядом будут сообщения Port Initialization error) либо версия прошивки устарела |
dev init! / dev init? | Настройки оборудования приняты / ошибка — задайте допустимый адрес |
try start dev | Запрос запуска оборудования через синхронизацию времени |
res=%d,err=%d | Результат обмена и код ошибки оборудования |
set doorLocations | Запрос установки состояния дверей |
get cam status / camStatus=%d | Запрос и полученный статус камер |
get count data | Запрос данных подсчёта |
l=%d;v t=%d,i=%d;f=%d;c d=%d,in=%d,out=%d | Полученные данные подсчёта: уникальная метка, время и идентификатор видео, время для сортировки, индекс двери, общее количество вошедших и вышедших по этой двери с момента старта оборудования |
d%d in=%d,out=%d | Данные подсчёта по двери; индекс 255 — только общие итоговые данные без указания двери |
Результаты обмена (res)
Заголовок раздела «Результаты обмена (res)»| Код | Значение |
|---|---|
| 1 | Успешно |
| −1 | Нет ответа на запрос — проверьте подключение и работоспособность |
| −2 | Ошибка последовательного порта — перезагрузите прибор, обратитесь в сервис |
| −3 | Ошибка передачи данных — проверьте версию оборудования и качество связи |
| −4 | Получен код ошибки или предупреждения оборудования |
Коды ошибок оборудования (err)
Заголовок раздела «Коды ошибок оборудования (err)»| Код | Значение |
|---|---|
| 0 | Нет ошибок |
| 65 | Предупреждение: счётчик уже работает |
| 66 | Предупреждение: счётчик уже остановлен |
| 67 | Предупреждение: подсчёт ещё идёт |
| 68 | Предупреждение: время не синхронизировано |
| 129 | Ошибка: не удалось запустить счётчик |
| 130 | Ошибка: не удалось остановить счётчик |
| 131 | Ошибка: нет счётчика на данной двери |
| 132 | Ошибка: нет указанного флага |
| 133 | Ошибка: сбой |
При ошибках оборудования обращайтесь к его производителю.
См. также: Датчики пассажиропотока · Датчики пассажиропотока HPC168 · Подключение устройств через алгоритмы EasyLogic