Конкретный пример - устройство, подключенное к PLC-порту перестало работать:
1. Панель отправляет запрос и не получает ответ в течение времени PFW38 мс - детектируется отсутствие ответа: PSW72 увеличивается на +1
2. Панель отправляет повторный запрос
3. Если на X последовательных запросов (где X =
Повторов в настройках порта) нет ответов, то
- бит PSB51 устанавливается в TRUE на некоторое (зависящее от ряда факторов, в т.ч. таймаута) время
- PSW71 увеличивается на +1 (сеанс опроса не удался). Фактически, при полном отсутствии связи за все время работы PSW71 = PSW72 / Повторов.
- в регистр PSW76 записывается адрес устройства, с которым не состоялся сеанс опроса
После этого начинается следующий сеанс обмена: сброс PSB51, отправка запроса (от следующего элемента / макроса) и так далее.
Если требуется тщательный контроль обмена - то проще весь обмен перенести в макросы: функции Read(s), Write(s) возвращают соответствующий бит (TRUE - на запрос пришел корректный ответ, FALSE - что-то пошло не так).
Кроме того, можно будет оптимизировать обмен за счет групповых запросов.