0
Отвечен

Зависает опрос по модбасу.

Виктор 1 год назад в Монитор обновлен СИМП Лайт (тех поддержка) 11 месяцев назад 37

В проекте используется Modbus ТСР (примерно 1500 каналов), ОРС UA (50 каналов), OPC DA (20 каналов) и виртуальные каналы (около 300 каналов). Будет каналов еще раза в два больше.

Примерно через сутки работы монитора прекращается опрос по модбасу. Интерфейс пользователя продолжает работать (мнемосхемы открываются), ОРС продолжает работать. Watchdog не срабатывает. При попытке закрыть монитор очень долго (больше часа) висит окошко "Завершение работы", приходится выключать монитор через диспетчер задач.

Версия симплайта 4.7.8.101 Enterprise.

На рассмотрении

День добрый.

Когда стало проявляется такое поведение? Связь с устройствами modbus стабильно? Все устройства которые добавлены в проект онлайн?

Проект работает месяца три, постоянно обновляясь - добавляются новые устройства. Такое поведение замечали раз пять уже за последнее время, но то забывали проверить работу ОРС, то просто перезагружали. В общем не мог собрать полную картину, как проявляется проблема.

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

Отсутствие текущих данных для проекта не очень критично. Для индикации оператору отсутствия прибора в сети используется системный тег "Состояние". НО важно знать, что данных именно НЕТ. Ситуация, когда данные показываются, но они как бы "замороженные", суточной давности, недопустима.

Проект работает месяца три, постоянно обновляясь - добавляются новые устройства. Такое поведение замечали раз пять уже за последнее время, но то забывали проверить работу ОРС, то просто перезагружали. В общем не мог собрать полную картину, как проявляется проблема.
Связь с устройствами нестабильная, постоянно кто-то отваливается, кто-то появляется - устройства в глуши расположены и сеть через роутеры ростелекомовские организована.
Отсутствие текущих данных для проекта не очень критично. Для индикации оператору отсутствия прибора в сети используется системный тег "Состояние". НО важно знать, что данных именно НЕТ. Ситуация, когда данные показываются, но они как бы "замороженные", суточной давности, недопустима.

Если связь с устройствами не стабильна - тогда я бы пересмотрел настройки драйвера, на предмет таймаутов, кол-ва перезапросов при ошибках, и паузы между перезапросами. Т.к. если связь плохая, то "выпавшие" устройства могут тормозить весь опрос, т.к. драйвер будет тратить на них время в попытке достучаться. 

А какие настройки посоветуете?

Сейчас для всех устройств стоит таймаут 5000мс и нет попыток повтора.

Устройства могут отваливаться на 5 минут, а могут и на неделю.

А интервал опроса какой установлен?

У всех параметров 1 секунда.

Для нестабильной связи слишком малый интервал.

Рекомендации:

1. Увеличить интервал опроса - 3-5 секунд.

2. Таймаут ожидания - секунды на 2 больше интервала опроса.

3. 1-2 перезапроса при ошибке.

4. Повторное соединение - до минуты.

Тем самым разгрузим драйвер при работе с приборами которые отваливаются

Спасибо, попробую  и понаблюдаю.

По результатам отпишусь.

Было такое. Скада размером 7-8 тысяч физических тэгов нормально работала с орс-сервером овен, стали добавлять устройства в modbus драйвер, и скада начала вылетать. Чем больше устройств, тем чаще вылетает. Watchdog не помогает, он вроде пытается запустить скаду, но у него не получается. Взяли за правило перезагружать скаду раз в сутки вручную и смотреть, получилось у неё заработать или нет, только так и спасались, но потом она стала вылетать уже несколько раз в сутки.

Опрос через GPRS, таймаут 5000-10000 мсек, минимальный интервал опроса 10 сек, но у основной массы тэгов раз в несколько минут.

Проблему решили покупкой инсатовского орс-сервера и постепенным на него переездом. Сейчас в modbus драйвере осталось примерно 10 устройств, может, там какие-то нехорошие процессы изредка и происходят, но привычка ежесуточной ручной перезагрузки скады осталась, поэтому что-то конкретное сказать не могу.

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

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

День добрый.

Подскажите какая версия (цифры) была установлена у Вас?

Программа проработала полтора суток, и опять модбас остановился. 

День добрый.

