
Сообщение от
stdenits
Переменная ERR содержит флаги возникших ошибок вввиде битов, установленных в 1, например, при превышении уставки или при ошибке DECODE_FLOAT.
Функция set_state_value_16b() позволяет без изменения остальных битов переменной variable устанавливать (обнулять или выставлять) новые значения только для определенных битов с использованием маски.
Вроде так должно быть и функция начинает работать 1 Работа функции.jpg
Код:
FUNCTION set_state_value_16b : WORD
VAR_INPUT
variable : POINTER TO WORD;
mask : WORD;
val : WORD;
END_VAR
VAR
END_VAR
set_state_value_16b := (variable^ AND NOT mask) OR (val AND mask);