Заведите переменную, которая устанавливается в TRUE при первом вызове ф.блока. И в теле программы ФБ используйте ее состояние
Код:
FUNCTION_BLOCK My1
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
init: BOOL; (*Флаг инициализации*)
END_VAR
IF NOT init THEN
(* Здесь
..............................
.............................
............................
код который нужен при первом вызове программы*)
init:=TRUE;
END_IF
(*Здесь
..................................
.................................
................................
основной код*)
Или так, если при первом вызове ФБ нужна только инициализация, например, каких-либо переменных, а основной код нужно выполнять только со второго вызова ФБ
Код:
IF NOT init THEN
(* Здесь
..............................
.............................
............................
код который нужен при первом вызове программы*)
init:=TRUE;
ELSE
(*Здесь
..................................
.................................
................................
основной код*)
END_IF
Если переменную "init" сделать VAR_INPUT, то ее можно сбрасывать при вызове ФБ в нужный момент времени "...появляется сигнал (Допустим нажали кнопку) и мой функциональный блок получил разрешение работать. Заходит программа в блок первый раз и выполняет разовые настройки переменных, и циклически работает с этим блок. Отпустили кнопку, потом опять нажали. Оно снова выполнило разовые настройки (сбросило переменные после предыдущей работы локальные и глобальны) и пошло дальше работать..."