Цитата Сообщение от Dimensy Посмотреть сообщение
Функциональный блок работает только в момент его вызова. Все остальное время мы пользуемся результатом его работы.
Например
Код:
var_input //объявление входных переменных
       E : bool; 
    end_var

    var_output //объявление выходных переменных
       Q : bool; 
    end_var

    var //объявление локальных переменных
       RTrig : SYS.RTRIG; 
    end_var

    RTrig.I := E;
    if not RTrig.Q then RТrig(); end_if
    Q := RTrig.Q;
Здесь триггер взведется по фронту Е и останется таким навсегда (ну, или пока мы его где-нибудь в другом месте опять не вызовем)
Был грешен... Вы мне открыли глаза.
Проверил на codesys 3.5, выход триггера остаётся взведенным до его повторного вызова. Я всегда думал, что он работает до окончания цикла программы/подпрограммы. Т.е. по циклу программы он сбросится только когда снова в него упрется...

Или я знал это раньше, или не знал и забыл)

Надо это всё переосмыслить. Так знал я это или нет...