Не архитектура ПЛК Вам мешает, а накопленный за годы багаж знаний и опыт. :)
ПЛК работает по другому. Напишите в проекте:
a:=a+1; И Вы увидите, что a будет постоянно инкриментироваться, пока не переполнится. Это и есть внутернний цикл ПЛК.
Программа выполняется сверху вниз, записываются результаты, считывается область входов-выходов, и программа снова выполняется сверху вниз.
Таймеры не надо отслеживать - таймеры отследятся сами при очередном проходе.
Единственно для чего Вам нужен цикл - отключить работу логики когда условия выполнятся 100 раз.
Для организации выполнения условия циклы не нужны. Я обычно использовал обыкновенный If
Проще всего Вашу задачу вообще реализовать на SFC. Три блока, три условия перехода, три таймера. При выходе из последнего блока инкриментируем количество прошедших циклов.