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"
- или написать собственный парсер дампа для получения нужных сообщений с диагностикой ошибок в пакетах.
Подскажите бесплатный логгер с такой возможностью или, может быть, готовую библиотеку разбора дампа с диагностикой.
Во время ПНР появилась задача разобраться с периодической ошибкой в обмене по Modbus RTU.
Система содержит 8 модулей ввода-вывода, для опроса каждого требуется сделать по 9 запросов (1 для восьми измеренных значений и ещё 8 для восьми регистров качества измерений) - так уж устроены эти модули и получить все данные одним или двумя групповыми запросами невозможно и это оговорено в документации на модуль.
Опрос модулей выполняется за счёт конфигуратора и применение другого способа (библиотеки обмена) невозможен.
Периодически на разных модулях возникает какая-то ошибка, диагностика ПЛК просто выдаёт невразумительный код ошибки.
Хочу разобраться с причиной ошибки.
Для этого подключился к линии на прослушку, могу сохранить обмен.
Имеющиеся логгеры-снифферы позволяют сохранять или сплошной дамп без отметок времени или просто сообщения вида "(дата-время) Modbus запрос к устройству с адресом XX и регистру YYYY".
Ошибки возникают раз в 10-15 минут, объём сохранённых данных в логах очень велик, найти запрос+ответ с ошибкой трудно.
Т.е. даже не понимаю характер ошибки - пропуск обмена (таймаут), искажения на линии (неправильный пакет).
Поэтому вижу два варианта:
- найти логгер с сообщениями вида "дата-время запрос (или ответ) устройство XX регистр YYYY: XX 03 YY YY LL LL CRC CRC"
- или написать собственный парсер дампа для получения нужных сообщений с диагностикой ошибок в пакетах.
Подскажите бесплатный логгер с такой возможностью или, может быть, готовую библиотеку разбора дампа с диагностикой.