Недорогой мониторинг для серверного помещения (часть 2 — практическая)

Описание «железа» — см. часть 1.

Сборка стенда

Для «практической» части был собран стенд в составе:

  • преобразователь протокола С2000-ПП производства НВП «Болид»;
  • контроллер С2000-КДЛ производства НВП «Болид»;
  • термогигрометр (комбинированный датчик температуры и влажности) С2000-ВТ производства НВП «Болид»;
  • извещатель магнитоконтактный С2000-СМК производства НВП «Болид»;
  • датчик протечки точечный С2000-ДЗ производства «Риэлта»;
  • адресный расширитель С2000-АР1 исп. 02 производства НВП «Болид»;
  • извещатель объемный Фотон-10М производства «Риэлта» (такой «завалялся»);
  • блок питания 12В AT-12/1.5 DIN производства «AccordTec»;
  • переходник RS485-USB купленный на aliexpress (на распространенном чипе CH340G, linux определяет его как «QinHeng Electronics HL-340 USB-serial adapter»). Стало интересно, как будет отрабатывать система в самой дешевой конфигурации; UPD. 07/02/20 Переходник RS485-USB проработав 3 дня — отвалился. Признан неустойчивым, но годным для пуско-наладки;
  • UPD. 07/02/20 одно-портовый преобразователь MGate MB3170 производства MOXA (взял из того, что было на руках);
  • тонкий клиент TONK 1811 от ГК «ТОНК» (был куплен на avito за 500 рублей) на процессоре Intel Atom N270 со встроенной графикой GMA950.

Тонкий клиент был «немного доработан»:

  • DOM-модуль на 2Гб с установленным Windows XP embedded заменен на 2,5 HDD ATA 60Гб от старенького ноутбука (пришлось докупить шлейф, SATA-HDD почему-то не подхватился — порт SATA в BIOS включал);
  • увеличен размер оперативной памяти DDR2 SO-DIMM с 1Гб до 2Гб;
  • установлен Linux Mint 19.1 “Tessa” Xfce Edition и настроен удаленный рабочий стол с помощью TightVNC;
  • «доработана» система охлаждения — уменьшил радиатор, чтобы поместился HDD практически «заподлицо» с корпусом, убрал верхнюю крышку и сверху «присобачил» какой-то вентилятор 120 мм, подключенный через резистор. Тут же пропали все «тормоза», стало вполне вменяемо работать.
Общая схема стенда — при пуско-наладке
Общая схема стенда — рабочий вариант
Фото стенда (С2000М и световой оповещатель не задействованы)

Настройка оборудования Болид

Вся настройка производится в среде Windows, соответственно перед началом работ нужно установить драйвер на переходник RS485-USB, а также две «супер»-программы от НВП «Болид», которые поставляются бесплатно: Orion-prog и Uprog. Далее приборы по отдельности подключается к переходнику RS-485/USB к портам A-B RS-485 «Орион» (используется прямая раскладка, а не как на COM-портах).

ВАЖНО: при всех последующих шагах у С2000-ПП перемычка XP1 на плате должна быть снята.

Шаг 1. Воткнуть в USB- разъем переходник RS-485/USB и посмотреть в диспетчере устройств, какой номер COM-порта назначен переходнику. Драйвера у переходника должны быть установилены без восклицательных знаков в «Диспетчере устройств».

Шаг 2. От имени администратора запустить Orion-prog, выбрать нужный COM-порт и выполнить поиск и посмотреть версию прошивки прибора. Зайти на официальный сайт производителя и проверить наличие более свежей прошивки и при необходимости (скорее всего потребуется) — выполнить обновление (на момент написания статьи: для С2000-ПП — 1.32, С2000-КДЛ — 2.22).

*Прошивка 1.32 по факту у меня ставилась «криво» — в Uprog конфигурация из прибора не считывалась. Поэтому «откатился» обратно на 1.31.

