Описание «железа» — см. часть 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 одно-портовый преобразователь 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 мм, подключенный через резистор. Тут же пропали все «тормоза», стало вполне вменяемо работать.
Настройка оборудования Болид
Вся настройка производится в среде 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.
«в окне “Элементы данных” также есть нужная закладка “Предобработка”. Тут можно отредактировать, что будет показываться “в итоге”. Температура и влажность, получается из считываемых значений, которые необходимо разделить на 256: “Пользовательский множитель”- 0,0039 (т.е. 1/256);»
при получении отрицательных температур результат может удивить. Но надо проверить по форматам, может быть и не удивит
Есть такой нюанс, описан в документации на С2000-ПП. Спасибо за уточнение.
Просто я его «опустил», так как отрицательных температур в серверных не бывает, а наружу его ставить — необходима доработка по степени защиты.
К сожалению и я его упускал, прочитав РЭ минимум 7 раз, и сделав КВТ.
Как только дошло дело до Нормальных испытаний в камере Холода-тепла (а я принципиально их провожу более жесткими для всех приборов) — вылезла «неувязочка», которую было, кстати говоря, сложно увидеть, если не посадить человека переда Камерой на 5 часов чтобы он Смотрел и писал Протокол — как оно чего.
Да, из интересного будет — Управление Реле. Весьма занятно может оказаться, ибо можно брать как модули ДПЛС с программированием порогов настройкой комплекта, так и из Zabbix-а.
И дня, на всякий случай тут в статье разобраны не все варианты состояний шлейфов.
то-есть их разбор и анализ дело не такое простое. Если будут другие типы шлейфов, к примеру, но это уже другая история)
Я не упустил, а опустил (осознано пропустил).
Реле в виде СП2 в планах — только его нужно купить.
Я специально отключил функции контроля КЗ и выставил тип шлейфа — технологический + сделал подрезку по первому событию, так как без этого действительно вариаций много.