Насчёт "пятерки состояний" - где-то в описалове на Simatic рассмотрен вопрос синхронизации в похожем раскладе. Идея примерно такая - цикл начинается с вывода, затем через какое-то время ввод, далее делается обработка, подготовка значений для вывода, ну и далее ожидание начала следующего цикла. При этом конечные автоматы, которые в обработке, непосредственно входы сами не читают и выходами не дёргают - они оперируют значениями от и для подсистемы ввода/вывода.