Как правильно закрыть сетевое соединение в PMP20?

Проверено экспертом Опубликовано: 01.07.2025 2064 просмотра Помогло 69%

Для завершения связи служит инструкция S_CLOSE. У неё один операнд — номер закрываемого сокета в диапазоне от K0 до K63, задаётся константой или регистром. Условие выполнения — нарастающий фронт, и применяется она только в паре с инструкцией открытия сокета.

Что происходит после выполнения. Инструкции отправки, приёма и обмена по протоколу, работающие с этим же номером сокета, выполняться больше не могут. Сокет освобождается, и его номер можно открыть заново с другими параметрами.

Когда закрывать соединение обязательно:

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

Типовая цепочка восстановления связи, которую руководство приводит в примерах: строка закрытия выполняется по совпадению трёх условий — поднят флаг нештатной ситуации, не поднят флаг закрытия, идёт такт от системного импульса; следующая строка снова открывает сокет, когда флаг «подключено» снят. Такая пара работает сама, без вмешательства наладчика: выдернули патч-корд, вставили обратно — связь восстановилась.

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

Прикреплённая документация

Георгий Жуков Георгий Жуков Ведущий инженер

Этот ответ был полезен?

Не нашли ответ?

Инженер сервисной службы ответит на почту. Вопросы, которые повторяются, мы публикуем в базе знаний — без ваших контактов.

Вопрос из раздела Как правильно закрыть сетевое соединение в PMP20?