На почту выслали файл для теста.

Да, увидел уже, спасибо.

Установил обновленную версию Симплайта. Система проработала выходные без зависаний.

Но есть другая проблемка - за выходные примерно на сутки пропадала связь с двумя устройствами. А, когда связь восстановилась (часов 8 уже прошло) - система не видит их. После перезапуска скады все подцепилось и работает.

Еще раз параметры связи - таймаут 5000, повторы при ошибке 2, повторное соединение 60.

День добрый.

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

Нет, не смотрели.

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

Если логи сохраняются, где-то в папках, могу посмотреть.

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

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

Без лога программа работает. Правда тоже перезагружается иногда watchdogом (когда через двое суток, когда через 5 часов). Но, главное, что данные по модбасу всегда актуальные.

Возможно, дело в самом компьютере - там установлено куча всего, и он не первой свежести. Пока, для наших нужд, такое поведение (имеется в виду периодическая перезагрузка) приемлемо.

Сегодня ночью опять подвис опрос.


Есть мысль отслеживать по модбасу регистры часов в устройстве (в нескольких сразу) и, при необходимости, перезапускать монитор принудительно.

Можно ли как-то "изнутри" перезапускать монитор? Сторожевой таймер можно как-то заставить это сделать? Как он отслеживает зависание монитора?


День добрый.

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

Да, от всех - модбас полностью останавливается. Только OPC продолжает работать.

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

Сейчас главное, чтобы у диспетчера была актуальная информация. Пара-тройка минут на перезапуск системы не критично. А вот пара часов ошибочной уверенности, что все работает - плохо ))

Проблему с опросом конечно же нужно решать. Но, еще раз повторю - я грешу на компьютер - там миллион разных служб от других приложений и серверов (одна контаровская система чего стоит). Пока другой машины нет.

Если поможете со скриптом - буду очень рад!

Могу проект скинуть для анализа - вдруг что-то увидите...

Ок. Думаем что можно сделать с перезапуском. По результату отпишемся.

Доброе утро.

Есть ли подвижки по перезапуску монитора?

За выходные опять несколько проявлялась проблема - устройство после потери связи по модбасу и последующем восстановлении не подхватывалось симплайтом. Не могу сказать, на сколько отваливалась связь, т.к. сужу только по графикам из монитора. После перезагрузки монитора вручную (грубо говоря каждые 12 часов) устройство появлялось.

Если у меня в настройках стоит 2 повтора при ошибке и повторное соединение через 60 секунд, это значит, что система будет пробовать восстановить связь только пару минут?

День добрый.

Есть ли подвижки по перезапуску монитора?

Думаю на неделе выпустим версию с этим функционалом.


стоит 2 повтора при ошибке и повторное соединение через 60 секунд, это значит, что система будет пробовать восстановить связь только пару минут?


Немного не так - два неудачных запроса с интервалом опроса - далее 60 сек пауза, и следующие 2 попытки, и т.д.

Странно. И монитор будет пытаться поймать связь каждые 60с до бесконечности? Никакого ограничения на общее количество попыток нет? Устройство появляется только после перезагрузки монитора...

Еще возникла мысль - возможно, дело не в пропадании связи (как сказал выше сужу только по истории параметров в мониторе), а в том, что монитор просто по какой-то причине перестает читать устройство. Т.е. это проблема из той же области, что модбас полностью подвисает.

Странно. И монитор будет пытаться поймать связь каждые 60с до бесконечности? Никакого ограничения на общее количество попыток нет? Устройство появляется только после перезагрузки монитора...

Нет, ограничения на попытки нет. 

Еще возникла мысль - возможно, дело не в пропадании связи (как сказал выше сужу только по истории параметров в мониторе), а в том, что монитор просто по какой-то причине перестает читать устройство. Т.е. это проблема из той же области, что модбас полностью подвисает.

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

Свяжитесь с нами в чате тех. поддержки. Попросите переключить на Юрия.

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

День добрый.

Хорошо. Держите нас в курсе дел).

Система работает.

Иногда останавливается опрос отдельных устройств (которые без часов и не проверяются в моем алгоритме проверки зависания модбаса), но все возобновляется при периодическом сбросе.

Пока так...

День добрый.

Ок, понял. Держите в курсе.

Сервис поддержки клиентов работает на платформе UserEcho