Neomatica ADM333 с поддержкой протокола ModBus
Сказать по правде, пока мы лично не убедились в такой возможности трекера ADM333, не верили в это. Случайно прочитав в конфигураторе, что нового в прошивке 9, просто не поверили своим глазам. У этого трекера нет даже собственного микропроцессора! Однако ModBus рубеж ADM333 взял!
Возможности у маленького трекера ADM333 весьма скромные. Именно поэтому ADM333 может считывать только 5 регистров по протоколу ModBus RTU. Делает он это по очереди, с интервалом опроса 5 секунд. Это означает, что если вы добавите максимально возможное количество регистров, ADM333 будет считывать их по кругу, через каждые 5 секунд считывая значение следующего.
Полученные из ModBus регистров данные записываются в CAN-теги протокола Neomatica с 15 по 19 включительно. Работает протокол ModBus на порту RS-485. Использование любого другого оборудования совместно с ModBus оборудованием невозможно.
В чем фишка?
Фишка ADM333 в том, что он может считывать 5 регистров по 5 разным адресам с устройств, которые могут работать на разных скоростях. Именно этой особенностью продиктована задержка в 5 секунд для считывания следующего в списке регистра. Трекеру нужно перенастроить порт.
Командовать парадом…
“Командовать парадом” придется из командной строки. Настройки ADM333 для работы по протоколу ModBus RTU задаются следующим образом:
MBREAD – команда настройки регистров
MBTIME – команда настройки таймаута (она вам не пригодится)
Рассмотрим синтаксис команды MBREAD
MBREAD mb_index, device_addr, reg_addr, bytes_count, baud_rate, bytes_order, reg_type
Выглядит команда примерно так:
MBREAD 1,11,2,2,19200,255,3
Что в переводе на человеческий язык означает:
- настройки записываются в ячейку памяти (mb_index) 1, значения, считанные из регистра, будут записываться в CAN тег 16;
- адрес ModBus устройства (device_addr) 11;
- считываем регистр (reg_addr) 2;
- размер регистра (bytes_count) 2 байта;
- скорость порта RS-485 (baud_rate) 19200;
- порядок байт в регистре прямой (bytes_order) 255;
- тип регистра holding (reg_type) 3.
Это только кажется сложным, на самом деле все довольно просто. У нас получилось с первого раза.
Как это было
В нашем шкафу для оборудования чего только нет… Нашелся там измеритель ТРМ200 от компании ОВЕН с поддержкой ModBus RTU и пара датчиков температуры к нему. Его мы и решили использовать для проверки возможностей терминала ADM333.
Подключение без премудростей, не сложнее, чем всем известный LLS ДУТ.
Порт ТРМ200 настроен на 11 адрес. Скорость порта 19200. Измеренная температура передается в двух регистрах 0x0001 и 0x0002.
Из командной строки вводим две строчки:
MBREAD 0,11,1,2,19200,255,3 – значение регистра придет в теге can15
MBREAD 1,11,2,2,19200,255,3 – значение регистра придет в теге can16
Для проверки работоспособности порта и правильности настроек включаем режим отладки порта RS-485. Если все в порядке, будет виден и запрос, и ответ.
Настройка датчиков температуры в системе мониторинга Wialon на следующем изображении.
Получаем в отчетах отличный график.
Примечание 1: измеритель ТРМ200 специально настроен так, чтобы температура в одном из регистров отображалась со смещением. Это сделано для красоты демонстрационного графика.
Примечание 2: мы тестировали ADM333 только на предмет поддержки целочисленных значений (тип данных Signed Int16). Нам удалось получить из регистров и значения с плавающей запятой (Float 32). Но интерпретировать эти данные на сервере мы пока не смогли.
Кто бы мог подумать, но компании Неоматика удалось наделить трекер ADM333 довольно серьезными возможностями. Мы рассмотрели только частный случай с протоколом ModBus. Однако в прошивке версии 9 это далеко не все возможности. Отдельного внимания стоит поддержка RFID считывателя ADM20 и интеграция устройств, работающих по протоколу CAN-LOG, но это уже темы других обзоров.