PDA

Просмотр полной версии : Подскажите программу логгер/сниффер Modbus



FPavel
26.05.2026, 20:23
Добрый день!

Во время ПНР появилась задача разобраться с периодической ошибкой в обмене по Modbus RTU.
Система содержит 8 модулей ввода-вывода, для опроса каждого требуется сделать по 9 запросов (1 для восьми измеренных значений и ещё 8 для восьми регистров качества измерений) - так уж устроены эти модули и получить все данные одним или двумя групповыми запросами невозможно и это оговорено в документации на модуль.
Опрос модулей выполняется за счёт конфигуратора и применение другого способа (библиотеки обмена) невозможен.
Периодически на разных модулях возникает какая-то ошибка, диагностика ПЛК просто выдаёт невразумительный код ошибки.

Хочу разобраться с причиной ошибки.
Для этого подключился к линии на прослушку, могу сохранить обмен.
Имеющиеся логгеры-снифферы позволяют сохранять или сплошной дамп без отметок времени или просто сообщения вида "(дата-время) Modbus запрос к устройству с адресом XX и регистру YYYY".
Ошибки возникают раз в 10-15 минут, объём сохранённых данных в логах очень велик, найти запрос+ответ с ошибкой трудно.
Т.е. даже не понимаю характер ошибки - пропуск обмена (таймаут), искажения на линии (неправильный пакет).

Поэтому вижу два варианта:
- найти логгер с сообщениями вида "дата-время запрос (или ответ) устройство XX регистр YYYY: XX 03 YY YY LL LL CRC CRC"
- или написать собственный парсер дампа для получения нужных сообщений с диагностикой ошибок в пакетах.

Подскажите бесплатный логгер с такой возможностью или, может быть, готовую библиотеку разбора дампа с диагностикой.

BETEP
26.05.2026, 21:27
...........
Подскажите бесплатный логгер с такой возможностью или, может быть, готовую библиотеку разбора дампа с диагностикой.
Не поверите, Эксель, вкладка данные.
При создании фильтра сразу увидите аномальные строки, можно удалить дубликаты и увидеть что то лишнее, там дофига всего можно. Да;е на другом листе сделать выборку почти ка SQL запрос

FPavel
26.05.2026, 21:29
Не поверите, Эксель.
Я верю всем после обоснования.

BETEP
26.05.2026, 21:35
Обосновал?

FPavel
26.05.2026, 21:55
Как понимаю, VBA for Excel, как и макросы и функции Excel - Тьюринг-полные машины и позволяют воспроизвести любой алгоритм.

У меня в наличие просто бинарные дампы на десятки и сотни килобайт. Думаю, что после их открытия в Hex-редакторе смогу скопировать их hex представление и отправить в Excel, а может и сам Excel может работать с бинарными файлами.

Но, наверное, вместо изучения нового языка и его особенностей мне проще сделать парсер на знакомом FreePascal - неделю сэкономлю. У меня с середины декабря было всего 6 выходных дней - сейчас реально не способен и не расположен к обучению.

BETEP
26.05.2026, 22:06
У вас лог бинарник? жесть. Логи ведь понятными для человека делают.
Как разбирать лог? так как вам удобнее. Но иметь поверхностное знакомство с Экселем нам не помешает. VBA for Excel.... есть фича, запись макроса, т.е. что то делаете в Экселе, потом это воспроизводите, нажав на кнопочку.

kondor3000
26.05.2026, 22:44
А что за модули? И чем читаете?
Почему вот у меня ни одной ошибки нет интересно, приходится изобретать как ошибку сделать.

Сергей0308
26.05.2026, 23:12
А что за модули? И чем читаете?
Почему вот у меня ни одной ошибки нет интересно, приходится изобретать как ошибку сделать.

Вы вероятно сами делаете или под вашим чутким руководством, а у товарища кто-то делает, я так понимаю, кто в тонкостях процесса не разбирается.

Я так понимаю что и у товарища процент ошибок очень-очень маленький, непонятно зачем этим заморачиваться, в смысле, ничего идеального не бывает, даже на Солнце пятна, сейчас особенно на противоположной к Земле стороне, короче, никто же не рвётся, как Ленин в Петроград, эти пятна устранять, надеюсь, смысл понятен?

FPavel
27.05.2026, 06:35
А что за модули? И чем читаете?
Почему вот у меня ни одной ошибки нет интересно, приходится изобретать как ошибку сделать.

Контроллер Regul R500.
Среда программирования - кастомизованный CODESYS 3.5. Кроме конфигурации Modbus - других средств нет, в официальных документах не рассматривается.
https://reglab.ru/upload/iblock/c63/bxjpd31viamzx3b4i0nj0zthy4xq1sg1/Modbus-User-Guide-DPA_302-1_v1.7_rus.pdf
Модули RealLab NLS-8TI на 8 каналов термодатчиков, в данном случае термопар. https://www.reallab.ru/Support/download/

Диагностика обмена по Modbus в ПЛК не очень внятная, обобщённая.
У меня есть подозрение, что модули иногда пропускают ответ или помеха на линии искажает пакеты.
Интересует - причина диагностирования ошибки и период между опросами при такой диагностики.

Снял логи программой Serial Advansed Monitor (trial) - пишу по памяти. Пробовал ещё HHM Advansed Serial Logger - тоже название по памяти. Пару дней назад на хабре было описание какого-то нового логгера - и им пробовал.
При сохранении получаю бинарик.
Если лог без дампа типа "(дата-время) Modbus запрос к устройству с адресом XX и регистру YYYY" - то в тексте.
Преобразовать бинарный в текстовый дамп - труда не предоставляет - делал такое даже на ассемблере.
Сделать парсер на Free Pascal - думаю по силам, только время потребуется. Но, подозреваю, что не первым вижу такую задачу.

В идеале - сразу из логгера получать лог с диагностикой ошибок и разбором "запрос / ответ / адрес / регистр / время / ошибки". Самодельный парсер - это на крайний случай.

FPavel
27.05.2026, 06:46
Обосновал?

Спасибо за пример. На работе посмотрю - на домашнем пользуюсь Libre Office, открыть не смогу.