Вход

Просмотр полной версии : Странное поведение SFC



ВладОвен
04.11.2024, 09:56
Привет.
Недавно обнаружил странное поведение программы на языке SFC.

Как мы знаем в каждом шаге сначала однократно выполняется действие Entry.
Потом длительно выполняется код самого шага, до выполнения условия перехода.
Ну а затем однократно выполняется действие Exit.

Но вот пример программы, где НЕ выполняется действие Entry в шаге.

79817

Это касается шага check и его действия Entry.
В этом действии увеличивается указатель на массив, и если выходит за пределы, то он устанавливается в начальную позицию.

79818

Все работает ровно. Контрольный счетчик в шаге counter постоянно увеличивается.
Но если вы сбросите один из элементов массива, например, 5, то программа остановится.

79819

Действие Entry не выполняется. Индекс не увеличивается, контрольный счетчик не увеличивается.

Программа написана под Raspberry, но она ведет себя также и на других ПЛК.

1exan
04.11.2024, 15:15
...

Действие Entry не выполняется. Индекс не увеличивается, контрольный счетчик не увеличивается.

Программа написана под Raspberry, но она ведет себя также и на других ПЛК.

Да, есть такая фича (не уверен, что это можно назвать багом).
Если вставить пустой шаг-переход в конце цепи (перед переходом на "check") - данный эффект пропадает.
Возможно когда из шага производится переход в этот-же шаг - это не считается за смену шага и входное действие, соответственно, не выполняется