Pull to refresh

Мониторинг окружающей среды в серверном помещении (Bolid + Zabbix)

Reading time14 min
Views18K
Наверное самым простым способом для ИТ-специалиста при решении задачи мониторинга окружающей среды в серверном помещении будет использование специализированных контроллеров с выдачей данных по SNMP (например, NetBotz или NetPing). Но для тех кто не боится трудностей и хочет получить недорогое решение промышленного уровня (с серийным выпуском оборудования) — есть интересный вариант с протоколом Modbus.



Ниже я опишу систему мониторинга на базе компонентов российского производства — НВП «Болид», а «сливать» данные будем в Zabbix 4.0. НВП «Болид» широко известен в кругах средств охранно-пожарной автоматики и рассматриваемое решение будет нести этот «отпечаток». Их устройства мягко говоря не отличаются дизайном и продуманностью корпусов, но… цена с лихвой компенсирует все эти недостатки. Стоит отметить весьма неплохую документацию и более-менее нормальную бесплатную техническую поддержку.

Протоколы и интерфейсы


Прежде чем перейти к «железу» очень кратко рассмотрим применяемые протоколы и интерфейсы:

Modbus: промышленный протокол, построенный по принципу «Ведущий» (Master) — «Ведомый»(Slave). В сети Modbus может быть только один ведущий, который опрашивает ведомых и «говорит», что им делать. В качестве среды передачи данных может использовать интерфейс RS-485 (Modbus RTU) или Ethernet (Modbus TCP). Теоретически максимальное кол-во устройств — 247.

Орион: проприетарный протокол компании НВП «Болид», построенный по принципу «Ведущий» (Master) — «Ведомый» (Slave). В качестве среды передачи данных использует по всей видимости модифицированный интерфейс RS-485, благодаря чему максимальная длина линии может достигать 3 км (!). Максимальное кол-во устройств — 127.

ДПЛС (двухпроводная линия связи): проприетарный протокол компании НВП «Болид», построенный по принципу «Ведущий» (Master) — «Ведомый» (Slave). В качестве среды передачи данных использует медный парный кабель (рекомендуется — «витая пара»). Максимальное кол-во устройств — 127+1. Топология — шина (или кольцо) с ответвлениями, максимальная длина линии может достигать 1,5 км (зависит от типа кабеля, сечения жил кабелей и кол-ва подключенных устройств).

RS-485: интерфейс физического уровня, использует для передачи данных «витую пару» (одна «2-wire» или две пары «4-wire», второе встречается реже). Заявленная максимальная длина линии — 1,2 км. Топология — шина.

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

Датчики


Система предполагает подключение «специальных» (проприетарных) адресных датчиков (если говорить более строго «извещателей», т.е. устройств со встроенным датчиком), но можно подключить и «обычные» неадресные с использованием адресных расширителей (от 1 до 8 входов). Применение адресных извещателей дает два преимущества: практически все адресные устройства получают питание по сигнальной линии (т.е. не требуется подводить отдельную линию питания 12В) и не требуется где либо размещать адресный расширитель. Датчики подключаются в ДПЛС.
Ассортимент «оконечного» оборудования достаточно широк, но приведу то, которое может потребоваться при решении нашей задачи:

  • С2000-ВТ — комбинированный датчик температуры и влажности для использования внутри помещений (IP41). Имеет сертификат средства измерения, погрешность всего 0,5°С и рекомендованную розничную цену всего 1200 руб.!
  • С2000-СМК (и его вариации) — датчик «открытия двери» (магнито-контактный извещатель, геркон). Рекомендованная розничная цена — 300 руб.;
  • С2000-ДЗ — точечный датчик затопления (делается совместно с Риэлта, поэтому корпус «неформат»). Рекомендованная розничная цена — 800 руб.;
  • С2000-АР1, С2000-АР2, С2000-АР8 — адресные расширители на 1, 2 и 8 подключений, могут использоваться как «приемники» сигналов типа «сухой контакт» (вкл./откл.) с другого оборудования (например, с прибора пожаротушения или помпы кондиционера);
  • С2000-СП2 — релейный блок (на 2 выхода), с помощью которого можно управлять устройствами (например, лампой сигнализации — световым индикатором). Рекомендованная розничная цена — 1200 руб.

Внешний вид датчиков



Полный перечень оборудования см. на официальном сайте производителя.

Контроллер


«Линейка» контроллеров, если так можно выразиться состоит из трех моделей:

  • С2000-КДЛ — базовая модель (обозначение расшифровывается как «Система 2000 — Контроллер Двухпроводной Линии связи»);
  • С2000-КДЛ-2И — добавлены гальванические развязки для RS-485 и ДПЛС;
  • С2000-КДЛ-Modbus — в конструкцию С2000-КДЛ-2И добавлен преобразователь протокола Modbus С2000-ПП.

Внешний вид контроллеров


