ModbusToolkit: 19 инструментов, чтобы понимать язык промышленных машин

—

от автора

Любой завод, котельная или насосная скрыто разговаривает сама с собой. В шкафах стоят контроллеры, датчики, счётчики электроэнергии и преобразователи частоты, и они непрерывно переспрашивают друг друга — какая температура, сколько насосов работает, какую частоту выставить. Обмен идёт по проводам и по сети сотни раз в секунду, и всё это построено на одном стандарте — Modbus.

Я инженер и пишу для этого языка программу ModbusToolkit. В ней 19 инструментов, и она бесплатна.

Что такое Modbus простыми словами

Modbus появился в 1979 году и по‑прежнему остаётся самым распространённым языком обмена в промышленной автоматике. Устроен он проще некуда.

Каждое устройство держит свои данные в ячейках с номерами, их называют регистрами. В одной ячейке лежит температура, в другой — задание для насоса, в третьей — счётчик наработанных часов. Устройство‑мастер отправляет запрос вроде «дай содержимое ячейки номер 7», прибор отвечает числом. На этом вся идея.

Modbus живёт в двух видах. По проводу (линия RS-485, знакомый многим «шнурок» с клеммами) общаются RTU и его редкий вариант ASCII. По обычной компьютерной сети работает Modbus TCP, который выглядит как любой другой сетевой трафик. Кто спрашивает — тот мастер, кто отвечает — ведомое устройство (по‑английски slave).

Не обязательно быть инженером, чтобы во всём этом разбираться. За каждой аварией на производстве кто‑то в итоге садится с ноутбуком и начинает читать именно этот обмен.

Десять программ на рабочем столе наладчика

Чтобы обслужить шкаф автоматики, нужен целый набор инструментов. Одна программа слушает провод, другая опрашивает приборы, третья рисует панель оператора, четвёртая считает контрольные суммы кадров.

Обычно это десяток разрозненных утилит. Половина выглядит как Windows XP, часть платная, каждая знает свой кусок работы и не умеет больше ничего. У меня на ноутбуке когда‑то был ровно такой стол из ярлыков. В какой‑то момент я начал собирать всё это в одну программу с нормальным интерфейсом. Получился ModbusToolkit. Он работает на Windows и Linux, интерфейс на русском и английском.

Сниффер: подслушать провод

Сниффер подключается к линии и только слушает, ничего не передавая, поэтому на чужой обмен он не влияет. Каждый запрос и каждый ответ появляются строками — как в переписке, кто у кого что спросил и что получил в ответ.

Кадр можно раскрыть и посмотреть по байтам, вместе с полями заголовка и контрольной суммой. Есть фильтры, поиск, сравнение двух записей между собой и выгрузка в Excel или Wireshark. Мне нравится наблюдать за работающей линией, где уже стоит чей‑то мастер. Объект понимаешь без единого своего запроса.

Сканер: спросить всех подряд

Сканер ищет приборы в сети и перечисляет их регистры с текущими значениями. Обычные сканеры спотыкаются о дырявую карту памяти. Один неудачный запрос на весь диапазон адресов — и программа решает, что там пусто. Здесь при ошибке диапазон режется пополам, и так достаётся всё, что реально отвечает.

Ещё сканер умеет молча слушать шину и по чужому трафику определять скорость и настройки порта. Найденные регистры одной кнопкой уходят в эмулятор или в шаблон прибора.

Эмулятор Slave: прибор, которого нет на столе

Slave отвечает вместо настоящего прибора. По сети или через COM‑порт к нему можно подключить SCADA (программу, с которой оператор следит за процессом) или сам контроллер (ПЛК — компьютер, управляющий оборудованием). Проверка идёт так, будто железо уже привезли и подключили.

Поведение ячеек задаётся галками — константа, счётчик, синусоида, случайное блуждание. Если нужны настоящие реакции, пишется сценарий. Для проверки программ ПЛК есть готовый набор объектов — печь с ПИД‑регулятором (это такой автомат, который держит заданную температуру), клапан с электроприводом, резервуар с насосом, датчик с отказами, предохранительная автоматика и генератор неисправностей. Программу контроллера можно испытать на прочность, пока всё это живёт в ноутбуке.

Эмулятор Master и тренд

Master — обратная сторона. Программа сама опрашивает прибор и показывает значения живьём. Отмеченные регистры рисуются графиком прямо в таблице, и видно, как температура ползёт вверх после пуска насоса. График хранит часы истории, рвёт линию там, где связь пропадала, и умеет снимать значения курсором в нужный момент.

Писать в прибор тоже можно, есть даже генератор тестовых значений — счётчик, синусоида, пила. Если выдернуть из ноутбука USB‑адаптер, программа дождётся его обратно и продолжит сама.

Сценарии на Structured Text

Поведение обоих эмуляторов описывается сценариями на Structured Text — языке, на котором пишут программы самих промышленных контроллеров (стандарт МЭК 61131–3). Внутри полноценный редактор с подсветкой, автодополнением, точками останова и библиотекой блоков — таймеры, счётчики, ПИД‑регулятор.

Тот же скрипт запускается и без окна, из командной строки. Подходит для проверок по расписанию и автоматических тестов.

Диагностика: качество связи числами

Когда связь на объекте ведёт себя странно, нужны измерения. Диагностика собирает долю ошибок, таймауты и время отклика по каждому устройству отдельно — минимальное, среднее и максимальное в микросекундах, плюс разброс. Всё сводится в оценку — норма, внимание или плохо — с указанием причины.

И карта памяти восстанавливается прямо из чужого трафика. Не останавливая линию, программа смотрит, какие регистры опрашивает чужой мастер, и собирает из этого карту устройства. Для контроллеров Delta адреса показываются родными операндами, как D437, — понятно даже без исходника проекта.

Шлюз: мост от провода к сети

У шлюза три режима. Прозрачный мост просто пересылает кадры. В кеш‑режиме программа сама опрашивает линию по расписанию и раздаёт значения всем желающим, не нагружая провод лишними запросами. Клиентский режим сам подключается наружу — так объект, который сидит за маршрутизатором и не пускает входящие соединения, достаётся удалённому серверу.

Несколько маршрутов живут рядом, у каждого свои настройки и белый список устройств.

HMI‑дизайнер: мнемосхема без строк кода

HMI‑дизайнер рисует мнемосхему — ёмкости, шкалы, насосы, трубопроводы из прямых участков и отводов, тренды, таблицу аварий с порогами и квитированием. Элементы привязываются к регистрам Modbus, а встроенный симулятор показывает картинку без подключённого оборудования.

Готовый экран запускается на реальном железе и выгружается в PDF. Меня порадовало тиражирование. Второй такой же агрегат копируется целиком, а адреса Modbus перенумеровываются одной правкой с предпросмотром «было — стало».

Алармы

Правила простые — превышение порога, падение ниже, равенство, изменение значения. Срабатывание попадает в журнал со временем и счётчиком. Правила собираются мышкой, без скриптов, и могут работать пассивно — по трафику, который уже идёт мимо.

OPC UA: соседний язык обмена

Рядом с Modbus на современных объектах живёт OPC UA — более новый стандарт обмена, с шифрованием и проверкой сертификатов. Клиент в программе ходит на такие серверы, читает дерево значений, подписки и историю. Шлюз умеет переводить Modbus в OPC UA в обе стороны, так что старый прибор становится узлами нового сервера.

ИИ‑ассистент

Помощник живёт рядом с редактором сценариев. Языковая модель работает прямо на вашем компьютере (движок llama.cpp), отвечает по открытому коду и встроенной справке, и по умолчанию ни строчки вашего кода не уходит в интернет. Доступ в сеть и чтение файлов включаются только с явного согласия на каждый вызов.

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

Мелочи, которые экономят время

Калькулятор контрольных сумм считает хвост кадра и переводит его между проводом и сетью. Программистский калькулятор показывает, как одно число выглядит в разных форматах и порядке байт — вечная головная боль значений с плавающей точкой. Шаблоны приборов приходят с картами регистров из руководств (ОВЕН ПВТ100 и преобразователь ПЧВ3), а свою карту можно сохранить файлом и передать коллеге.

Справка открывается по F1 на любой вкладке и не требует интернета. Экспорт обмена — в CSV, JSON и Wireshark, плюс резервная копия всех настроек. Есть консольная версия для автотестов и ModbusTestSuite — чек‑лист на 248 пунктов. Программа по очереди просит что‑то сделать в окне и спрашивает, совпало ли с ожиданием, так что проверить её руками можно за один вечер.

Честные мелочи

Захват сетевого Modbus TCP на Windows требует драйвера Npcap. Он ставится отдельно с официального сайта, потому что его лицензия запрещает включать его в чужие установщики. Без него программа работает целиком, кроме одного источника в сниффере.

Исходники закрыты, зато лицензия разрешает использовать программу в коммерческой работе — наладке, сервисе, обучении. Автоматических тестов у проекта 1414, и всё равно один раз я выпустил версию, которая не стартовала на компьютерах без Npcap. С тех пор каждый пакет перед выпуском проверяется машиной на подобные сюрпризы.

Сколько стоит и кто это пишет

ModbusToolkit бесплатен целиком — все 19 инструментов, без ключей активации, регистрации и пробных периодов. Так решено с самого начала. Пишет его один человек — я, вечерами, на своём оборудовании.

Если программа сэкономила вам смену на объекте, её можно поддержать деньгами или отчётом о баге. Второе иногда ценнее — так в программу попадают приборы, которых у меня физически нет. Сейчас идёт сбор на испытательный стенд с настоящими железными устройствами, на нём будет проверяться каждая версия.

Как попробовать прямо сейчас

Железо для этого не нужно. Внутри программы есть демо‑устройство, а в интернете висит открытый тестовый сервер. Адрес 45.8.248.56, порт 502, на нём десять виртуальных приборов с разными форматами данных. Подключитесь к нему любой программой Modbus или прямо сканером из ModbusToolkit — и всё увидите сами.

Скачать можно на modbustoolkit.electroman.by — Windows установщиком или архивом, Linux пакетами.deb, AppImage и tar.gz. Текущая версия — 1.56.0. Там же документация, короткие ролики по каждому инструменту и пара калькуляторов прямо в браузере. Новости выходят в Telegram‑канале t.me/modbustoolkit.

ссылка на оригинал статьи https://habr.com/ru/articles/1101224/