
Тестирование устройств и сетей на базе MODBUS
сергей рылов
к.т.н., эксперт по автоматизации производства,
Школа Fine Start
В данной статье рассмотрим, каким образом происходит тестирование устройств и сетей на базе MODBUS
Итак, начнём!

Протокол Modbus довольно распространен как в промышленных системах автоматизации, так и сетях систем типа «Умный дом», автоматизации малых объектов (теплицы и т.п.) и стыковки различного оборудования с домашним компьютером.
Появление таких проектов как Arduino и Raspberry Pi значительно повысило интерес к задачам, связанным с робототехникой, автоматикой и автоматизацией. Все это обеспечивает рост популярности Modbus среди любителей и профессионалов.
Тестирование устройств с поддержкой Modbus RTU
Как при разработке, так и при наладке устройств с поддержкой протокола Modbus RTU, необходимо иметь специализированное программное обеспечение и технические средства.

Из технических средств наиболее простой вариант — это преобразователь RS-485/USB, из всех устройств такого типа, наилучшим вариантом является преобразователи фирмы MOXA. Существуют также различные отечественные решения, например, преобразователи фирмы 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 устройства
Если необходимо соединить контроллер и одиночное Slave-устройство, то прежде всего, нужно установить с ним связь с помощью преобразователя интерфейсов RS-485/USB, ПК и специализированного программного обеспечения либо терминала.
В таком случае, логика работы и набор инструментов ничем не отличается от тех, что применяются
при разработке Slave-устройства на стадии тестирования. На этом этапе не требуется длительное тестирование
с последующим анализом большого количества лог-файлов.
В случае, когда уже есть готовая сеть устройств, можно выделить следующие задачи:
- проверка работоспособности всех устройств в сети (опрос каждого устройства в отдельности и проверка корректности ответа);
- нагрузочное тестирование (опрос устройств в сети в течение длительного времени). Желательно сделать несколько экспериментов с различной частотой опроса, а после провести анализ собранных данных на наличие отказов, не ответов, порчи данных и т.п.
В этом случае, понадобится либо терминал с возможностью создания списка запросов, либо специализированный инструмент типа Modbus Poll, который позволяет опрашивать несколько устройств в рамках одного проекта.
Modbus-устройства могут иметь определенные настройки интерфейса RS-485: количество бит данных, четность и количество стоп бит. Устройства с различными настройками не могут работать в одной сети с одним и тем же мастером. Тестирование и конфигурирование таких устройств удобно проводить, применяя терминальные программы, имеющие возможность быстрого переключения между предустановленными профилями настроек портов или работающие с несколькими линиями одновременно.
Реже возникает задача организации обмена данными с устройством, протокол которого отличается от стандартной спецификации Modbus RTU. Могут быть редкие ситуации, когда протокол Slave-устройства логически повторяет Modbus (структура пакета, таймауты и т.п.), но использует функции вне стандарта. В таком случаем возможна работа с использованием Modbus Poll, он позволяет строить произвольные запросы, или терминала, обладающего сходным функционалом. Стандартная SCADA-система, обычно, в такой ситуации бессильна, и работа с подобным оборудованием осуществляется через специальный OPC сервер.
Требования к ПО для работы с Modbus-устройствами в режиме мастера
Описав различные задачи, которые возникают при разработке, настройке и наладке устройств с протоколом Modbus, приведем список требований к специализированному программному обеспечению.
- Поддержка настроек COM-порта (номер, скорость, четность, количество бит данных и стоп бит)
- Настройка таймаутов (время ожидания приема ответа на запрос, время между символами и кадрами)
- Поддержка стандартного Modbus
- Поддержка нестандартного Modbus
- Авто-опрос одного/нескольких устройств
- Настройка авто-опроса
- Логирование сессии / настройка логирования
- Создание профилей для быстрого переключения между настройками порта
- Работа в режиме сниффер
- Лицензия продукта
- Сопровождение продукта разработчиком

Сергей Рылов
К.Т.Н., ЭКСПЕРТ ПО АВТОМАТИЗАЦИИ ПРОИЗВОДСТВА, ШКОЛА FINE START
Более 10 лет опыта инженером по автоматизации, инженером-программистом АСУ ТП и инженером-проектировщиком АСУ ТП в разных отраслях промышленности.
Принимал участие в таких крупных проектах автоматизации, как проекты ГУП «Мосгортранс» и ОАО "Линде Газ Рус".
Заинтересовала статья?
Освоить востребованную профессию в сфере автоматизации производства вы можете в Школе Fine Start. Узнайте детали в каталоге наших профессий
