Применение протокола Modbus с устройствами мониторинга транспорта

Протокол Modbus – самый распространенный промышленный протокол для M2M- взаимодействия. Является стандартом де-факто и поддерживается почти всеми производителями промышленного оборудования.


Благодаря универсальности и открытости, стандарт позволяет интегрировать оборудование разных производителей. Modbus используется для сбора показаний с датчиков, управления реле и контроллерами, мониторинга и т.д.


Существует 3 формата протокола Modbus: Modbus RTU, Modbus TCP, Modbus ASCII. Modbus ASCII в природе почти не встречается и по этой причине нам сейчас не интересен.


Modbus TCP предназначен для работы в локальных сетях. Тоже не наш случай.


Modbus RTU наиболее распространенный вариант. Работает поверх RS-485/232. То, что надо. Далее под термином Modbus будет описываться именно это формат.


Так как Modbus предназначен для работы с пром. автоматикой, то и внутренняя структура протокола в первую очередь описывает параметры пром. автоматики, такие как дискретные входы и выходы, аналоговые входы и выходы. Тем, кому этого не хватает (а таких подавляющее большинство) делают свои надстройки над протоколом.


Ниже приведена картинка с описанием и некоторыми терминами из протокола.


Все параметры делятся с одной стороны на входы и выходы. Входы можно только читать, а выходы читать и писать.


С другой стороны, бывают дискретные входы/выходы размером в один бит и 16- битные регистры (что характерно, размером 16 бит).


Для работы с этими четырьмя группами параметров существуют функции чтения и записи.


Например, для чтения дискретных входов используется функция «READ DISCRETE INPUTS» с кодом 2.


image


В настоящий момент в терминалах УМКа302 реализованы функции чтения всех стандартных типов, такие как 1, 2, 3 и 4.


Кроме того, на протокол Modbus предполагает, что есть устройства с двумя разными ролями:
Master – ведущее устройство, которое опрашивает все остальные устройства. Мастер на шине может быть только один.


Slave – ведомое устройство. Его опрашивает мастер. У каждого ведомого есть адрес в диапазоне от 1 до 247. Ведомых устройств на шине может быть несколько. Адреса ведомых в одной шине должны быть уникальными.


1. Реализация Modbus в терминале УМКа302


Поддержка протокола Modbus для УМКа302 реализована с версии 2.11.0


Терминалы УМКа302 берут на себя роль Master в шине Modbus и опрашивают Slave устройства.
Терминалы УМКа302 поддерживают чтение до 32 параметров. Возможно чтение 32 параметров с одного подключенного Slave устройства, чтение одного параметра с 32 подключенных Slave устройств и все промежуточные комбинации.


Перед началом работы с Modbus необходимо настроить интерфейс. Настройка интерфейса RS-485 производится командой «RS485 8,19200», где 8 – режим Modbus, а 19200 – скорость работы интерфейса.


Далее (хотя это можно сделать и в последнюю очередь), определяем список параметров, которые будут передаваться на сервер. Допустим, у нас 2 устройства, с каждого из которых мы будем снимать по 9 параметров. Кроме того, мы хотим, чтобы между первым и вторым устройством была дырка в 7 параметров на дальнейшее расширение. В этом случаю мы должны включить передачу параметров Modbus и настроить маску передаваемых параметров. Воспользуемся командой «SetMdb 1,0x1FF01FF», где 1 – включить передачу параметров на сервер, а 0x1FF01FF маска передаваемых параметров, полученная с помощью калькулятора.


image


После перезагрузки на вкладке истории мы должны получить следующее:


image


На сервер в протоколах Wialon IPS 1.1 и 2.0 параметры передаются с такими же именами, как и на вкладке истории. Т.е. Mdb0- Mdb8, Mdb16- Mdb24.


В протоколе Wialon Combine параметры передаются с типом «Custom Parameters» начиная с параметра 256 по 287. Т.е. Mdb0 передается как param256, Mdb1 передается как param257 и т.д.


image


2. Пример подключения устройства


После предварительной настройки необходимо выполнить настройку отдельных параметров для работы с конкретным устройством. Для этого необходима так называемая


карта регистров устройства. В ней описываются адреса и типы параметров конкретного устройства.


Возьмем для примера станцию катодной защиты «СИГНАЛ» СКЗ-ИП-Б1. У меня есть для нее эмулятор. Сама станция показана на картинке.


image


Пример куска карты регистров приведен на рисунке ниже.


image


В карте как раз 9 параметров, адреса которых идут подряд. Особенностью протокола Modbus является то, что такие параметры могут быть запрошены как 9 отдельными запросами, так и одним общим.


УМКа302 умеет автоматически строить план опроса Modbus устройств таким образом, чтобы уменьшить количество запросов. Это позволяет значительно сократить время опроса устройства.
Для имитации станции воспользуемся программой-имитатором.
Внешний вид программы приведен на рисунке ниже.


