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

Датчики пассажиропотока HPC168

Датчики HPC168 — видеосчётчики пассажиров, устанавливаемые над дверями. К одному прибору подключается до 8 датчиков по RS-485; на той же линии могут работать другие устройства.

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

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

Схема подключения датчиков HPC168 к приборам 10 и 7x

Перед первым подключением задайте в программе производителя датчика:

  • Serial Port Settings → RS4859600 (рекомендуемая скорость обмена);
  • Data comm configure → protocolRS485;
  • Data comm configure → Device Addr — адрес датчика, 1…247.

Сохраните настройки кнопкой Set Device Param.

Окно настроек датчика HPC168

Устанавливайте датчики по рекомендациям производителя.

  1. В настройках включите модули RS-485 и Запись архива точек в память, примените настройки и перезагрузите прибор.

  2. В настройках последовательных портов выберите тип периферии RS-485 по составу линии:

    На линии RS-485Тип периферии
    Только датчикиТолько обработчики RS485 в EasyLogic
    Фотокамера Galileosky, ДУТ и датчикиФотокамера Galileosky и ДУТ
    Фотокамера стороннего производителя, ДУТ и датчикиОбработчик фотокамеры в EasyLogic и ДУТ
    Modbus и датчикиModbus
    Modbus, ДУТ и датчикиДУТ и ModBus

    Совместная работа с Modbus поддерживается приборами 10 с прошивки 2.9 и 7x с прошивки 47.13.

  3. Включите Массив пользователя в основном пакете.

  4. В настройках трека задайте Вход зажигания.

  5. В настройках входов настройте входы, к которым подключены зажигание и концевые выключатели дверей. Алгоритм считает, что открытой двери соответствует логическая единица (зона срабатывания). Если при открывании двери концевик притягивается к «массе», установите соответствующий флаг в настройках входа.

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

    SCRIPT galileosky/hpc168_doorsens
  7. Перезагрузите прибор командой RESET и выполните стартовую инициализацию командами HPC168CONF.

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

Датчики опрашиваются циклически. Когда на входе появляется сигнал открытой двери, начинается подсчёт вошедших и вышедших; при закрывании двери данные пишутся в тег, формируется внеочередная точка, и подсчёт начинается заново.

Если концевые выключатели к входам не подключены (вход датчика задан как -1), алгоритм опрашивает датчики раз в минуту: если за минуту данные не изменились, он записывает их в массив пользователя, формирует внеочередную точку и начинает подсчёт заново.

Состояние дверей и зажигания можно брать не с физических входов, а из тега — например, из данных CAN-шины (команда HPC168CONF 5).

После выключения зажигания алгоритм опрашивает датчики ещё некоторое время (команда HPC168CONF 6, по умолчанию 30 минут).

Общие ответы: cmd? — неизвестная команда; wait init — параметры ещё загружаются, повторите команду позже.

КомандаЧто делает
HPC168CONF 1Показать текущие настройки
HPC168CONF 2,sensorIndex,hpcAddress,inputNumНастроить датчик
HPC168CONF 3,sensorPollingНачать (1) или прекратить (0) опрос всех датчиков
HPC168CONF 4,baudRateЗадать скорость обмена с датчиками
HPC168CONF 5,ignitionTagId,doorsTagIdЗадать теги состояния зажигания и дверей
HPC168CONF 6,noIgnitionTimeoutВремя опроса после выключения зажигания, с

Ответ на HPC168CONF 1:

hpc168 on;BaudRate=9600;NoIgnitionTimeout=1800 secs;ignitionTagId=-1;doorsTagId=-1;sens=[addr,in]:0=[1,1],1=[2,2],2=[3,-1],3=[-1,-1],4=[-1,-1],5=[-1,-1],6=[-1,-1],7=[-1,-1]

Здесь опрос активирован, скорость 9600, опрос после выключения зажигания 1800 секунд, теги зажигания и дверей не используются, датчик 0 — адрес 1 и вход двери 1, датчик 1 — адрес 2 и вход 2, датчик 2 — адрес 3 без входа двери, остальные отключены.

HPC168CONF 2,sensorIndex,hpcAddress,inputNum
ПараметрЗначение
sensorIndexИндекс датчика, 0…7
hpcAddressАдрес датчика, 1…247. -1 — прекратить опрос этого датчика
inputNumВход прибора, к которому подключён концевик двери, 0…9. -1 — концевик не используется, датчик опрашивается раз в минуту. При заданном теге состояния дверей значение игнорируется

Ответы: список датчиков в формате sens=[addr,in]:…; addr? — неверный формат адреса; addr already used — такой адрес уже занят.

Примеры:

HPC168CONF 2,0,21,1 # датчик 0: адрес 21, вход двери 1
HPC168CONF 2,0,21,-1 # датчик 0: адрес 21, без входа двери
HPC168CONF 2,0,-1,-1 # удалить датчик 0
HPC168CONF 4,baudRate

Допустимые значения: 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с. Ответ — BaudRate=9600.

HPC168CONF 5,ignitionTagId,doorsTagId

Идентификаторы берутся из таблицы тегов в контексте алгоритмов; -1 (по умолчанию) — не используется.

  • ignitionTagId — бит 0 указанного тега переопределяет состояние физического входа зажигания: 0 — выключено, 1 — включено;
  • doorsTagId — биты с 1-го по 8-й переопределяют состояние физических входов дверей: 0 — закрыта, 1 — открыта.

Биты отсчитываются справа налево, начиная с нуля.

Пример — взять зажигание из тега 2 (CAN8BITR0), двери из тега 3 (CAN8BITR1):

HPC168CONF 5,2,3

Ответ — ignitionTagId=2; doorsTagId=3.

HPC168CONF 6,noIgnitionTimeout

Время в секундах, по умолчанию 1800 (30 минут). Ответ — NoIgnitionTimeout=1800 secs.

HPC168CONF 3,1 # начать опрос
HPC168CONF 3,0 # прекратить опрос

Ответы — hpc168 on / hpc168 off. Значение не сохраняется в настройках алгоритма.

Часть задач решается не командами, а дополнительным алгоритмом EasyLogic:

  • начальная конфигурация датчиков — если настройки нужно задавать программно;

    Пример алгоритма конфигурирования датчиков

  • отключение подсчёта в заданной геозоне.

    Пример алгоритма отключения подсчёта в геозоне

Первый байт — тип данных, 0x0A. Дальше 8 групп по 8 байт — по одной на датчик; максимальный размер массива 65 байт. Порядок байт — little-endian.

ПолеРазмер, байтОписание
13Адрес датчика
21Состояние датчика: 0 — запрос отработан, 1 — датчик не был задействован (дверь закрыта), 3 — внутренняя ошибка
32Количество вошедших пассажиров
42Количество вышедших пассажиров

Пример: датчик 1 — вошло 1497, вышло 1593; датчик 2 не был задействован.

БайтЗначениеHEXОписание
0100x0AСтартовый байт
1–310x010000Адрес датчика 1
400x00Нормальная работа
5–614970xD905Вошло
7–815930x3906Вышло
9–1120x020000Адрес датчика 2
1210x01Датчик не был задействован
13–1400x0000Вошло
15–1600x0000Вышло

В виде набора байт: 0A 010000 00 D905 3906 020000 01 0000 0000 …

Если ПО мониторинга не умеет разбирать массив пользователя, обработку придётся реализовать на стороне сервера по описанию протокола Galileosky.

Включите канал Алгоритмы и скрипты в Каналах диагностики.

СообщениеЗначение
hpc168: offОпрос датчиков приостановлен
p2 init! / p2 init?Порт инициализирован / ошибка инициализации: не хватает памяти, прибор не перезагружен после загрузки алгоритма (рядом будут сообщения Port Initialization error) либо версия прошивки устарела
hpc168: door <номер> opened / closedСмена состояния двери
hpc168: <адрес> passengersIn=%d, passengersOut=%dПринятые данные датчика
hpc168: <адрес> get passengers-errorОшибка в работе датчика — проверьте настройки и подключение
hpc168: <адрес> reset-ok / reset-errorДатчик очистил данные / ошибка при очистке

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