Настройка преобразователя протоколов (SNMP, Modbus) Babel Buster. Часть 1
09.03.2015, Автор: Андрей Торженов / контакты / обратная связь /Ранее, уже было рассмотрено описание применения преобразователя протоколов (Modbus, SNMP) и интерфейсов (RS-485, Ethernet) Babel Buster компании Control Solutions, Inc.
В данной статье, будет приведено описание настройки Babel Buster моделей SPX и BB2-6010.
Статья состоит из двух частей:
- Часть 1: Назначение преобразователя Babel Buster, основные настройки и чтение Modbus регистров используя SNMP протокол.
- Часть 2: Запись в регистры Modbus используя SNMP протокол, настройка отправки SNMP Trap'ов и обзор настройки Modbus RTU RS-485.
Часть 1
Назначение преобразователя Babel Buster, основные настройки и чтение Modbus регистров используя SNMP протокол
1. Описание задачи
В организации используется система мониторинга серверов и сетевого оборудования на базе протокола SNMP (Zabbix, Nagios и др.). Возникла необходимость, отслеживать в системе мониторинга, температуру в помещении, влажность, напряжение в сети 220В, силу тока и потребляемую мощность.
Часто, датчики и контроллеры для измерения необходимых параметров, используют протокол Modbus TCP или Modbus RTU с интерфейсом RS-485 и работают в составе SCADA систем (Supervisory Control And Data Acquisition - диспетчерское управление и сбор данных, https://ru.wikipedia.org/wiki/SCADA).
Стоит задача, интегрировать Modbus контроллеры с датчиками в уже имеющуюся систему мониторинга на базе протокола SNMP. Обеспечить возможность считывать и записывать значения в контроллер, получать информацию о превышении заранее определенных пороговые значений (SNMP Trap).
Отступление: в некоторых случаях, необходимые параметры можно получать с уже имеющегося в серверной оборудования, например, кондиционеров, систем автоматизации и электроснабжения. Данное оборудование, часто имеет необходимые датчики и использует протокол Modbus.
2. Используемое оборудование
- Для мониторинга необходимых нам параметров, используются два контроллера с набором датчиков:
- Измерение температуры (0C) в нескольких точках и влажности (%).
- Измерение напряжения (U) и силы тока (A) в сети 220 вольт.
Для связи с внешним миром, контролеры имеют поддержку протокола Modbus TCP или Modbus RTU с интерфейсом RS-485.
- Преобразователь Modbus в SNMP и SNMP в Modbus:
3. Схема сети
4. Настройка Babel Buster преобразователя Modbus
IP адрес по умолчанию: 10.0.0.101
Имя пользователя: root
Пароль: buster
Для настройки используется WEB интерфейс.
Ссылки на Quick Start Guide:
Настройки для Babel Buster SPX и BB2-6010 идентичны.
4.1. Настройка параметров сети
Обратите внимание, что для каждой закладки с настройками, ниже приведён Quick Help который достаточно подробно описывает настраиваемые параметры. Эта вся инструкция, которая имеется для Babel Buster.
4.2. Настройки информации о системе SNMP Identity
4.3. Настройка Modbus TCP устройств
У нас есть два контроллера с необходимыми датчиками, с которых нужно считывать показания.
Контроллера два, но нам, нужно будет создать 3 устройства т.к. для хранения показаний температуры, используется регистр формата float (с плавающей запятой) и при создании устройства, нужно указать дополнительный параметр.
1. Device 1 - для считывания показаний влажности.
- Unit 2 - адрес устройства в Modbus сети (см. схему).
2. Device 2 - для считывания показаний температуры.
- Unit 2 - адрес устройства в Modbus сети (см. схему).
Для записи значений температуры, используется регистр формата float (с плавающей запятой). В некоторых случаях, когда формат регистра float, нужно включить параметр "Low register is first for multiple registers". Необходимость включения данного параметра, подбирается экспериментальным путём.
3. Device 3 - для контроллера с датчиками тока и напряжения.
- Unit 1 - адрес устройства в Modbus сети (см. схему).
4.4. Чтение Modbus регистров на удаленных устройствах
Для чтения значений из Modbus регистров, нам необходимо, создать таблицу связей между регистрами Modbus устройства и локальными регистрами Babel Buster.
Babel Buster, считывает значения регистров с Modbus устройств и сохраняет значения в своей базе данных (локальные регистры). В дальнейшем, с сохраненными значениями, мы можем проводить различные манипуляции (сложение, умножение, присвоение, сравнение и т.д.).
Описание параметров для Map#1 (таблица связей), приведенных на скриншоте ниже:
- Remote Type - тип считываемого Modbus регистра на удалённом устройстве.
- Remote Register Format - формат считываемого Modbus регистра на удалённом устройстве.
- Remote Register - адрес считываемого Modbus регистра на удалённом устройстве.
Если вы получаете неадекватные значения, не те, что ожидаете, то из адреса регистра необходимо вычесть 1 и ввести полученное значение в настройках. Например, в документации указано, что значение температуры записано в регистре 14, то 14 - 1 = 13, 13ый регистр указываем в Remote Register.
Данная проблема связанна с тем, что есть два способа адресации регистра:
- Номер регистра. Номер считается с единицы (1);
- Адрес регистра. Адрес считается с нуля (0).
Из-за этого, иногда получается путаница при описании регистров в документации. Не всегда понятно, какой способ адресации используется в документации к устройству.
- Remote Device - выбираем, настроенное выше (Глава 4.3.), устройство Modbus, с которого мы будем считывать значения регистров.
- Local Register - указываем, в какой локальный регистр Babel Buster'а, будет записываться полученное значение.
- Name - имя таблицы связей между регистрами (Map). В нашем случае, это показания влажности - Humidity.
При нажатии на номер Map, попадаем в расширенные настройки таблицы связей.
Аналогичным образом настраиваются таблицы связей (Map), для температуры (два датчика), тока и напряжение.
Локальные регистры формата Float начинаются с 1001 и считаются через один, т.к. один регистр это 16 bit, а float это 32 bit, соответственно один float регистр, занимает два локальных регистра. В нашем случае, это значения температуры (Map# 2 и 3).
5. Отображение значения локальных регистров
В закладке "System > Data > Local Registers", можно в реальном времени просматривать значения регистров.
Тип регистра - Integer
Тип регистра - Float (Локальные регистры формата Float начинаются с 1001.)
6. Работа с SNMP
В ниже приведенных таблицах, видно какой SNMP OID принадлежит какому локальному регистру. С помощью запроса SNMP GET, можно обращаться к данным OID.
6.1. Таблица SNMP MIB OID
SNMP MIB OID для локальных регистров типа Integer
SNMP MIB OID для локальных регистров типа float
6.2. Чтение SNMP OID с помощью SNMP менеджера (SNMP GET)
При обращении к Babel Buster используя запрос SNMP GET, получим следующие данные:
- Информацию о системе
- Значение Temp 1
- Значение средней температуры
- Влажность
- Напряжение в сети
Опубликовать в социальных сетях: