В одной из статей мы писали о том, как работать с цифровыми датчиками посредством программы Simply Modbus. Помимо вышеописанной утилиты предлагаем вашему вниманию еще одну программу для работы с нашими устройствами – Modbus Poll. Для правильного использования функций программы в начале надо подключить наш интеллектуальный датчик, поддерживающий протокол передачи данных RS-485, посредством стороннего контроллера или же преобразователя интерфейсов. Далее необходимо зайти в Диспетчер устройств>>Контроллер USB выбрать соответствующее устройство. В нашем случае это ZETSENSOR USB (рис. 1), открыть его свойства и во вкладке Дополнительно выставить галочку напротив «Загрузить VCP» (рис.2).
Рисунок 1
Рисунок 2
Далее необходимо выключить и включить заново контроллер/преобразователь интерфейса к ПК.
Только после проделанных выше операций следует запускать программу Modbus Poll.
После запуска программы необходимо ее настроить должным образом. Для этого зайти в верхнее менюConnection, выбрать пункт Connect…, т.е. подключение к контроллеру, который преобразует USB в COM-порт. Если программа в бесплатном режиме, сперва откроется окно с просьбой ввести регистрационный ключ, следует пропустить данную операцию посредством нажатия кнопки ОК. Далее откроется окно с возможностью выбора устройства (рис.2). Настройте как показано на рисунке 2.
В поле (рис 3.) идет опрос модуля, сканирование любого цифрового датчика (RS-485) ZET 70XX. Как видно на рисунке – имеется ошибка Timeout Error, которая возникает из-за того, что опрашивается устройство с адресом 1, нам же нужно выставить адрес существующего модуля. Узнать адрес модуля можно с помощью программы ZETLAB>>Время ZETServer, предварительно необходимо в Modbus Poll выполнить Disconnect, на рисунке показано, где отображается адрес устройства в ZETLAB.
Рисунок 3
Рисунок 4
Рисунок 5
Возвращаемся вновь к программе Modbus Poll, выполняем Connection>>Connect. Далее следует выставить адрес модуля и другие настройки в окне Setup>>Read/Write Definition как показано на рисунке 6. В ячейке Address выставляем значение, указанное в таблице, в нашем случае используется датчик абсолютного давления ZET 7012 и его адрес «20».
Чтобы получать данные в нужном формате, также необходимо выставить ряд настроек. Необходимо зайти «Display» и выбрать тип переменных, в нашем случае это Float CD AB.
Если устройств несколько, то для каждого устройства следует открыть свое окно посредством функции New из меню File и выполнить все вышеописанные настройки для опроса модуля. В результате после все настроек в окне программы вы сможете увидеть данные, поступающие с интеллектуального датчика и убедиться в корректности его работы.
В результате после все настроек в окне программы вы сможете увидеть данные, поступающие с цифрового датчика и убедиться в корректности его работы.
Рисунок 6
Рисунок 7
Рисунок 8
21 мая 2014
Не всегда с первого раза понятно как настроить наши модули с помощью программы «Modbus Poll» и в этой статье я расскажу как это сделать.
Саму программу можно скачать по следующему адресу — http://www.modbustools.com/modbus_poll.asp
Перед запуском программы подключите настраиваемый модуль к преобразователю USB-RS485, а сам преобразователь к компьютеру. В системе должен появиться новый последовательный порт (COM3, например). Подайте питание на модуль и запустите программу.
После запуска программы необходимо произвести настройку соединения, для этого выберете пункт меню «Connection→Connect», настройте соединение как показано на рисунке ниже, изменив только последовательный порт (1):
Для установки ModBus адреса устройства, выберете пункт меню «Functions→Write Single Register», появиться следующее окно, установите значения полей как показано ниже, изменив только поле (1), где укажите новый адрес устройства:
Нажмите кнопку «Send».
Небольшие пояснения: в данном случае мы послали широковещательную команду по шине (это определяется адресом устройства 0, поле Slave ID), на запись в параметры устройства, по смещению 0 (для датчиков MSU24R, MSU34R смещение 128), значения нового адреса устройства.
На широковещательные команды наши модули не отвечают, поэтому, попытка чтения с устройства с адресом 0, ни к чему не приведут!
Теперь необходимо перезапустить модуль, путем пере подключения питания.
После перезапуска модуля, можно настроить программу «ModBus Poll» для чтения данных с модуля.
Для чтения входных каналов, выберете пункт меню «Setup→Read/Write Definition»:
В поле (2) кол-во регистров может быть разное, для MSU44R — 4, а для DRM88R — 8.
Для просмотра настроек модуля, выберете пункт меню «Setup→Read/Write Definition»:
В результате настройки модуля отобразятся в следующем окне:
Время на прочтение10 мин
Количество просмотров288K
Протокол Modbus довольно распространен как в промышленных системах автоматизации, так и сетях систем типа «Умный дом», автоматизации малых объектов (теплицы и т.п.) и стыковки различного оборудования с домашним компьютером. Появление таких проектов как Arduino и Raspberry Pi значительно повысило интерес к задачам, связанным с робототехникой, автоматикой и автоматизацией. Все это обеспечивает рост популярности Modbus среди любителей и профессионалов. В статье рассмотрен вопрос тестирования и наладки, как отдельных устройств, так и сетей на базе протокола Modbus с позиции требований к программному обеспечению для решения таких задач и обзора существующих инструментов.
Если вы знакомы с архитектурой протокола, то можете смело пролистать пару следующих абзацев и перейти к дальнейшему описанию. Если же нет, то специально для вас ниже приведено небольшое введение в Modbus.
Modbus, краткое введение
Modbus является довольно распространённым протоколом в системах автоматизации на среднем и нижнем (полевом) уровнях. Средний — это уровень контроллеров — устройств, осуществляющих сбор данных и управление технологическим процессом. Нижний или полевой — это уровень взаимодействия датчиков и контроллеров или датчиков напрямую с сервером. Более подробно об уровнях в системах автоматизации можно посмотреть здесь.
Как правило, структура типовой системы автоматизации, использующей в качестве базового протокола Modbus, выглядит так как показано на рисунке в начале статьи. В качестве ”среды” для протокола Modbus может выступать либо RS-485/422/232 (подробно про RS-485 можно прочитать здесь и здесь), поверх него работает Modbus RTU или Modbus ASCII, либо транспортный протокол TCP в TCP/IP сетях, такая версия носит название Modbus TCP. В данной статье будет рассмотрен Modbus RTU.
Протокол Modbus предполагает наличие одного ведущего устройства в сети (оно называется Master или Client) и от 1 до 247 ведомых (они называются Slave или Server). Полное описание можно найти на официальном сайте или в вики.
Master периодически взаимодействует со Slave-устройствами, считывая или записывая в них какую-либо информацию. Этот процесс осуществляется в форме запрос-ответ. Запрос представляет собой последовательность байт, называемую кадром, в котором время между байтами стандартизировано и зависит от скорости передачи данных (напомним, что речь идет о Modbus RTU) и составляет не более длительности интервала, в течение которого может быть передано 1,5 байта данных. Время между кадрами должно быть не меньше времени передачи 3,5 байт.
Формат запроса имеет следующий вид:
ID — адрес устройства (1 байт),
FN — Modbus функция (1 байт),
[args] — аргументы функции (N байт, зависит от функции),
CRC — контрольная сумма CRC-16 (2 байта).
Ответ имеет схожий формат:
Почти все поля ответного кадра аналогичны кадру запроса, за исключением поля DATA, оно имеет различное наполнение, в зависимости от функции.
Если устройством не поддерживается запрашиваемая функция или аргументы в поле [args] запроса являются некорректными для данного Slave-устройства, то в ответе, в поле FN старший бит будет выставлен в 1 (т.е. на FN наложится маска 0x80), а в поле DATA будет помещена дополнительная информация об ошибке.
Каждое Slave-устройство может иметь определенные области данных и содержать дополнительную специфическую информацию.
Возможные области данных представлены в таблице ниже:
Поле | Доступ | Размер | Описание |
---|---|---|---|
Discrete Inputs | Только чтение | Один бит | Данные от системы ввода/вывода |
Coils | Чтение/Запись | Один бит | Ячейки могут использоваться по своему усмотрению |
Input registers | Только чтение | 16 бит | Данные от системы ввода/вывода |
Holding registers | Чтение/Запись | 16 бит | Регистры могут использоваться по своему усмотрению |
За более подробной информацией следует обратиться к полному описанию Modbus RTU, доступному в виде спецификации.
Тестирование устройств с поддержкой Modbus RTU в рамках процесса разработки
Как при разработке, так и при наладке устройств с поддержкой протокола Modbus RTU, вам необходимо иметь специализированное программное обеспечение и технические средства. Из технических средств наиболее простой вариант — это преобразователь RS-485/USB, из всех устройств такого типа, по нашему мнению, наилучшим выбором является MOXA UPORT 1130/UPORT 1150, цена вопроса которого составит 5000 — 6000 руб. Существуют различные отечественные решения, например, преобразователи фирмы Fractal или ОВЕН. Конструкция этих устройств достаточно проста, и при определенной сноровке такой преобразователь можно собрать самостоятельно. Более сложными являются решения типа Ethernet/RS-485 (например, NPORT от MOXA).
При разработке устройств с поддержкой Modbus RTU, чаще всего требуется реализовать функцию Slave, так как в основном это различные датчики, управляемые реле, модули ввода/вывода и т.п., Master-устройства создаются реже. В сетях автоматизации в качестве мастера, обычно выступает контроллер, а он, как правило, уже имеет реализацию Modbus-стека, либо OPC Server/SCADA система, укомплектованные Modbus-драйвером.
Вопрос разработки непосредственно Modbus-стека мы не будем рассматривать в этой статье. Единственное, стоит отметить библиотеку FreeMODBUS, на базе которой достаточно просто построить устройство с поддержкой функций Modbus Slave. Пример реализации описан в статье на Хабре.
Вторым важным моментом при разработке Modbus-устройств является тестирование. Здесь всё зависит от стадии разработки и цели тестирования.
На начальных этапах полезным инструментом является Modbus-терминал. С помощью него мы можем вручную сконструировать запрос, послать его и проанализировать ответ. Существуют терминалы в чистом виде, например, SmartTerminal, Access Port, терминалы с поддержкой Modbus RTU — Termite от S2-Team или Pic18 Terminal от Fractal (не обновлялась с 2006 года) и т.п. Последний заточен под оборудование компании Fractal, но позволяет “общаться” с любыми устройствами, у которых в настойках порта выставлена четность None, с другими вариантами он не работает.
В процессе разработки нередко возникает ситуация, когда устройство принимает запрос и отвечает на него (это можно понять либо по светодиодам приема/передачи пакетов, если вы их предусмотрели в конструкции, либо через отладчик, поставив breakpoint в нужном месте), а в терминале или какой-то другой специализированной программе, данные не отображаются. В таком случае вам пригодится сниффер для последовательного порта, желательно, с поддержкой протокола Modbus. В качестве примера можно привести Free Serial Analyzer, COM Port Toolkit. Последний в настоящее время, похоже, прекратил свое развитие.
В дальнейшем, требуется не только проверять работает ли устройство в принципе (т.е. корректно отвечает на запросы), но и определять наработку на отказ с помощью длительного тестирования. Важными аспектами здесь являются поддержка авто-опроса с изменяемой нагрузкой (количество запросов в секунду) и наличие функции логирования. С этими задачами поможет справиться Modbus Poll или Modscan, это ПО платное, но имеется пробный период.
Следует учитывать, что собранные логи нужно будет анализировать, то есть определять количество запросов, на которые устройство не ответило, обнаруживать сбои, например, самопроизвольное изменение данных в ячейках и т.п. Конечно, можно использовать полноценную SCADA-систему, либо самому разработать и написать систему анализа и визуализации логов. Как вариант, рекомендуем обратить внимание на MasterSCADA от Insat. Она имеет встроенный Modbus-драйвер и версия до 32 точек является бесплатной, довольно проста в освоении (на сайте производителя есть хорошая документация и видео уроки).
В конце данной статьи мы определим список функций “идеального” инструмента для тестирования и наладки устройств/систем на базе протокола Modbus, а также сделаем небольшой обзор существующих инструментов.
Наладка систем автоматизации, использующих Modbus устройства
Людей, занимающихся наладкой систем автоматизации и просто пытающихся “подружиться” с каким-либо устройством, на борту которого находится Modbus, в разы больше чем, тех, кто эти устройства разрабатывает. Исходя из специфики задачи, требования к соответствующему ПО будут немного отличаться.
Если необходимо соединить контроллер и одиночное Slave-устройство, то прежде всего, нужно установить с ним связь с помощью преобразователя интерфейсов RS-485/USB, ПК и специализированного программного обеспечения либо терминала. В таком случае, логика работы и набор инструментов ничем не отличается от тех, что применяются при разработке Slave-устройства на стадии тестирования. На этом этапе не требуется длительное тестирование с последующим анализом большого количества лог-файлов.
В случае, когда у вас уже есть готовая сеть устройств, можно выделить следующие задачи:
- проверка работоспособности всех устройств в сети (опрос каждого устройства в отдельности и проверка корректности ответа);
- нагрузочное тестирование (опрос устройств в сети в течение длительного времени). Желательно сделать несколько экспериментов с различной частотой опроса, а после провести анализ собранных данных на наличие отказов, не ответов, порчи данных и т.п.
В этом случае, понадобится либо терминал с возможностью создания списка запросов, либо специализированный инструмент типа Modbus Poll, который позволяет опрашивать несколько устройств в рамках одного проекта.
Modbus-устройства могут иметь определенные настройки интерфейса RS-485: количество бит данных, четность и количество стоп бит. Устройства с различными настройками не могут работать в одной сети с одним и тем же мастером. Тестирование и конфигурирование таких устройств удобно проводить, применяя терминальные программы, имеющие возможность быстрого переключения между предустановленными профилями настроек портов или работающие с несколькими линиями одновременно.
Реже возникает задача организации обмена данными с устройством, протокол которого отличается от стандартной спецификации Modbus RTU. Нам приходилось встречаться с ситуацией, когда протокол Slave-устройства логически повторяет Modbus (структура пакета, таймауты и т.п.), но использует функции вне стандарта. В таком случаем возможна работа с использованием Modbus Poll, он позволяет строить произвольные запросы, или терминала, обладающего сходным функционалом. Стандартная SCADA-система, обычно, в такой ситуации бессильна, и работа с подобным оборудованием осуществляется через специальный OPC сервер.
Требования к ПО для работы с Modbus-устройствами в режиме мастера
Описав различные задачи, которые возникают при разработке, настройке и наладке устройств с протоколом Modbus, составим список требований к специализированному программному обеспечению.
- Поддержка настроек COM-порта (номер, скорость, четность, количество бит данных и стоп бит)
- Настройка таймаутов (время ожидания приема ответа на запрос, время между символами и кадрами)
- Поддержка стандартного Modbus
- Поддержка нестандартного Modbus
- Авто-опрос одного/нескольких устройств
- Настройка авто-опроса
- Логирование сессии / настройка логирования
- Создание профилей для быстрого переключения между настройками порта
- Работа в режиме сниффер
- Лицензия продукта
- Сопровождение продукта разработчиком
Обзор ПО для работы с Modbus протоколом
Modbus Poll
Начнем с классического приложения и довольно известного в наших “узких” кругах — Modbus Poll от Witte Software.
Эта программа является симулятором мастера в Modbus-сети. Интерфейс Modbus Poll интуитивно понятен. Если вы представляете себе логику работы протокола, то разобраться с программой труда не составит.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | Доступны: время ожидания ответа |
Поддержка стандартного Modbus | + | Список функций ограничен |
Поддержка нестандартного Modbus | + | |
Авто-опрос одного / нескольких устройств | + / + | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / + | |
Создание профилей для быстрого переключения между настройками порта | — | |
Работа в режиме сниффер | — | |
Лицензия продукта | ПО платное | Есть пробный период 30 дней |
Сопровождение продукта | + |
Достоинства: хорошая система логирования, достаточное количество поддерживаемых функций (во всяком случае, наиболее востребованные присутствуют), большое количество настроек внешнего вида.
Недостатки: цена (одна лицензия $ 129.00), нестандартный Modbus поддерживается как опциональная функция, нет профилей для быстрого переключения портов — приходится каждый раз перенастраивать соединение.
Modscan32/64
Следующим ПО в нашем обзоре будет Modscan от WinTECH. Внешне эта программа очень похожа на Modbus Poll, но функционалом она обладает значительно меньшим.
У Modscan есть одна уникальная особенность для программ данного типа — это возможность создания форм (своего рода мнемосхем). Пока ее функционалу далеко до реальных SCADA-систем, но наличие такого бонуса радует. На сегодняшний день это достаточно скудный, по своим возможностям инструмент (имеется ввиду редактор форм), но будем надеяться, что со временем, разработчики доведут его до хорошего уровня.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | Доступны: время ожидания ответа |
Поддержка стандартного Modbus | + | Список функций ограничен |
Поддержка нестандартного Modbus | — | |
Авто-опрос одного / нескольких устройств | + / + | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / — | |
Создание профилей для быстрого переключения между настройками порта | — | |
Работа в режиме сниффер | — | |
Лицензия продукта | ПО платное | Есть пробный период |
Сопровождение продукта | + |
Достоинства: возможность создания собственных форм для просмотра данных, поддержка MMI & OLE Automation.
Недостатки: цена (одна лицензия $ 84.95), нет поддержки нестандартного Modbus, нет профилей для быстрого переключения портов, ненастраиваемая система логирования, малое количество поддерживаемых Modbus-функций.
Termite
Следующим в нашем списке будет терминал Termite от S2-Team. Termite является специализированный Modbus терминалом. Это означает, что он сам будет считать за вас CRC, распознавать сообщения об ошибках в ответах и т.д., ваша задача заключается в том, чтобы ввести корректное тело запроса в поле команды.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | Доступны: время ожидания ответа, время между символами и кадрами |
Поддержка стандартного Modbus | + | |
Поддержка нестандартного Modbus | + | |
Авто-опрос одного / нескольких устройств | + / + | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / — | |
Создание профилей для быстрого переключения между настройками порта | + | |
Работа в режиме сниффер | — | |
Лицензия продукта | Есть платная и бесплатная версии |
Бесплатная версия обладает ограниченным функционалом (на количество каналов, одновременно ведомых лог файлов и количество разных запросов в авто-опросе) |
Сопровождение продукта | + |
Достоинства: поддержка всех Modbus-функций, работа с нестандартным Modbus, удобная система подсказок, возможность настройки внешнего вида ПО, поддержка профилей для быстрого переключения между настройками порта.
Недостатки: PRO версия платная (одна лицензия $ 10), в текущем релизе нет возможности гибко настраивать логирование.
AccessPort
Программа из разряда “чистых” терминалов. Она не поддерживает Modbus, поэтому при её использовании будьте готовы считать CRC для ваших кадров самостоятельно. Несомненным плюсом является то, что в неё встроен сниффер последовательного порта.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | |
Поддержка стандартного Modbus | — | |
Поддержка нестандартного Modbus | — | |
Авто-опрос одного / нескольких устройств | + / — | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / — | |
Создание профилей для быстрого переключения между настройками порта | — | |
Работа в режиме сниффер | + | |
Лицензия продукта | ПО бесплатное | |
Сопровождение продукта | Не поддерживается | Крайняя версия продукта была выпущена 2012-04-23 |
Достоинства: наличие сниффера порта, ПО бесплатное, настраиваемое представление данных, возможность передачи файлов.
Недостатки: не поддерживает Modbus вообще, нет возможность создавать профили, в режиме авто-опрос можно работать только с одним устройством, в настоящее время ПО не развивается.
В заключение хотелось бы добавить, что в сети достаточно большое количество программ для работы с последовательным портом, но если есть необходимость работать именно с Modbus протоколом, то его поддержка в таком ПО крайне желательна. Одна из основных причин — это расчет CRC, в ручную это делать накладно, также важно, чтобы программа могла уметь разделять кадры, иначе все превращается в сплошную мешанину байтов, ну и если есть авто-опрос, то это сильно упрощает жизнь.
Хочется дополнить список ПО и библиотек для работы с Modbus, тем, что было переставлено в комментариях.
SCADA
FreeSCADA
Modbus TCP/RTU
Advanced TCP/IP Data Logger
Ardsoft Эмулятор Modbus
PortMon
MODBUS FOR WINDOWS
PeakHMI
Modpoll Modbus Master Simulator
QModMaster
modbus_tk
pymodbus
libmodbus
Благодарю всех, кто помог улучшить статью!
Спасибо за внимание!
Протокол Modbus довольно распространен как в промышленных системах автоматизации, так и сетях систем типа «Умный дом», автоматизации малых объектов (теплицы и т.п.) и стыковки различного оборудования с домашним компьютером. Появление таких проектов как Arduino и Raspberry Pi значительно повысило интерес к задачам, связанным с робототехникой, автоматикой и автоматизацией. Все это обеспечивает рост популярности Modbus среди любителей и профессионалов. В статье рассмотрен вопрос тестирования и наладки, как отдельных устройств, так и сетей на базе протокола Modbus с позиции требований к программному обеспечению для решения таких задач и обзора существующих инструментов.
Если вы знакомы с архитектурой протокола, то можете смело пролистать пару следующих абзацев и перейти к дальнейшему описанию. Если же нет, то специально для вас ниже приведено небольшое введение в Modbus.
Modbus является довольно распространённым протоколом в системах автоматизации на среднем и нижнем (полевом) уровнях. Средний — это уровень контроллеров — устройств, осуществляющих сбор данных и управление технологическим процессом. Нижний или полевой — это уровень взаимодействия датчиков и контроллеров или датчиков напрямую с сервером. Более подробно об уровнях в системах автоматизации можно посмотреть здесь.
Как правило, структура типовой системы автоматизации, использующей в качестве базового протокола Modbus, выглядит так как показано на рисунке в начале статьи. В качестве ”среды” для протокола Modbus может выступать либо RS-485/422/232 (подробно про RS-485 можно прочитать здесь и здесь), поверх него работает Modbus RTU или Modbus ASCII, либо транспортный протокол TCP в TCP/IP сетях, такая версия носит название Modbus TCP. В данной статье будет рассмотрен Modbus RTU.
Протокол Modbus предполагает наличие одного ведущего устройства в сети (оно называется Master или Client) и от 1 до 247 ведомых (они называются Slave или Server). Полное описание можно найти на официальном сайте или в вики.
Master периодически взаимодействует со Slave-устройствами, считывая или записывая в них какую-либо информацию. Этот процесс осуществляется в форме запрос-ответ. Запрос представляет собой последовательность байт, называемую кадром, в котором время между байтами стандартизировано и зависит от скорости передачи данных (напомним, что речь идет о Modbus RTU) и составляет не более длительности интервала, в течение которого может быть передано 1,5 байта данных. Время между кадрами должно быть не меньше времени передачи 3,5 байт.
Формат запроса имеет следующий вид:
ID — адрес устройства (1 байт),
FN — Modbus функция (1 байт),
[args] — аргументы функции (N байт, зависит от функции),
CRC — контрольная сумма CRC-16 (2 байта).
Ответ имеет схожий формат:
Почти все поля ответного кадра аналогичны кадру запроса, за исключением поля DATA, оно имеет различное наполнение, в зависимости от функции.
Если устройством не поддерживается запрашиваемая функция или аргументы в поле [args] запроса являются некорректными для данного Slave-устройства, то в ответе, в поле FN старший бит будет выставлен в 1 (т.е. на FN наложится маска 0x80), а в поле DATA будет помещена дополнительная информация об ошибке.
Каждое Slave-устройство может иметь определенные области данных и содержать дополнительную специфическую информацию.
Возможные области данных представлены в таблице ниже:
Поле | Доступ | Размер | Описание |
---|---|---|---|
Discrete Inputs | Только чтение | Один бит | Данные от системы ввода/вывода |
Coils | Чтение/Запись | Один бит | Ячейки могут использоваться по своему усмотрению |
Input registers | Только чтение | 16 бит | Данные от системы ввода/вывода |
Holding registers | Чтение/Запись | 16 бит | Регистры могут использоваться по своему усмотрению |
За более подробной информацией следует обратиться к полному описанию Modbus RTU, доступному в виде спецификации.
Тестирование устройств с поддержкой Modbus RTU в рамках процесса разработки
Как при разработке, так и при наладке устройств с поддержкой протокола Modbus RTU, вам необходимо иметь специализированное программное обеспечение и технические средства. Из технических средств наиболее простой вариант — это преобразователь RS-485/USB, из всех устройств такого типа, по нашему мнению, наилучшим выбором является MOXA UPORT 1130/UPORT 1150, цена вопроса которого составит 5000 — 6000 руб. Существуют различные отечественные решения, например, преобразователи фирмы Fractal или ОВЕН. Конструкция этих устройств достаточно проста, и при определенной сноровке такой преобразователь можно собрать самостоятельно. Более сложными являются решения типа Ethernet/RS-485 (например, NPORT от MOXA).
При разработке устройств с поддержкой Modbus RTU, чаще всего требуется реализовать функцию Slave, так как в основном это различные датчики, управляемые реле, модули ввода/вывода и т.п., Master-устройства создаются реже. В сетях автоматизации в качестве мастера, обычно выступает контроллер, а он, как правило, уже имеет реализацию Modbus-стека, либо OPC Server/SCADA система, укомплектованные Modbus-драйвером.
Вопрос разработки непосредственно Modbus-стека мы не будем рассматривать в этой статье. Единственное, стоит отметить библиотеку FreeMODBUS, на базе которой достаточно просто построить устройство с поддержкой функций Modbus Slave. Пример реализации описан в статье на Хабре.
Вторым важным моментом при разработке Modbus-устройств является тестирование. Здесь всё зависит от стадии разработки и цели тестирования.
На начальных этапах полезным инструментом является Modbus-терминал. С помощью него мы можем вручную сконструировать запрос, послать его и проанализировать ответ. Существуют терминалы в чистом виде, например, SmartTerminal, Access Port, терминалы с поддержкой Modbus RTU — Termite от S2-Team или Pic18 Terminal от Fractal (не обновлялась с 2006 года) и т.п. Последний заточен под оборудование компании Fractal, но позволяет “общаться” с любыми устройствами, у которых в настойках порта выставлена четность None, с другими вариантами он не работает.
В процессе разработки нередко возникает ситуация, когда устройство принимает запрос и отвечает на него (это можно понять либо по светодиодам приема/передачи пакетов, если вы их предусмотрели в конструкции, либо через отладчик, поставив breakpoint в нужном месте), а в терминале или какой-то другой специализированной программе, данные не отображаются. В таком случае вам пригодится сниффер для последовательного порта, желательно, с поддержкой протокола Modbus. В качестве примера можно привести Free Serial Analyzer, COM Port Toolkit. Последний в настоящее время, похоже, прекратил свое развитие.
В дальнейшем, требуется не только проверять работает ли устройство в принципе (т.е. корректно отвечает на запросы), но и определять наработку на отказ с помощью длительного тестирования. Важными аспектами здесь являются поддержка авто-опроса с изменяемой нагрузкой (количество запросов в секунду) и наличие функции логирования. С этими задачами поможет справиться Modbus Poll или Modscan, это ПО платное, но имеется пробный период.
Следует учитывать, что собранные логи нужно будет анализировать, то есть определять количество запросов, на которые устройство не ответило, обнаруживать сбои, например, самопроизвольное изменение данных в ячейках и т.п. Конечно, можно использовать полноценную SCADA-систему, либо самому разработать и написать систему анализа и визуализации логов. Как вариант, рекомендуем обратить внимание на MasterSCADA от Insat. Она имеет встроенный Modbus-драйвер и версия до 32 точек является бесплатной, довольно проста в освоении (на сайте производителя есть хорошая документация и видео уроки).
В конце данной статьи мы определим список функций “идеального” инструмента для тестирования и наладки устройств/систем на базе протокола Modbus, а также сделаем небольшой обзор существующих инструментов.
Наладка систем автоматизации, использующих Modbus устройства
Людей, занимающихся наладкой систем автоматизации и просто пытающихся “подружиться” с каким-либо устройством, на борту которого находится Modbus, в разы больше чем, тех, кто эти устройства разрабатывает. Исходя из специфики задачи, требования к соответствующему ПО будут немного отличаться.
Если необходимо соединить контроллер и одиночное Slave-устройство, то прежде всего, нужно установить с ним связь с помощью преобразователя интерфейсов RS-485/USB, ПК и специализированного программного обеспечения либо терминала. В таком случае, логика работы и набор инструментов ничем не отличается от тех, что применяются при разработке Slave-устройства на стадии тестирования. На этом этапе не требуется длительное тестирование с последующим анализом большого количества лог-файлов.
В случае, когда у вас уже есть готовая сеть устройств, можно выделить следующие задачи:
- проверка работоспособности всех устройств в сети (опрос каждого устройства в отдельности и проверка корректности ответа);
- нагрузочное тестирование (опрос устройств в сети в течение длительного времени). Желательно сделать несколько экспериментов с различной частотой опроса, а после провести анализ собранных данных на наличие отказов, не ответов, порчи данных и т.п.
В этом случае, понадобится либо терминал с возможностью создания списка запросов, либо специализированный инструмент типа Modbus Poll, который позволяет опрашивать несколько устройств в рамках одного проекта.
Modbus-устройства могут иметь определенные настройки интерфейса RS-485: количество бит данных, четность и количество стоп бит. Устройства с различными настройками не могут работать в одной сети с одним и тем же мастером. Тестирование и конфигурирование таких устройств удобно проводить, применяя терминальные программы, имеющие возможность быстрого переключения между предустановленными профилями настроек портов или работающие с несколькими линиями одновременно.
Реже возникает задача организации обмена данными с устройством, протокол которого отличается от стандартной спецификации Modbus RTU. Нам приходилось встречаться с ситуацией, когда протокол Slave-устройства логически повторяет Modbus (структура пакета, таймауты и т.п.), но использует функции вне стандарта. В таком случаем возможна работа с использованием Modbus Poll, он позволяет строить произвольные запросы, или терминала, обладающего сходным функционалом. Стандартная SCADA-система, обычно, в такой ситуации бессильна, и работа с подобным оборудованием осуществляется через специальный OPC сервер.
Требования к ПО для работы с Modbus-устройствами в режиме мастера
Описав различные задачи, которые возникают при разработке, настройке и наладке устройств с протоколом Modbus, составим список требований к специализированному программному обеспечению.
- Поддержка настроек COM-порта (номер, скорость, четность, количество бит данных и стоп бит)
- Настройка таймаутов (время ожидания приема ответа на запрос, время между символами и кадрами)
- Поддержка стандартного Modbus
- Поддержка нестандартного Modbus
- Авто-опрос одного/нескольких устройств
- Настройка авто-опроса
- Логирование сессии / настройка логирования
- Создание профилей для быстрого переключения между настройками порта
- Работа в режиме сниффер
- Лицензия продукта
- Сопровождение продукта разработчиком
Обзор ПО для работы с Modbus протоколом
Modbus Poll
Начнем с классического приложения и довольно известного в наших “узких” кругах — Modbus Poll от Witte Software.
Эта программа является симулятором мастера в Modbus-сети. Интерфейс Modbus Poll интуитивно понятен. Если вы представляете себе логику работы протокола, то разобраться с программой труда не составит.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | Доступны: время ожидания ответа |
Поддержка стандартного Modbus | + | Список функций ограничен |
Поддержка нестандартного Modbus | + | |
Авто-опрос одного / нескольких устройств | + / + | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / + | |
Создание профилей для быстрого переключения между настройками порта | — | |
Работа в режиме сниффер | — | |
Лицензия продукта | ПО платное | Есть пробный период 30 дней |
Сопровождение продукта | + |
Достоинства: хорошая система логирования, достаточное количество поддерживаемых функций (во всяком случае, наиболее востребованные присутствуют), большое количество настроек внешнего вида.
Недостатки: цена (одна лицензия $ 129.00), нестандартный Modbus поддерживается как опциональная функция, нет профилей для быстрого переключения портов — приходится каждый раз перенастраивать соединение.
Modscan32/64
Следующим ПО в нашем обзоре будет Modscan от WinTECH. Внешне эта программа очень похожа на Modbus Poll, но функционалом она обладает значительно меньшим.
У Modscan есть одна уникальная особенность для программ данного типа — это возможность создания форм (своего рода мнемосхем). Пока ее функционалу далеко до реальных SCADA-систем, но наличие такого бонуса радует. На сегодняшний день это достаточно скудный, по своим возможностям инструмент (имеется ввиду редактор форм), но будем надеяться, что со временем, разработчики доведут его до хорошего уровня.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | Доступны: время ожидания ответа |
Поддержка стандартного Modbus | + | Список функций ограничен |
Поддержка нестандартного Modbus | — | |
Авто-опрос одного / нескольких устройств | + / + | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / — | |
Создание профилей для быстрого переключения между настройками порта | — | |
Работа в режиме сниффер | — | |
Лицензия продукта | ПО платное | Есть пробный период |
Сопровождение продукта | + |
Достоинства: возможность создания собственных форм для просмотра данных, поддержка MMI & OLE Automation.
Недостатки: цена (одна лицензия $ 84.95), нет поддержки нестандартного Modbus, нет профилей для быстрого переключения портов, ненастраиваемая система логирования, малое количество поддерживаемых Modbus-функций.
Termite
Следующим в нашем списке будет терминал Termite от S2-Team. Termite является специализированный Modbus терминалом. Это означает, что он сам будет считать за вас CRC, распознавать сообщения об ошибках в ответах и т.д., ваша задача заключается в том, чтобы ввести корректное тело запроса в поле команды.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | Доступны: время ожидания ответа, время между символами и кадрами |
Поддержка стандартного Modbus | + | |
Поддержка нестандартного Modbus | + | |
Авто-опрос одного / нескольких устройств | + / + | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / — | |
Создание профилей для быстрого переключения между настройками порта | + | |
Работа в режиме сниффер | — | |
Лицензия продукта | Есть платная и бесплатная версии |
Бесплатная версия обладает ограниченным функционалом (на количество каналов, одновременно ведомых лог файлов и количество разных запросов в авто-опросе) |
Сопровождение продукта | + |
Достоинства: поддержка всех Modbus-функций, работа с нестандартным Modbus, удобная система подсказок, возможность настройки внешнего вида ПО, поддержка профилей для быстрого переключения между настройками порта.
Недостатки: PRO версия платная (одна лицензия $ 10), в текущем релизе нет возможности гибко настраивать логирование.
AccessPort
Программа из разряда “чистых” терминалов. Она не поддерживает Modbus, поэтому при её использовании будьте готовы считать CRC для ваших кадров самостоятельно. Несомненным плюсом является то, что в неё встроен сниффер последовательного порта.
Функция | Наличие | Комментарий |
---|---|---|
Поддержка настроек COM-порта | + | |
Настройка таймаутов | + | |
Поддержка стандартного Modbus | — | |
Поддержка нестандартного Modbus | — | |
Авто-опрос одного / нескольких устройств | + / — | |
Настройка авто-опроса | + | Доступно: время между запросами |
Логирование сессии / настройка логирования | + / — | |
Создание профилей для быстрого переключения между настройками порта | — | |
Работа в режиме сниффер | + | |
Лицензия продукта | ПО бесплатное | |
Сопровождение продукта | Не поддерживается | Крайняя версия продукта была выпущена 2012-04-23 |
Достоинства: наличие сниффера порта, ПО бесплатное, настраиваемое представление данных, возможность передачи файлов.
Недостатки: не поддерживает Modbus вообще, нет возможность создавать профили, в режиме авто-опрос можно работать только с одним устройством, в настоящее время ПО не развивается.
В заключение хотелось бы добавить, что в сети достаточно большое количество программ для работы с последовательным портом, но если есть необходимость работать именно с Modbus протоколом, то его поддержка в таком ПО крайне желательна. Одна из основных причин — это расчет CRC, в ручную это делать накладно, также важно, чтобы программа могла уметь разделять кадры, иначе все превращается в сплошную мешанину байтов, ну и если есть авто-опрос, то это сильно упрощает жизнь.
Хочется дополнить список ПО и библиотек для работы с Modbus, тем, что было переставлено в комментариях.
SCADA
FreeSCADA
Modbus TCP/RTU
Advanced TCP/IP Data Logger
Ardsoft Эмулятор Modbus
PortMon
MODBUS FOR WINDOWS
PeakHMI
Modpoll Modbus Master Simulator
QModMaster
modbus_tk
pymodbus
libmodbus
Благодарю всех, кто помог улучшить статью!
Спасибо за внимание!
На чтение5 мин
Опубликовано
Обновлено
Modbus — популярный протокол в области промышленной автоматизации, который позволяет управлять и мониторить устройства через последовательное соединение. Для работы с устройствами, поддерживающими Modbus протокол, необходимо использовать специальное программное обеспечение. Одним из наиболее популярных средств для настройки и отладки таких устройств является программа Modbus Poll.
Модбас-сканер Modbus Poll предоставляет интуитивно понятный интерфейс и широкие возможности для чтения и записи регистров Modbus. С его помощью можно выполнить такие операции, как опрос значений регистров, установка значений регистров, чтение и запись регистров на устройстве. Используя Modbus Poll, можно легко и быстро настроить и проверить работоспособность устройств, работающих по протоколу Modbus.
В данной статье мы рассмотрим подробные инструкции по настройке программы Modbus Poll. Вы познакомитесь с процессом установки и активации программы, научитесь создавать профили для устройств, узнаете, как выполняются чтение и запись регистров, и научитесь импортировать и экспортировать настройки для дальнейшего использования. Это настоящее пошаговое руководство, которое поможет вам использовать программу Modbus Poll с максимальной эффективностью и без лишних затруднений.
Содержание
- Подготовка к настройке программы Modbus Poll
- Выбор и установка программы Modbus Poll
- Подключение устройства к компьютеру
- Настройка программы Modbus Poll
- Открытие программы и выбор порта
Подготовка к настройке программы Modbus Poll
Перед тем, как приступить к настройке программы Modbus Poll, необходимо выполнить несколько шагов подготовки. В данном разделе мы рассмотрим эти шаги подробно.
1. Установите программу Modbus Poll на свой компьютер. Для этого загрузите установочный файл с официального сайта разработчика и следуйте инструкциям установщика.
2. Проверьте наличие соединения с устройством, с которым вы планируете работать. Убедитесь, что устройство подключено к компьютеру и функционирует корректно.
3. Определите IP-адрес или COM-порт, через который будет установлено соединение с устройством. В случае работы через Ethernet, укажите IP-адрес устройства, а в случае работы через последовательный порт COM, укажите соответствующий номер порта.
4. Если у вас нет информации о режиме работы устройства (RTU или ASCII), узнайте эту информацию. В программе Modbus Poll необходимо указать правильный режим для успешного соединения с устройством.
5. Если устройство требует специальной настройки, выполните необходимые действия. Например, некоторые устройства требуют указания скорости обмена данными или других параметров.
6. Проверьте, что у вас есть необходимые права доступа к устройству и программе Modbus Poll. Убедитесь, что нет блокировок или ограничений, которые могут препятствовать успешному соединению или настройке.
После завершения этих шагов, вы будете готовы к настройке программы Modbus Poll и использованию ее функционала для работы с вашим устройством.
Выбор и установка программы Modbus Poll
Modbus Poll представляет собой удобную и мощную программу, позволяющую осуществлять связь с устройствами, совместимыми с протоколом Modbus. Программа имеет интуитивно понятный интерфейс и обширный функционал, что делает ее популярным выбором среди инженеров и разработчиков систем автоматизации.
Процесс установки программы Modbus Poll достаточно прост и займет всего несколько минут.
Шаг 1: | Перейдите на официальный сайт программы Modbus Poll. |
Шаг 2: | На странице загрузок найдите соответствующую версию программы для вашей операционной системы. |
Шаг 3: | Нажмите на ссылку для загрузки программы. |
Шаг 4: | Дождитесь окончания загрузки файлов установщика. |
Шаг 5: | Запустите установщик программы и следуйте инструкциям на экране. |
Шаг 6: | После завершения установки, запустите программу Modbus Poll. |
В результате выполнения этих шагов, программа Modbus Poll будет готова к использованию на вашем компьютере. При первом запуске программы вам может потребоваться ввести лицензионный ключ, если у вас есть платная версия программы.
Выбор и установка программы Modbus Poll не только упростят взаимодействие с устройствами, использующими протокол Modbus, но и предоставят широкий функционал для настройки и диагностики. Благодаря Modbus Poll вы сможете более эффективно работать с вашей системой автоматизации.
Подключение устройства к компьютеру
Прежде чем начать настройку программы Modbus Poll, необходимо правильно подключить устройство к компьютеру. Для этого следуйте указанным ниже шагам:
- Убедитесь, что устройство, с которым вы планируете работать, имеет интерфейс для подключения к компьютеру. Обычно это USB-порт или последовательный порт (COM-порт).
- Возьмите соответствующий кабель для подключения устройства к компьютеру. Если это USB-порт, используйте USB-кабель. Если это COM-порт, возможно понадобится специальный последовательный кабель.
- Осмотрите заднюю панель вашего компьютера и найдите соответствующий порт для подключения устройства. USB-порты обычно расположены на задней панели или сбоку компьютера. COM-порты также могут быть расположены на задней панели или с использованием расширительных слотов.
- Подключите один конец кабеля к соответствующему порту на устройстве, а другой – к соответствующему порту вашего компьютера. Обратите внимание, что кабель должен быть тщательно подключен и не должен быть сильно изогнут или перекручен.
- Включите устройство и компьютер.
- Если ваше устройство требует дополнительной настройки или установки драйверов, следуйте инструкциям, предоставленным производителем устройства.
- Когда устройство успешно подключено к компьютеру, вы можете приступить к настройке программы Modbus Poll для работы с устройством.
Теперь, когда устройство правильно подключено к компьютеру, вы можете продолжить настройку программы Modbus Poll и использовать ее для обмена данными с вашим устройством.
Настройка программы Modbus Poll
- Запустите программу Modbus Poll, после чего откроется окно программы.
- В верхней части окна выберите тип протокола Modbus, который будет использоваться — Modbus RTU или Modbus TCP.
- Укажите настройки подключения, такие как COM-порт или IP-адрес, в соответствующих полях.
- Выберите скорость передачи данных, которая соответствует настройкам вашего устройства.
- Укажите адрес устройства, с которым вы хотите взаимодействовать.
- Установите тип регистра, с которым вы будете работать — это может быть либо Holding Register, либо Input Register.
- Укажите номер регистра, с которым вы хотите взаимодействовать.
- Выберите тип данных, используемый в регистре — это может быть либо Integer, либо Float, либо другой тип данных.
- Нажмите кнопку «Read» для чтения данных из выбранного регистра, либо кнопку «Write» для записи данных в регистр.
После выполнения всех этих шагов, программа Modbus Poll будет готова для взаимодействия с вашим устройством, использующим протокол Modbus.
Открытие программы и выбор порта
Для начала работы с программой Modbus Poll необходимо открыть ее на компьютере. После запуска появится основное окно программы.
Процесс открытия программы очень прост и не требует особых навыков. Для этого щелкните дважды по ярлыку программы на рабочем столе или найдите ее в меню «Пуск».
После открытия программы нужно выбрать порт, через который будет осуществляться обмен данными с устройством. Для этого в верхней части основного окна программы найдите выпадающий список «Port» и нажмите на него.
В открывшемся списке выберите нужный COM-порт, к которому подключено устройство, с которым планируется осуществлять обмен данными. Если вы не знаете, к какому порту подключено устройство, можно попробовать выбрать каждый из доступных COM-портов до тех пор, пока не будет установлена соединение.
После выбора порта можно переходить к следующему шагу настройки программы Modbus Poll.