Как работает тайм-аут приёма в сетевых инструкциях PMP20?
Тайм-аут задаётся в блоке параметров сокета, измеряется десятками миллисекунд и принимает значения от 0 до 65536. Нулевое значение отключает контроль времени: контроллер будет ждать данные бесконечно. Любое ненулевое значение включает контроль.
Единица измерения — главный источник ошибок. Записанное число умножается на 10 миллисекунд: значение 30 даёт выдержку 300 миллисекунд, значение 100 — одну секунду. Наладчик, записавший «1000» в расчёте на секунду, получит десять секунд ожидания и потом долго ищет, почему цикл опроса стал вязким.
Как ведёт себя инструкция. Руководство разбирает случай с выдержкой 300 миллисекунд: контроллер ждёт данные, и, как только они пришли, обмен завершается сразу — оставшееся время не выжидается. Если за 300 миллисекунд данные не пришли, инструкция завершается и сообщает об ошибке тайм-аута приёма.
Тайм-аут действует на две инструкции: приём в свободном формате и обмен по сетевому варианту протокола. На отправку он не влияет.
Как выбрать значение. Ориентируйтесь на реальное время ответа прибора с запасом в два-три раза, а не на «покрасивее». Слишком короткая выдержка даёт ложные ошибки на медленных приборах и загруженной сети; слишком длинная — превращает один неотвечающий прибор в задержку всего опроса, потому что каждая попытка съедает полную выдержку.
Отключать тайм-аут нулём стоит только в одном случае: контроллер работает сервером и просто ждёт, когда мастер что-нибудь пришлёт. В опросе приборов ноль недопустим — одна оборванная линия остановит обмен насовсем.
Прикреплённая документация
Георгий Жуков
Ведущий инженер