Привет.
Недавно обнаружил странное поведение программы на языке SFC.
Как мы знаем в каждом шаге сначала однократно выполняется действие Entry.
Потом длительно выполняется код самого шага, до выполнения условия перехода.
Ну а затем однократно выполняется действие Exit.
Но вот пример программы, где НЕ выполняется действие Entry в шаге.
Вложение 79817
Это касается шага check и его действия Entry.
В этом действии увеличивается указатель на массив, и если выходит за пределы, то он устанавливается в начальную позицию.
Вложение 79818
Все работает ровно. Контрольный счетчик в шаге counter постоянно увеличивается.
Но если вы сбросите один из элементов массива, например, 5, то программа остановится.
Вложение 79819
Действие Entry не выполняется. Индекс не увеличивается, контрольный счетчик не увеличивается.
Программа написана под Raspberry, но она ведет себя также и на других ПЛК.

