Предположим, у меня есть функциональный блок POU1
, который имеет локальные переменные val1: INT
и val2: INT
, например.
FUNCTION_BLOCK POU1
VAR
val1: INT := 1;
val2: INT := 1;
END_VAR
Теперь предположим, что пользователь FB объявляет его как RETAIN
, например.
VAR RETAIN
p1: POU1;
END_VAR
p1.val1 := 2;
p1.val2 := 2;
Это приведет к тому, что и val1
, и val2
сохранят значение 2 в случае теплого сброса, но что, если я не хочу, чтобы это произошло, чтобы сказать val2
, то есть я хочу, чтобы val1
сохранил свое текущее значение, но val2
был сброшен в случай теплого сброса (если пользователь объявляет мой FB как RETAIN
, иначе я хочу, чтобы оба сбрасывались)
Как я могу этого добиться? (Также тот же вопрос касается PERSISTENT
)
PS. Я пробовал {attribute 'init_on_onlchange'}
и {attribute 'no_copy'}
, но они ничего не дали (может быть, я их неправильно использовал?). Я также попытался создать дополнительный FB с {attribute 'no_instance_in_retain'}
и добавить его как локальную переменную POU1
, но это привело к ошибке сборки.
VAR_TEMP
? - person Sergey Romanov   schedule 27.07.2020