Плагин Modbus



  • Перезагрузка сервера целиком не помогла (ВМ перезапустил).

    А спустя какое то время после очередного перезапуска плагина заработало.

    А нет ли там каких нибудь таймаутов многочасовых?



  • @Erik:

    Сегодня протестировалась ситуация с потерей связи между сервером и контроллером.

    При пропадании связи через 120 сек на объектах загорелся индикатор аварии (как настроено)

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

    Перезапуск плагина не помог.

    Перезапуск сервера не помог.

    ТСР соединение с контроллером открывается на секунду, и закрывается.

    Сам контроллер работает. Могу на него войти. По команде выдает текущие значения регистров модбас на страничку.

    Как его оживить?

    Нужно отследить, что происходит при запуске плагина.

    Установите Уровень отладочных сообщений - Средний.

    Откройте отладчик плагина.

    На другой вкладке сделайте Остановить плагин - Запустить плагин.

    В отладчике должны быть сообщения начиная с Run

    14.02 13:58:47.889 IH: Run /var/lib/intrahouse-c/plugins/modbus/modbus.js modbus1
    14.02 13:58:48.961 modbus1: Plugin modbus1 has started.
    14.02 13:58:49.083 modbus1: Connected to 192.168.0.240:502
    14.02 13:58:49.085 modbus1: READ unitid=1 FC=1 address=16384 (0x4000) length=1
    ........
    
    
    

    Если соединение разрывается - должно быть сообщение об ошибке



  • вечером попробую повторить ситуацию выдергиванием пачкорда.

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



  • Не получается повторить проблему.

    Восстанавливаю соединение, и тут же восстанавливается обмен по модбас.



  • В прошедшие выходные отключалось электричество на 8 часов. Сервер работал, контроллер был не доступен.

    После включения плагин не восстановил работу с контроллером. Пришлось перезапускать плагин.

    Это так и планироваалось?

    Можно автоматизировать перезапуск плагина раз в 30 минут при потере связи?



  • @Erik:

    В прошедшие выходные отключалось электричество на 8 часов. Сервер работал, контроллер был не доступен.

    После включения плагин не восстановил работу с контроллером. Пришлось перезапускать плагин.

    Это так и планировалось?

    Нет, плагин должен при потере связи перезагрузиться и пытаться восстановить связь 😞

    Проверим.

    @Erik:

    Можно автоматизировать перезапуск плагина раз в 30 минут при потере связи?

    Для этого у всех плагинов есть параметр на вкладке Общие - Время рестарта (сек).

    Если бы плагин завершил работу при потере связи - он бы перезагрузился.



  • @intrapro:

    Для этого у всех плагинов есть параметр на вкладке Общие - Время рестарта (сек).

    Если бы плагин завершил работу при потере связи - он бы перезагрузился.

    стоит 5 секунд.

    Но до перезапуска вручную ничего не работало.

    У меня на коротких перерывах все восстанавливается само.

    А дважды случались длительные, один час, второй восемь часов, оба раза были проблемы.



  • @Erik:

    @intrapro:

    Для этого у всех плагинов есть параметр на вкладке Общие - Время рестарта (сек).

    Если бы плагин завершил работу при потере связи - он бы перезагрузился.

    стоит 5 секунд.

    Но до перезапуска вручную ничего не работало.

    У меня на коротких перерывах все восстанавливается само.

    А дважды случались длительные, один час, второй восемь часов, оба раза были проблемы.

    Да, проблема понятна.

    Разберемся, выпустим обновление



  • Другая проблема (или ее проявление)

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

    В логе

    19.02 06:49:11.317 IH: Send SIGTERM.
    19.02 06:49:11.321 IH: Plugin exit
    19.02 06:49:16.968 IH: Run /var/lib/intrahouse-c/plugins/modbus/modbus.js modbus1
    19.02 06:49:17.270 modbus1: Plugin modbus1 has started.
    19.02 06:49:17.340 modbus1: Connected to 192.168.13.25:502
    19.02 06:49:17.340 modbus1: READ unitid=1 FC=3 address=141 (0x8d) length=1
    
    

    После третьего перезапуска плагина заработало.



  • @Erik:

    Другая проблема (или ее проявление)

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

    В логе

    > 19.02 06:49:11.317 IH: Send SIGTERM.
    > 19.02 06:49:11.321 IH: Plugin exit
    > 19.02 06:49:16.968 IH: Run /var/lib/intrahouse-c/plugins/modbus/modbus.js modbus1
    > 19.02 06:49:17.270 modbus1: Plugin modbus1 has started.
    > 19.02 06:49:17.340 modbus1: Connected to 192.168.13.25:502
    > 19.02 06:49:17.340 modbus1: READ unitid=1 FC=3 address=141 (0x8d) length=1
    > 
    

    После третьего перезапуска плагина заработало.

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

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

    Фактически это таймаут TCP сокета, поверх которого работает Modbus. Например, в системах Linux этот таймаут по умолчанию порядка 11 минут (9 keepalive проб с интервалом 75 сек)



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

    Будет если еще случай - попробую подождать подольше. 🙂

    И все равно не понятно.

    Контроллер не ограничивает создание второго, третьего подключния.

    Когда на этапе первичной настройки некорректно выставлял функцию - создавалось несколько соединений.

    Когда вносил изменения - добавлял регистры для обмены, было видно, что сервер создает второе соединение не закрыв первого, а первое само отсыхало через несколько секунд.

    А в этой ситуации что мешает создать второе соединение? И пусть первое отсыхает себе не мешая общей работоспособности.



  • @Erik:

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

    Будет если еще случай - попробую подождать подольше. 🙂

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

    @Erik:

    И все равно не понятно.

    Контроллер не ограничивает создание второго, третьего подключния.

    Когда на этапе первичной настройки некорректно выставлял функцию - создавалось несколько соединений.

    Когда вносил изменения - добавлял регистры для обмены, было видно, что сервер создает второе соединение не закрыв первого, а первое само отсыхало через несколько секунд.

    А в этой ситуации что мешает создать второе соединение? И пусть первое отсыхает себе не мешая общей работоспособности.

    Когда сервер (плагин) завершает работу штатно (в том числе при ошибке адресации), он закрывает соединение, то есть посылает пакет FIN. Поэтому такие соединения закрываются чисто.

    Когда плагин запускается - он открывает, естественно, новое соединение. Но, вероятно, что-то мешает контроллеру ответить взаимностью 🙂



  • @Erik:

    Будет если еще случай - попробую подождать подольше. 🙂

    А вот и случай.

    С 17-30 жду, года плагин соизволит самовосстановить взаимодействие.

    Судя по дебагеру, он и не пытается ни разу. Там чисто и пусто.

    Сколько подождать? 11 минут 2 раза прошло.



  • @Erik:

    @Erik:

    Будет если еще случай - попробую подождать подольше. 🙂

    А вот и случай.

    С 17-30 жду, года плагин соизволит самовосстановить взаимодействие.

    Судя по дебагеру, он и не пытается ни разу. Там чисто и пусто.

    Сколько подождать? 11 минут 2 раза прошло.

    А состояние какое? Запущен он? Время запуска - останова?



  • Был запущен, связи с контроллером не было.

    в 19-53 перезапустил руками, заработало.



  • добрый день, можно синхронизировать carel pco compact с ІН? по протоколу Modbus.



  • @Erik:

    Был запущен, связи с контроллером не было.

    в 19-53 перезапустил руками, заработало.

    Понятно. Добавим дополнительный таймаут на уровне опроса, это должно решить проблему.



  • @amgstone:

    добрый день, можно синхронизировать carel pco compact с ІН? по протоколу Modbus.

    Добрый день. Если Modbus TCP, то плагин доступен для скачивания.

    Для настройки нужны адреса регистров Modbus для carel pco compact. Ну и план, что собственно Вы хотите синхронизировать.



  • Вошел в череду прерываний связи.

    Оператор на даче с весной не справляется. видимо.

    и ни разу сама связь сервера с контроллером не восстановилась.

    Я, конечно, в перспективе увезу сервер на дачу, и проблема станет не актуальной.

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

    Это важный момент. Решите его, пожалуйста.



  • @Erik:

    Вошел в череду прерываний связи.

    Оператор на даче с весной не справляется. видимо.

    и ни разу сама связь сервера с контроллером не восстановилась.

    Я, конечно, в перспективе увезу сервер на дачу, и проблема станет не актуальной.

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

    Это важный момент. Решите его, пожалуйста.

    Добрый день.

    На гитхабе опубликован новый релиз плагина 0.0.7 https://github.com/intrahouseio/intraHouse.plugin-Modbus/releases/tag/v0.0.7

    Изменения касаются только логики работы при потере связи.

    Параметр плагина "Ожидание ответа на запрос (ms)" для нелокальных соединений желательно увеличить с 1 сек (1000 ms) до 5 и более сек.


Авторизуйтесь, чтобы ответить