Шаг 3. Установка адреса у приборов (сначала у С2000-ПП, например, 2 и потом у С2000-КДЛ — 3). Для этого запускаем Uprog — у всех приборов по умолчанию адрес 127, поэтому настраивать приборы в начале необходимо по-одному. Более подробное видео от производителя см. YouTube.

Шаг 4. После установки адреса на С2000-КДЛ необходимо задать адреса датчиков в двухпроводной линии связи (ДПЛС). Они также по умолчанию имеют адрес 127 (причем кружочек с датчиком в Uprog не подсвечивается). Считываем конфигурацию прибора (Ctrl+F3) и последовательно подключаем датчики выходам ДПЛС +/-, задавая адреса. При наведении на датчик в контекстном меню «Запрос типа АУ» можно уточнить тип датчика или «Запрос АЦП АУ» — узнать работает ли датчик (например, для магнито-контактного извещателя АЦП при замыкании: 100, а при размыкании: 50). По факту у меня следующая адресная конфигурация: 1 — геркон С2000-СМК, 2 — температура С2000-ВТ, 3 — влажность С2000-ВТ, 4 — протечка С2000-ДЗ, 5 — адресный расширитель С2000-АР1 исп. 02 (с подключенным к нему объемным извещателем Фотон-10М).

Далее переходим на вкладку «Входы» и делаем следующее:

  • указываем типы датчиков: для температурного — 10, для измерения влажности — 15, для все остальных — 6 (технологический);
  • для технологических входов задаем «Время восстановления, с» — это время, через которое шлейф возвратится в состояние «Норма» после получения состояния «Нарушение». Нужно указать цифру не менее интервала опроса в Zabbix (я принял 10 секунд);
  • отключим «Управление индикацией АУ» (0), «Контроль на обрыв и КЗ» и «Контроль состояния резервной батареи», чтобы упростить настройку.

После всех «манипуляций» с С2000-КДЛ выполняем «Запись конфигурации в прибор».

Шаг 5. Настраиваем С2000-ПП.

По вкладке «Прибор» настройки приведены на картинке (это самые «ходовые» и у большинства устройств они идут по-умолчанию). Аналогичные настройки должны быть у COM-порта переходника RS485-USB и любого другого устройства, подключенного в сеть Modbus. Я для прибора С2000-ПП в сети Modbus выбрал адрес 11 (адрес в системе «Орион» — 2!).

Потом переходим во вкладку «Устройства» и начинаем заполнять «Таблицу зон»:

  • первый столбец я указал «3» — это адрес прибора С2000-КДЛ в системе «Орион»;
  • номер ШС («шлейф сигнализации») — это адреса датчиков (фактически ШС=адрес, можем пропустить несколько адресов, если не хотим забирать с них информацию);
  • № раздела Modbus — можно сгруппировать наши датчики в группы. В целях упрощения — я этого не стал делать и всем приписал 1 раздел;
  • тип зоны — очень важный параметр. Выбираем его, согласно типу датчика.

После настройки С2000-ПП выполняем «Запись конфигурации в прибор».

Шаг 6. Объединяем С2000-ПП и С2000-КДЛ в сеть по RS-485 Орион, присоединяем датчики к С2000-КДЛ (можно «кучкой» под две клеммы), а переходник RS-485/USB подключаем к выходу Modbus C2000-ПП. Перемычку XP1 устанавливаем в замкнутое положение (важно: после установки перемычки нужно перезагрузить прибор сбросом питающего напряжения). Все — система «готова к бою».

Проверяем «работоспособность» в бесплатной консольной программе Modpoll Modbus Master Simulator (далее — «Modpoll»), например, по адресу прошивки «С2000-ПП» или по отдаче информации с С2000-КДЛ по адресу «40000» — это первый датчик.

Прошивки приборов «для ознакомления» можно скачать здесь.

Настройка Zabbix

Предупреждение: Zabbix настраивал в первый раз, как и Linux Mint (так как Zabbix под Windows нет).

Для создания загрузочной USB-флешки с Linux Mint я использовал образ с оффсайта и программу balenaEthcher.

Установка Zabbix 4.0 делалась по инструкции от производителя (дистрибутив zabbix-release_4.0-2+bionic_all.deb).

