Здравствуйте.
Методы для работы с битами переменной рассмотрены по ссылке (https://simple-scada.com/help/script/work-bits.html). Чтобы извлечь нужный бит из значения переменной, нужно использовать функцию GetBit (https://simple-scada.com/help/script/getbit.html). Чтобы записать значение бита в переменную, нужно использовать функцию SetBit (https://simple-scada.com/help/script/setbit.html).
Для написания универсального скрипта (https://simple-scada.com/help/script/script-types.html) нужно создать внутренние переменные с именами, как у внешних переменных + приставка (например "_FilterBit"). Например, для переменной "vrMyVar" -> "vrMyVar_FilterBit" и т.д. Далее создать скрипт с типом события "Изменились переменные (https://simple-scada.com/help/script/changed-the-variables.html)", добавить в список скрипта все необходимые внешние переменные и использовать следующий код скрипта:
var
aSetBit : integer;
aVar: TM_Variable;
begin
aSetBit := 0;
aVar := GetVariableByName(Variable.Name + '_FilterBit');
if aVar <> nil then // если переменная существует
begin
aSetBit := SetBit(aSetBit, 2, GetBit(Variable.Value, 0)); // записать значение 1 бита переменной "vrMyVar" в 3 бит переменной aSetBit
aSetBit := SetBit(aSetBit, 3, GetBit(Variable.Value, 1)); // записать значение 2 бита переменной "vrMyVar" в 4 бит переменной aSetBit
aVar.Value := aSetBit; // записать полученный результат в переменную "vrMyVar_FilterBit"
end;
end.
Также обратите внимание, что при необходимости целочисленные внешние переменные можно разбить на биты и работать с каждым битом отдельно (https://simple-scada.com/help/manual/extvarbits.html).