Оптимальнее использовать С2000-КДЛ-Modbus, но можно и С2000-КДЛ/C2000-КДЛ-2И с установленным рядом преобразователем протокола С2000-ПП, у которого исполнение корпуса «монтаж на панель».

Контроллер выполняет роль «Ведущего» в линии ДПЛС (к одному контроллеру можно подключить только одну линию ДПЛС), причем в линии RS-485 Орион он уже выступает в роли «Ведомого» и забрать данные с него «напрямую» не получится. Для сбора данных в линии RS-485 Орион используется, так называемый, пульт С2000М или С2000-ПП (в том числе во строенном исполнении), которые имеют уже стандартизованные интерфейсы передачи данных.

У приведенных контроллеров также можно выделить следующие характеристики:

  • относятся к конфигурируемому типу, а не программируемому (т.е. нужно только настроить параметры, а не разрабатывать программу);
  • поддержка в ДПЛС до 127 адресных устройств (С2000-ВТ имеет два адреса), причем многие пуско-наладчики не рекомендуют использовать больше 100-110;
  • двойной ввод по питанию DC 12-24В;
  • не слишком удобная конструкцию корпуса (все подключаемые провода невозможно спрятать в корпусе прибора и приходится их убирать сзади прибора).

Для отказоустойчивости системы можно использовать следующие меры (которые не являются обязательными):

  • кольцевой шлейф — обрыв шлейфа в одном месте не влияет на наличие сигналов от адресных датчиков;
  • использование ответвительно-изолирующих блоков (БРИЗ) — позволяет делать радиальные ответвления, а также изолировать сегмент шлейфа, в котором произошло замыкание «ДПЛС+» и «ДПЛС-».

ВАЖНО: на контроллеры постоянно выходят новые прошивки, которые устраняют ошибки и добавляют функционал, причем прошивки С2000-КДЛ и С2000-КДЛ-2И несовместимы.

Подключение Modbus


Как описывалось ранее, можно использовать или контроллер С2000-Modbus либо преобразователь С2000-ПП. Обе схемы предусматриваются выдачу сигналов по протоколу Modbus RTU 2-wire с помощью RS-485 в качестве ведомого устройства (ведущий у нас — Zabbix или какая-нибудь SCADA-система). Для подключения к серверу можно использовать два метода:

  • предпочтительный — преобразователь Modbus RTU/Modbus TCP с подключением к той же локальной сети, где находится наш сервер с ПО;
  • дешевый — преобразователь RS-485/USB с подключением непосредственно к серверу. Отмечу, что есть много нареканий на надежность данных USB-стиков (можно брать практически любые, я заказывал из Китая за 100 рублей, использовал связку конвертер RS-232/RS-485 и переходник USB/RS-232 и все продолжало работать!).

Возможны две схемы передачи событий в протокол Modbus:

  • напрямую с С2000-ПП/C2000-КДЛ-Modbus, когда указанные устройства работают в режиме «Орион-Master» (выбирается перемычкой на плате) и выполняют роль опросчика системы «Орион»;
  • с использованием пульта «С2000М», когда он собирает информацию с контроллеров и только потом отдает ее в Modbus через С2000-ПП/C2000-КДЛ-Modbus (режим «Орион-Slave»). Данная схема хороша тем, что пульт можно использовать как «локальный терминал» (посмотреть события на встроенном ЖК-экране), а также продолжать фиксировать события в случае поломки сервера с ПО мониторинга. Минус: чуть сложнее настройка и пульт имеет весьма специфичный внешний вид.

Примеры схем системы






Питание и монтаж


Для питания необходим источник питания 12В DC, желательно стабилизированный и с монтажом на DIN-рейку. Его мощность (обычно указывается либо в мА или А) можно грубо подбирать из расчета 1 контроллер — 500 мА. Резервированный источник питания (со встроенным аккумулятором, РИП) я бы порекомендовал использовать только в случае применения пульта С2000М. И обязательно подключить источник питания к тому же источнику бесперебойного питания (ИБП), что и сервер системы мониторинга.

Можно конечно смонтировать все это на стену, но оставим это для монтажников охранно-пожарных сигнализаций, а сами воспользуемся 3U DIN-рейкой для монтажа в 19"-шкаф (например, ЦМО PS-3U или Cabeus с тем же артикулом, переднюю панель придется выкинуть). В случае использования пульта С2000-М можно применить 19" заглушку на 4U (желательно перфорированную), которая будет выполнять роль монтажной панели и к которой уже закрепить DIN-рейку для клемм и контроллера. Минус решения — оборудование выступает за монтажную 19" плоскость.

