Дико извиняюсь, что встреваю в дискуссию. Таймер WDT в ПЛК реализован аппаратно внутри процессора AT91RM9200. Сброс WDT идет в конце цикла плк. Пока не было ситуации что бы WDT не срабатывал как положено.
Программа содержащие циклы while, repeat, for время в нахождения которых превышает время цикла ПЛК - заведомо неправильна. Если время внутри цикла сканирования превысит время сброса WDT - программа перезагрузится.
Цикл организованный средствами SFC - не зависнет т.к. после каждого шага - конец цикла и сброс WDT.
И наконец - РЕАЛЬНАЯ проблема - пользователь пишет программу в которой при некотором сочетании входных элементов и параметров происходит подвисание срабатывает WDT, программа загружается и снова WDT - и так бесконечно. Вот от таких вещей надо защитится