Данный CODESYS форум содержит архивную копию русской ветви только для чтения. Для создания сообщений пожалуйста используйте актуальную международную платформу CODESYS Forum. Close

Я не понимаю чего-то важного в логике работы SFC

Общий
Rapucha
2015-12-06
2015-12-22
  • Rapucha

    Rapucha - 2015-12-06

    Видимо, я плохо понял правила вычисления следующего активного шага. Проблемы возникли, когда я сделал в SFC шаг, "нарисованный" на SFC же.
    Пример выглядит так: всего два шага с пререходами по TRUE. Второй шаг -- написан на SFC и состоит также из двух шагов с переходами по TRUE.
    Как-то так:

    OUT1
    OUT2     
        in1
        in2
    

    Порядок выполнения шагов был для меня неожиданностью:
    OUT1->in1->OUT1->in2->->OUT1...

    Из документации я вынес, что вычисление следующего активного шага происходит на основе условий перехода.

    Казалось бы, все должно зациклиться внутри второго шага,
    in1->in2->in1->.... Ведь переход in2->in1 всегда разрешен.

    В то же время, из шага OUT2 выход также разрешен, и должен бы произойти на очередном такте. Так что в поведении системы есть логика

    Но в общем, очевидно что я не понимаю чего-то важного про SFC. Возможно, даже чего-то простого.

    Каково формальное правило перехода из внутреннего шага в моем примере, которое объясняет происходящее?

    Спасибо.

     
  • CDSMaks

    CDSMaks - 2015-12-08

    А можно привести скриншоты всех участвующих POU? А то по описанию не все понятно.

     
  • Rapucha

    Rapucha - 2015-12-08

    CDSMaks писал(а):
    А можно привести скриншоты всех участвующих POU? А то по описанию не все понятно.

    Конечно:

    IMG: 2015

     
  • CDSMaks

    CDSMaks - 2015-12-08

    Подчиненный шаг всегда выполняется только то время, которое активен шаг-родитель. (Это если не брать stored action). Если выход из шага родителя TRUE, то в подчиненном шаге успеет выполнится только один текущий шаг, на котором стоит курсор.
    В вашем случае Out1->Out2->In1(т.к. выход из шага true, то курсор перемещается на In2, но не выполняется)->Out1->Out2->In2-> и по-кругу.

     
  • Rapucha

    Rapucha - 2015-12-08

    CDSMaks писал(а):
    Подчиненный шаг всегда выполняется только то время, которое активен шаг-родитель.

    А это описано где-то? Я что-то даже в МЭКовском стандарте не вижу подробностей о вложенных SFC шагах((

     
  • CDSMaks

    CDSMaks - 2015-12-09

    Вот, например, с сайта beckhoff, описание классификаторов:
    https://infosys.beckhoff.com/english.ph ... 53899.html

    Встроенное в шаг действие классифицируется как non-stored, правда без еще одного завершающего выполнения.

     
  • Rapucha

    Rapucha - 2015-12-10

    Это все-таки про экшены.

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

     
  • CDSMaks

    CDSMaks - 2015-12-10

    Rapucha писал(а):
    Это все-таки про экшены.
    Для меня очень неочевидным оказалось то, что при вложенные SFC шаги не получают тактов, потому что их содержащий внешний шаг теряет маркер.
    Это больше претензии к стандарту, на самом деле.

    А все, что вкладывается, это же и есть actions. Только они называются Step actions, в отличие от IEC actions и они расширяют стандарт МЭК. Т.е. с ними так и надо работать, входной (аналог pulse action), вложенный (аналог non-stored action, без еще одного выполнения на выходе) и выходной.
    Вот, что про вложенный (или main) action пишет помощь CODESYS:

    Цитата:
    CODESYS executes this action when the step is active and any entry actions have already been processed. However, as opposed to IEC actions (see above), these step actions a are not executed a second time when the step is deactivated. In addition, you cannot use qualifiers here.
    You add an action to a step with the Main action element property (1). It is marked with a red triangle in the upper right corner of the step box.

     
  • Rapucha

    Rapucha - 2015-12-21

    CDSMaks писал(а):
    Вот, что про вложенный (или main) action пишет помощь CODESYS:

    Хм, а где это он такое пишет?.. это, наверное, 3.5?

    Ну и потом, всё-таки МЭК прямо разрешает писать шаг SFC на SFC. и, кажется, не делает таких уточнений.

     
  • CDSMaks

    CDSMaks - 2015-12-22

    Rapucha писал(а):
    Хм, а где это он такое пишет?.. это, наверное, 3.5?

    Да, 3.5.
    В 2.3 шаг с action внутри называется simplified. Там вообще более ограниченный редактор. В 3.5 нет разделения шагов по типам, для любого шага можно и вложенный action и IEC action добавлять.