Лучше, конечно, говорить о вызове, а не об обращении. «Обновлять» (а правильнее — присваивать значение) обязательно только с переменными типа VAR_IN_OUT. На примере с таймером можно один раз сделать timer(IN := TRUE, PT := T#3s), а дальше просто timer(); или даже timer; (за такое я хочу убивать), чтобы таймер работал. Однако timer.Q уже не будет вызовом ФБ таймера, это обращение к переменной ФБ без вызова.т.е. обращение к t.Q для проверки его состояния не является обращением к самому таймеру?Отвыкаем писать бессмысленный код. Всё сводится к t(IN := NOT t.Q, PT := T#2s). Самосброс называется. Идиома.Код:VAR_GLOBAL f: BOOL := FALSE; t: Standard.TON; END_VAR t(IN:=f, PT:=T#2S); IF (t.Q) THEN f := FALSE; ELSE f := TRUE; END_IF




Ответить с цитированием