Зачем в PMP20 включать поддержание сетевого соединения?
Соединение с установлением соединения устроено так, что обрыв линии сам по себе не заметен: пока никто ничего не передаёт, обе стороны считают связь живой. Поэтому в блоке параметров сокета есть отдельное поле — поддержание соединения. Нулевое значение выключает функцию, ненулевое включает.
Что происходит при включённой функции. Контроллер периодически отправляет удалённой стороне служебное сообщение поддержания связи. Если ответа нет, узел считается недоступным, и контроллер поднимает флаг нештатной ситуации соединения. Время срабатывания — от одной до пяти минут.
Именно этот флаг и делает функцию полезной: по нему строится восстановление связи. Стандартная схема из руководства — закрыть сокет и открыть его заново, когда флаг нештатной ситуации поднялся. Без такой обработки контроллер после выдёргивания патч-корда останется с «мёртвым» сокетом, а данные в регистрах замрут на последних принятых значениях — самый опасный вид отказа, потому что на экране всё выглядит рабочим.
Что учесть при проектировании. Задержка обнаружения в одну–пять минут для управляющих связей слишком велика. Если по сети идут команды или блокировки, делайте собственный контроль: счётчик, который контроллер шлёт в удалённое устройство и читает обратно, либо признак свежести данных по времени последнего успешного приёма. Поддержание соединения тогда остаётся страховкой второго уровня — оно закрывает случай, когда линия оборвалась, а обмена в этот момент не было.
На стороне логики управления обязательно предусмотрите поведение при потере связи: переход в безопасное состояние, а не работа по устаревшим данным.
Прикреплённая документация
Георгий Жуков
Ведущий инженер