Перейти к содержимому
Черновик: материал сгенерирован и ещё не вычитан.

Система подсчёта пассажиров «Автокондуктор»

«Автокондуктор» — аппаратно-программный комплекс подсчёта пассажиров: бортовой компьютер, цифровые IP-камеры и PoE-коммутатор. Прибор получает от него данные подсчёта и передаёт их на сервер в теге массива пользователя.

Интеграция работает через алгоритм EasyLogic — общий порядок в статье «Подключение устройств через алгоритмы EasyLogic».

Минимальные версии прошивки: 10 — 3.11, 7x — 38.34.

Смонтируйте оборудование по документации производителя и задайте в нём параметры обмена данными — параметры последовательного порта и адрес на линии. Их же потом укажите в настройках алгоритма.

Типовая схема подключения «Автокондуктора» к приборам 10 и 7x

Замечания к схеме:

  • состояние дверей и зажигания можно определять либо дискретно-аналоговыми входами прибора (вариант на схеме), либо по значениям тегов протокола Galileosky;
  • номера входов и выходов настраиваются командами AUTOCONDUCTOR;
  • если порт RS-232 занят другой задачей, оборудование можно подключить к RS-485 через сторонний преобразователь RS-232 ↔ RS-485.
  1. В настройках включите модули Выходы, Запись архива точек в память и — в зависимости от способа подключения — RS-232 или RS-485. Примените настройки и перезагрузите прибор.

  2. Включите Массив пользователя в основном пакете. При необходимости отметьте дополнительные теги состояния дверей и зажигания, если они используются.

  3. В настройках последовательных портов задайте тип периферии:

    • RS-232 — Нет;
    • RS-485 — Только обработчики RS485 в EasyLogic или Обработчик фотокамеры в EasyLogic и ДУТ; на приборах 10 и 7x также допустимы Фотокамера Galileosky и ДУТ, Modbus, ДУТ и Modbus.
  4. В настройках входов и выходов настройте входы дверей и зажигания. Логическая единица на входе соответствует открытой двери.

  5. Если зажигание контролируется входом или напряжением внешнего питания, задайте параметры в настройках трека.

  6. Загрузите алгоритм в Терминале:

    SCRIPT galileosky/autoconductorp
  7. Примените настройки и перезагрузите прибор.

После запуска алгоритм читает сохранённые настройки из энергонезависимой памяти прибора, начинает обрабатывать команды и выполняет шаги по своей блок-схеме.

Блок-схема работы алгоритма «Автокондуктор»

Внеочередная точка сохраняется при переходе с одного шага на другой, при изменении состояния оборудования или кода ошибки, при получении данных подсчёта и при поступлении команды на перезагрузку. Команда перезагрузки отрабатывается по окончании текущего шага — алгоритм возвращается к шагу инициализации.

Настройки сохраняются в момент изменения.

Общие ответы: 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=0

state — текущий шаг алгоритма, 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,offDelay

addr — адрес оборудования на линии, 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,inIdx

doorIdx — индекс двери 0…3, inIdx — индекс входа контроля состояния или -1, если дверь не используется. Настройки входов игнорируются, если задан тег состояния дверей.

Данные передаются в теге массива пользователя универсальной структуры.

БайтЗначениеПараметр сервераОписание
00x7FТип данных: универсальная структура
10x02Описатель группы: одно 2-байтное число
2, 3XXupar0Идентификатор события
40x01/0x11Описатель группы: одно / два 1-байтных числа
5Xupar1Состояние устройства
6Xupar2Код ошибки
70x04Описатель группы: одно 4-байтное число
8…11XXXXupar3Статус камер
120x72Описатель группы: восемь 2-байтных чисел
13…28XXupar4upar11Общие счётчики вошедших и вышедших по дверям 0…3
290x01Описатель группы: одно 1-байтное число
30Xupar12Индекс двери подсчёта
310x12Описатель группы: два 2-байтных числа
32, 33XXupar13Счётчик последних вошедших по указанной двери
34, 35XXupar14Счётчик последних вышедших по указанной двери
360x34Описатель группы: четыре 4-байтных числа
37…40XXXXupar15Уникальная метка
41…44XXXXupar16Время для сортировки, Unixtime
45…48XXXXupar17Время видео, Unixtime
49…52XXXXupar18Идентификатор видео

Передаются только те параметры, которые относятся к произошедшему событию; остальные могут отсутствовать.

КодСобытие
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 — только общие итоговые данные без указания двери
КодЗначение
1Успешно
−1Нет ответа на запрос — проверьте подключение и работоспособность
−2Ошибка последовательного порта — перезагрузите прибор, обратитесь в сервис
−3Ошибка передачи данных — проверьте версию оборудования и качество связи
−4Получен код ошибки или предупреждения оборудования
КодЗначение
0Нет ошибок
65Предупреждение: счётчик уже работает
66Предупреждение: счётчик уже остановлен
67Предупреждение: подсчёт ещё идёт
68Предупреждение: время не синхронизировано
129Ошибка: не удалось запустить счётчик
130Ошибка: не удалось остановить счётчик
131Ошибка: нет счётчика на данной двери
132Ошибка: нет указанного флага
133Ошибка: сбой

При ошибках оборудования обращайтесь к его производителю.


См. также: Датчики пассажиропотока · Датчики пассажиропотока HPC168 · Подключение устройств через алгоритмы EasyLogic