Тема / Topic: Прекращение обмена по протоколу MODBUS RTU
Artem.Polyakov
Junior Member / Новичок
Участник № / Member № 6577
отправлено / posted
Добрый день! Проблема следующая: В Trace Mode настроен сбор данных (несколько ТС и ТИ) с устройства по протоколу MODBUS RTU. Данные собираются нормально, но только в течение небольшого промежутка времени (около минуты). Потом сбор данных останавливается. Сниффер показывает, что обмен идет в штатном режиме до тех пор, пока RTU отвечает на все запросы. Затем профайлер отсылает запрос, на который RTU не отвечает (запрос "потерялся"), и на этом опрос заканчивается. После перезапуска профайлера все повторяется.
Версия TraceMode 6.09 (для отладки используется профайлер).
P.S. Лог файл <имя проекта>_0.txt содержит много повторяющихся строк: ERR_RS:COM1 err=3 oserr=995
отправлено / posted
Сообщение в протоколе профайлера говорит о том, что в COM-порт не удается послать запрос (ошибка записи через API COM-порта - отказ со стороны ОС). Как организован физический канал? Нет ли других приложений, использующих этот COM-порт?
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Artem.Polyakov
Junior Member / Новичок
Участник № / Member № 6577
отправлено / posted
Устройство RTU подключено напрямую к порту RS-485. Запущены сниффер и профайлер Trace Mode.
Сообщения / Posts 6 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Какой конвертор для RS 485 используется? Требует ли он управления приемо-передачей? Соответственно ли настроен Ваш COM-порт?
Нет ли необходимости в согласовании линии RS 485? Какой таймаут на ожидание ответа указан вами в настройках COM-порта? Можно попробовать искусственно увеличить таймаут.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Artem.Polyakov
Junior Member / Новичок
Участник № / Member № 6577
отправлено / posted
Используется промышленный компьютер (на Windows) со встроенным портом RS-485. Таймаут COM-порта установлен в 1000 мс. MODBUS Poll, запущенный на этом же компьютере, опрашивает RTU без подвисаний. Периодически возникают ошибки таймаута, но опрос при этом не останавливается.
Сообщения / Posts 6 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
MODBUS Poll реализует тот же регламент опроса (адреса и количество переменных, период опроса, тот же COM-порт с теми же настройками и пр.)?
Тот же проект, запущенный на офисном ПК, работает с теми же проблемами? Тот же проект на промышленном компьютере при обмене с эмулятором Modbus_Slave, например, ModSim32, запущенным на офисном ПК, работает без проблем?
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Artem.Polyakov
Junior Member / Новичок
Участник № / Member № 6577
отправлено / posted
MODBUS Poll позволяет настроить 1 диапазон опроса, который не совпадает с набором каналов в Trace Mode. Период опроса и настройки порта идентичные. В какой-то момент проблема решилась сама собой. Возможно, проблема была в отсутствии согласующего сопротивления или плохом контакте проводов. Также в одном из снифферов я выставил флаг «Очищать буфер после неправильно принятого кадра». В общем причина остановки опроса так и не выявлена, также как и методика устранения. Вопрос можно считать закрытым.
Сообщения / Posts 6 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Очень похоже, что возникает нарушение регламента работы RS 485, в частности из-за плохого качества сигнала или несогласованности линии. При этом на линии могут ложно образоваться 2 передатчика или возникнуть отказ в управлении приемо-передачей.
Trace Mode 6 работает с COM-портом через API ОС и воспринимает соответствующие ошибки, возвращаемые ОС (см.пост от 16-01-2015 12:42). Не исключено, что MODBUS Poll обходит отказы ОС либо прямым обращением к регистрам порта, либо его принудительной реинициализацией.
Сообщения / Posts 17317 | Из / From: Россия
| IP / IP: IP адрес / IP address |