Цитата Сообщение от Игорь Петров Посмотреть сообщение
ФБ на SFC никогда не заканчивается в принципе. Если он прошагал по всем шагам, то должен вернуться на начальный шаг. В конце должен быть переход на начальный шаг. Он ставится по умолчанию при создании нового ФБ.

Когда вызывается ФБ на SFC, то это совершенно не означает что он пройдет по всем шагам и отдаст управление. Он выполнит только шаги, которые имеют маркер активности и сразу отдаст управление вызывающему POU. При этом он проверит условия переходов. Если некий переход разрешен, то маркер(ы) активности перейдет на соотв-й шаг, который будет работать при след вызове. Положение маркеров запоминается между вызовами.

Т.е. SFC это машина состояний. Работает по тактам = вызовам. Она постоянно стоит в некотором состоянии и переходит из одного состояния в другое по условиям переходов. Но выполнение никогда не заканчивается, как собственно и вся программа ПЛК. Это же не вычислительный алгоритм: высчитал результат – закончил, выключился из розетки
То, что начальный шаг ставится по умолчанию - это понятно. По поводу RETURN уже залез в документацию и понял, что c SFC такой фокус не прокатит.

Вернусь к вопросу о сетевых переменных. Сегодня попробовал сделать так, как в выложенном мне примере. Вначале ничего не получалось - переменные показывали только свое состояние применительно к каждому контроллеру. Потом неожиданно контроллер №2 увидел значения переменных, которые задал контроллер №1, т.е. собственно этого я и хотел добиться. Но потом пришлось поправить программку одного из контроллеров, и после этого переменные снова не хотят корректно отображаться. Может быть есть какая-то последовательность запуска контроллеров?

И еще заметил пару особенностей, которые появились после добавления в проект сетевых переменных:
1. При попытке записать пограмму в контроллер нередко передача данных "подвисает", после чего теряется связь с контроллером и он перегружается. Лечится нажатием кнопки "Сброс" и последующим удержанием кнопки "Работа". Об этой проблеме читал на этом форуме, и хотелось бы узнать, как скоро она решится.
2. Почему-то не получается в работающей на контрллере программы задать точку останова для отладки. Если щалкаю мышкой на строке кода, контроллер уходит в перезагрузку.