Цитата Сообщение от slonegd Посмотреть сообщение
Хорошим тоном в программировании является не использовать каких либо чисел. Ваши числа 16, 17 по сути константы из списка. Создайте перечисление в типах данных и назовите все ваши шаги(состояния) подпрограммы. Причем числа им присваивать не обязательно компилятор сделает сам. Предположим перечисление назовем State. Объявим тип вашего Step как перечисление. (Step: State Теперь Step может принимать только значения из перечисления. Если назвать элементы перечислений со смыслом, то можно избавиться от комментариев типа
16: (*Запись*)
Теперь эта строка будет выглядеть
State.Write:
А переход на новый шаг оформится так:
Step:=State.MB16Func;
Write и MB16Func - это просто примеры элементов из перечисления.
Подобный подход делает код не только более понятным, но и предотвращает ошибки, когда вы случайно записываете в step какое-то не то значение или выходите за границы.

Действие в 16 степе логично не делать отдельным шагом, а впихнуть в 17:

Это так называемое входное действие, которое выполняется только один раз при переходе к этому шагу.
Вообще есть в codesys SFC язык, который эту концепцию в графическом виде показывает. Сам не пробовал, но надо бы уже.
СПС, за ответы