Из терминала с помощью команд «sudo apt install + имя приложения/пакета» установил:

  • gedit — текстовый редактор (встроенный vi — это верх глумления над «Виндузятниками»);
  • пачку пакетов (потребуются для установки модуля расширения) — autoconf, automake, libtool, pkg-config;
  • модуль расширения — libzbxmodbus. Про него на habr.com есть отдельная статья (я на нее буду постоянно ссылаться, так как она выпущена в корпоративном блоге Zabbix, т.е. можно считать «официальным источником») и он недавно обновился, как раз для работы с Zabbix 4.0. Сам модуль и более-менее подробная инструкция лежат на GitHub-е.

Небольшие нюансы в установке:


    tar zxvpf libzbxmodbus-0.9.tar.gz 
// распаковка. Это можно сделать и в графической оболочке, далее уже в терминале
    cd libzbxmodbus-0.9 
//перейти в папку libzbxmodbus-0.9 
    ./configure --prefix=/etc/zabbix --enable-zabbix-3.2 
//"долго думал", что значит [2|3|3.2] в описании
    make
    sudo make install 
//запуск с повышением прав доступа

При изучении работы модуля libzbxmodbus стало понятно, что применить схему с пультом С2000М не получится, потому что в этом случае получение данных с термогигрометров выглядит так: запись в регистр 46179 номера нужной зоны и потом забор данных с регистра 46328 — т.е. весьма нетривиально (в «больших» SCADA-системах, такое реализовать возможно, например, в MasterSCADA).

Прописываем в конфигурационном файле etc/zabbix/zabbix_server.conf ссылки на расширение и подключаем «железо» к «серверу» с Zabbix. Для переходника RS485-USB устанавливать драйвера не пришлось, а вот как понять какой номер USB будет задействован я так и не понял, хорошо что сработало подключение к /dev/ttyUSB0 (посмотреть, что устройство обнаружено в системе можно командой lsusb).

Как и с Windows, проверяем с помощью утилиты Modpoll (я запускал linux i386), что «железки» подключены и информация с них доступна.

Так как в статье описывается процесс настройки на примере Zabbix 2.2 — там интерфейс немного другой, то приведу пояснения и картинки настроек.

Шаг 1. Создаем узел сети и группу, в которые наши узлы будут входить (например, узел — «Контроль состояния окружающей среды» и группу — «Инженерная инфраструктура»):

Настройка>Узлы сети>Создать узел сети>Вводим наши названия >Добавить

Шаг 2. Создадим элементы данных. В статье рекомендуется создавать шаблоны, но так как у нас система не содержит повторяющихся элементов, поэтому пропущу этот шаг. Например, если бы у нас было несколько кондиционеров, подключаемых по Modbus, то можно было бы воспользоваться функционалом системы.

Настройка>Узлы сети>В строке содержащей название нашего узла «Контроль состояния окружающей среды» нажимаем на «Элементы данных»>в появившемся окне нажимаем «Создать элемент данных».

Начинаем «забивать» наши датчики:

Небольшие нюансы:

  • в статье используется синтаксис функции «modbus_read_registers», а по описанию GitHub «modbus_read» — второй вариант короче и работает;
  • можно вместо макросов {$MODBUS_PORT} и {$MODBUS_SLAVE} указывать порт в виде /dev/ttyUSB0 и «11«, но это будет неудобно, если потом потребуется изменить порт USB или адрес С2000-ПП. Для преобразователя Modbus RTU / Modbus TCP в поле макроса
    {$MODBUS_PORT} указать IP-адрес преобразователя и порт (вида 192.168.0.30:502);
  • в документации указано, что для запроса состояния зоны (столбец «№ зоны Modbus») на С2000-ПП необходимо обратиться на: «адрес регистра 40000+М, где М = (№ зоны –1)» — вот так ход: «№ зоны минус 1″;
  • не делайте очень частый опрос по времени: С2000-ПП начнет возвращать ошибку «exception error 15» — прибор не успевает подготавливать данные (выражается это в постоянном свечении индикатора на приборе) ;
  • для температуры и влажности забираются данные с регистрами 3000-…
  • в окне «Элементы данных» также есть нужная закладка «Предобработка». Тут можно отредактировать, что будет показываться «в итоге». Температура и влажность, получается из считываемых значений, которые необходимо разделить на 256: «Пользовательский множитель»- 0,0039 (т.е. 1/256);
  • Для дискретных герконов, датчиков протечки и т.п. нужно еще использовать «Отображение значений», связано это со способом предоставления информации.