Собрать и смонтировать систему из комплектующих не должно вызвать вопросов, но обращаю внимание на следующее:

  • большинство датчиков имеет небольшой кусочек торчащего кабеля. Нарастить кабель, можно применяя либо пайку с термоусадкой, либо двухпарную распачную коробку КС-2 (компактная, но качество изготовления «хромает»), либо соединение RJ11 (RJ45);
  • перед монтажом в датчики нужно прописать их адреса (как это делается рассмотрено далее) и отмаркировать;
  • при подключении датчиков нужно соблюдать полярность «ДПЛС+» и «ДПЛС-» (см. документацию — какой цвет имеет ДПЛС+, как правило цветной) — если перепутаете, то датчик не определится в системе.

Для тех кто не хочет паять, но любит обжимать «фишки» можно воспользоваться ниже описанным вариантом (наверное, все-таки лучше RJ11 — чтобы случайно не скоммутировать ДПЛС-линию в сервер).

Потребуются:

  • кабель витая пара 2-х парный, неэкранированнный;
  • «мешок» разъемов RJ11 (6P4C или 6P6C);
  • разветвители RJ11 со входами типа гнездо (бывают самые разнообразные варианты по очень симпатичным ценам).

На одну пару заводим ДПЛС, на другую, например, 12В DC. Подключение датчиков через разветвители.

Пояснительная картинка


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


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

  • преобразователь протокола С2000-ПП производства НВП «Болид»;
  • контроллер С2000-КДЛ производства НВП «Болид»;
  • термогигрометр (комбинированный датчик температуры и влажности) С2000-ВТ производства НВП «Болид»;
  • извещатель магнитоконтактный С2000-СМК производства НВП «Болид»;
  • датчик протечки точечный С2000-ДЗ производства «Риэлта»;
  • адресный расширитель С2000-АР1 исп. 02 производства НВП «Болид»;
  • извещатель объемный Фотон-10М производства «Риэлта» (такой «завалялся»);
  • блок питания 12В AT-12/1.5 DIN производства «AccordTec»;
  • переходник RS-485/USB купленный на aliexpress (на распространенном чипе CH340G, linux определяет его как «QinHeng Electronics HL-340 USB-serial adapter»). Стало интересно, как будет отрабатывать система в самой дешевой конфигурации;
  • тонкий клиент 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 мм, подключенный через резистор. Тут же пропали все «тормоза», стало вполне вменяемо работать.




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


Вся настройка производится в среде Windows, соответственно перед началом работ нужно установить драйвер на переходник RS-485/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-КДЛ в картинках


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

Шаг 5. Настраиваем С2000-ПП.
По вкладке «Прибор» настройки приведены на картинке (это самые «ходовые» и у большинства устройств они идут по-умолчанию). Аналогичные настройки должны быть у COM-порта переходника RS-485/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 нет) :)

После установки Zabbix, необходимо установить пакеты autoconf, automake, libtool, pkg-config и затем модуль расширения — libzbxmodbus. Про него на Хабре есть отдельная статья (я на нее буду постоянно ссылаться) и он недавно обновился, как раз для работы с Zabbix 4.0. В статье также есть более развернутая информация по протоколу Modbus. Сам модуль и более-менее подробная инструкция лежат на GitHub-е.

Небольшие отличия в установке от указанного на GitHub:

  ...
    ./configure --prefix=/etc/zabbix --enable-zabbix-3.2 
  ...   
    sudo make install 

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

Прописываем в конфигурационном файле etc/zabbix/zabbix_server.conf ссылки на расширение и подключаем «железо» к «серверу» с Zabbix. Для переходника RS-485/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") на С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 секунд», Группы узлов сети «Инженерная инфраструктура» > Добавить > Отрегулировать размер панели и нажать «Сохранить изменения»:



Заключение


Полученная система, благодаря использованию «дальнобойных» протоколов, может стать отличным решением, как для мониторинга серверной и пары кроссовых, офисной зоны (в части контроля обеспечения темперурно-влажностного режима) или даже небольшого ЦОДа. Кто-то может заявить «фу-фу-фу, болид — гадость еще та, нужно использовать ХХХ (подставить что-нибудь из пром. автоматики)» — тоже вариант, но на мой взгляд это будет уже сильно избыточно и к тому же дороже. И небольшой нюанс: как видно, система на Болид достаточно простая (хотя и имеется несколько странная логика), а вот «допилить» решение на пром. контроллерах — порой тот еще «головняк».

P.S. Данная статья является адаптацией двух статей на моем блоге:
Недорогой мониторинг для серверного помещения (часть 1 – вводная)
Недорогой мониторинг для серверного помещения (часть 2 – практическая)

UPD. Переходник RS485-USB проработав 3 дня — отвалился. Признан неустойчивым, но годным для пуско-наладки. Был заменен на одно-портовый преобразователь MGate MB3170 производства MOXA (взял из того, что было на руках) — все стало стабильно.
Нужно понимать, что эта статья только пример, как «подружить» Zabbix и Болид. Для реальной реализации можно добавить больше отслеживаемых состояний ДПЛС, а также, например, отрицательные температуры (они обрабатываются несколько иначе).
Tags:
Hubs:
+10
Comments10

Articles

Change theme settings