Я столкнулся с то ли косяком, то ли багом. Портирую из CodeSys 3.5 среднесложный (много TON/TOF/TP/R_TRIG/F_TRIG) код, где выходные переменные используются заодно и как переменные в теле FB.
Привожу синтетический пример.
У нас объявлены как VAR_OUT переменные RelayPower, RelayDir
Код в теле FB написан так:
RelayPower := lalala (разные сигналы от таймеров и условий включения)
Дальше там же вызываю таймер, условный, используя только что вычисленное
RelayPower
TOF1(I :=
RelayPower, T := t#500ms);
...и там же выдаю на выход
RelayDir условно так:
RelayDir := TOF1.Q AND lalalala;
Наблюдаю в CodeSys 3.5:
RelayPower выключилось,
RelayDir продложает работать некоторое время по TOF
Наблюдаю в OWL:
RelayPower и
RelayDir выключились ОБА, потом
RelayDir включается и дорабатывает по TOF
Пытаюсь ща понять, это мой баг или баг OWL.
Приложил кусок кода. Уже портированный на OWL.
Clip.gif