Немного о том, в каком виде предоставляются данные при опросе зон.

Допустим, получили ответ в десятичном формате 9148(D). Переведем в шестнадцатеричный формат (HEX): получим 23BC — по инструкции к прибору С2000-ПП это два события с кодами 23(HEX)/35(D) и BC(HEX)/188(D). Далее идем смотрим Таблицу 5. «Список событий (состояний ШС) системы «Орион»». В ней находим, 35 «Восстановление технологического входа» и 188 «Восстановление связи со входом». Переводить D-HEX-D нет необходимости, первое событие — это целая часть от деления полученного значения на 256, а остаток — второе событие (9148=35*256+188). При опросе технологических входов будем забирать, только первое событие (приоритетное), которое «должно» принимать состояния 35 и 36 («Восстановление технологического входа» и «Нарушение технологического входа»). Отбрасывать дробную часть (второе событие) будем используя настройку Элемента данных «Тип информации: Числовой (целое положительное)». Также можно добавить другие события — например, «обрыв ДПЛС».

Предобработка значений
Преобразование значений
Дополнительный способ входа в «Преобразование значений»

Шаг 3. Заполняем макросы порта и номера устройства:

Настройка>Узлы сети>»Контроль состояния окружающей среды»>выбираем «Макросы»

Шаг 4. Вывод показаний на панель управления:

Стартовый экран>Все панели, выбрать «Создать панель»>В появившемся окошке задать «Имя панели» и пользователя, которому эта панель будет доступна>Нажать «Создать новый виджет»>Тип «Обзор данных», Интервал обновлений «10 секунд», Группы узлов сети «Инженерная инфраструктура»>Добавить>Отрегулировать размер панели и нажать «Сохранить изменения»:

Осталось настроить оповещения — это будет «домашним заданием» для тех, кто решится внедрить связку Bolid + Zabbix. Появились вопросы — прошу в комментарии.

P.S. Эта статья на Хабре.

UPD. 07/02/20 Замена переходника RS485-USB на «железный» преобразователь Modbus RTU / Modbus TCP.


4 Comments

  1. Юрий

    «в окне “Элементы данных” также есть нужная закладка “Предобработка”. Тут можно отредактировать, что будет показываться “в итоге”. Температура и влажность, получается из считываемых значений, которые необходимо разделить на 256: “Пользовательский множитель”- 0,0039 (т.е. 1/256);»

    при получении отрицательных температур результат может удивить. Но надо проверить по форматам, может быть и не удивит

    Reply
    1. admin (Post author)

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

      Reply
      1. Юрий

        К сожалению и я его упускал, прочитав РЭ минимум 7 раз, и сделав КВТ.
        Как только дошло дело до Нормальных испытаний в камере Холода-тепла (а я принципиально их провожу более жесткими для всех приборов) — вылезла «неувязочка», которую было, кстати говоря, сложно увидеть, если не посадить человека переда Камерой на 5 часов чтобы он Смотрел и писал Протокол — как оно чего.

        Да, из интересного будет — Управление Реле. Весьма занятно может оказаться, ибо можно брать как модули ДПЛС с программированием порогов настройкой комплекта, так и из Zabbix-а.

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

        Reply
        1. admin (Post author)

          Я не упустил, а опустил (осознано пропустил).
          Реле в виде СП2 в планах — только его нужно купить.
          Я специально отключил функции контроля КЗ и выставил тип шлейфа — технологический + сделал подрезку по первому событию, так как без этого действительно вариаций много.

          Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *