С таким пошаговым алгоритмом хорошо справляются языки SFC или ST(через оператор CASE).
Но тут есть свои нюансы в корректном программировании шагов.
Если Вы засунули такие фб,как таймеры и т.п. внутрь шагов,то необходимо позаботиться об обнулении состояния этих фб.
(например в SFC можно в каждом шаге создать выходное действие, и вызвать еще раз обнуляя,например- timer(IN:=FALSE);
в языке ST правильнее все подобные фб ставить вне тела CASE или IF,чтобы эти фб выполнялись каждый цикл программы
и фб сам обнулится при IN:=0)
По поводу программы для оператора:
сделайте структуру с необходимыми параметрами.
создайте одномерный массив таких структур.