Для настройки параметров служит команда вида «MDBPARAMn [X[,Y[,Z[,A[,B]]]]]», где n – номер параметра от 0 до 31.
X – адрес устройства на шине от 1 до 247 или 0, если опрос отключен.
Y – тип запрос. Про типы запросов ниже.
Z – начальный адрес регистра или входа для выбранного запроса.
A – формула пересчета. Как в CAN-фильтрах.
B – имя параметра. Как в CAN-фильтрах.


image


Тип запроса Y выбирается из следующих соображений:


Y=0 – функция 1. Чтение 1 бита типа Coils;
Y=1 – функция 2. Чтение 1 бита типа Input Discrete;
Y=2 – функция 3. Чтение 1 регистра типа Holding Registers. Беззнаковое. 0…65535. Y=3 – функция 3. Чтение 1 регистра типа Holding Registers. Знаковое -32768…32767 Y=4 – функция 4. Чтение 1 регистра типа Input Register. Беззнаковое. 0…65535.
Y=5 – функция 4. Чтение 1 регистра типа Input Register. Знаковое -32768…32767
Y=6 – функция 3. Чтение 2 регистров типа Holding Registers. Регистры обрабатываются как float. Младшая половина в младшем регистре (Порядок байт 1023).
Y=7 – функция 4. Чтение 2 регистров типа Input Register. Регистры обрабатываются как float. Младшая половина в младшем регистре (Порядок байт 1023).
Y=8 – функция 3. Чтение 2 регистров типа Holding Registers. Регистры обрабатываются как знаковое целое. Младшая половина в младшем регистре (Порядок байт 1023).
Y=9 – функция 4. Чтение 2 регистров типа Input Register. Регистры обрабатываются как знаковое целое. Младшая половина в младшем регистре (Порядок байт 1023).


Данный список не является полным и будет расширятся по необходимости. В нем приведены только наиболее часто встречающиеся в практике форматы представления данных. Значительно большее их количество встречается от случая к случаю или не встречается в принципе.


Настроем имитатор на работу по 1 адресу. Смотрим карту. Видим следующее:


image


Настраиваем первые 5 параметров командами:
MdbParam0 1,7,0,,I
MdbParam1 1,7,2,,U
MdbParam2 1,7,4,,PP
MdbParam3 1,7,6,,E
MdbParam4 1,7,8,,Uin


Настраиваем температуру:
MdbParam5 1,5,12,,T


Настраиваем время работы:
MdbParam6 1,9,13,,Twork
MdbParam7 1,9,15,,Tstab


Настраиваем последний параметр
MdbParam8 1,7,18,,SP


Перезагружаем. Смотрим командой «Mdb»


image


Видим следующее: параметры с 0, 1, 2, 4, 5 отображаются корректно.


Параметр 3 отображается с коэффициентом 3200. Это стандартный коэффициент для счетчика. Введем в настройки терминала формулу пересчета.
MdbParam3 1,7,6,x/3200,E


Параметры 6 и 7 отображаются в секундах. Переведем в часы через формулу пересчета:
MdbParam6 1,9,13,x/3600,Twork
MdbParam7 1,9,15,x/3600,Tstab
Параметр 8 не отображается. Имитатор не поддерживает этот параметр. Видимо параметр появился в карте позже.


Перезагружаем. Смотрим историю.


image


Опрос настроен. Смотрим результат в системе мониторинга транспорта.


image

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 5

    0
    Я правильно понимаю, что УМКа стоит на ТС и по различным шинам и протоколам, в частности modbus, получает некие данные с опрашиваемых устройств транспортного средства, а потом эти данные передаёт куда-то дальше?
      0
      Все, верно. В любую систему мониторинга.
      +3
      Смешались в кучу кони, люди…
      Начал с азов про Modbus, как вдруг
      в терминалах УМКа302
      … Что за зверь терминалы? И дальше поехали…
      Настройка интерфейса RS-485 производится командой «RS485 8,19200»
      Кому командовать будем? Это точно не про протокол Modbus. Может, это инструкция пользователя? Так зачем она тут, вдобавок неполная.
      Попробуйте попытку N2. Вот Вам план статьи:
      1. Существующие системы мониторинга транспорта.
      2. Технические особенности Вашей системы, применяемые протоколы обмена информацией.
      3. Почему для обмена был выбрпан протокол Modbus. Достоинства протокола Modbus для Вашей системы. Ограничения, накладываемые протоколом.
      4. Надстройки над протоколом, реализованные в ПО мониторинга.
      и т.д.
        0
        Спасибо за комментарий. Подробно всё можно узнать на сайте: www.glonasssoft.ru.
        0
        Modbus ASCII в природе почти не встречается…

        Вот и нет. ASCII вполне себе широко используется и даже славится большей помехоустойчивостью, чем RTU.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое