Битовая маска — компонент. Служит для реализации маскирования — выбора и установки отдельных битов или наборов из нескольких битов из двоичной строки или числа (позволяет осуществлять управление устройствами, имеющих 2 состояния).
Внешний вид компонента
Режим проектировщика | Режим оператора |
---|---|
Параметры:
Входные
- Импульс — при подаче синхроимпульса, на выходе формирует выставленную маску.
Выходные
- Маска — десятичное число, соответствующее битовой маске.
Настраиваемые свойства:
Частные свойства (в скобках значение, установленное по умолчанию):
- Mask (1) — текущее десятичное значение маски.
- BitQuantity (1) — установка количества разрядов маски.
- FalseValue (0) — обозначение логического нуля.
- TrueValue (1) — обозначение логической единицы.
- Bitsname (Биты) — установка названия строки с битами.
- ValuesName (Значение) — установка названия строки значения битов.
Программирование
При использовании компонента в сценарии и программируемом компоненте (скрипте) необходимо учитывать диапазоны значений подаваемых на входные ножки компонента, диапазоны значений свойств компонента, а также диапазоны значений параметров методов компонента.
Настраиваемые свойства:
Частные свойства (в скобках значение, установленное по умолчанию):
- LONG Mask — установка и чтение значения маски (любое целое число типа Long).
- LONG BitQuantity — установка и чтение количества разрядов (любое число).
- BSTR FalseValue — установка и чтение обозначения логического нуля (строка).
- BSTR TrueValue — установка и чтение обозначения логической единицы (строка).
- BSTR BitsName — установка и чтение названия битов (строка).
- BSTR ValuesName — установка и чтение названий значений битов (строка).
Методы:
- LONG Bit(LONG num) — возвращает значение бита.
- void Bit(LONG num, LONG newVal) — устанавливает значение бита.
- Apply(void) — устанавливает применение маски.
Математическое описание
Битовая маска – набор битов, который при помощи поразрядной конъюнкции или дизъюнкции накладывается на набор битов, в котором требуется установить или сбросить некоторые разряды.
Например, в числе 011011112 требуется скинуть пятый бит. Для этого мы делаем маску 110111112 и с помощью поразрядной операцией И производим логическое умножение этих двоичных чисел.
Поразрядное И | 01101111 |
11011111 | |
Результат | 01001111 |
Если в том же самом числе, 011011112 требуется установить четвертый бит, то это производится при помощи поразрядной операцией ИЛИ. Для этого мы создаем маску 000100002, далее производим логическое сложение.
Поразрядное ИЛИ | 01101111 |
00010000 | |
Результат | 01111111 |
Пример
Проект в SCADA ZETView
В этой схеме компонент Битовая маска производит операцию маскирование согласно установленным битам. Таймер служит для подачи импульса, по которому произойдет применение маски. Цифровой индикатор нужен для отображения маски в десятичной форме. Данный компонент используется для создания различных проектов, в том числе таких как анализатор спектра ZET 017 U16.
Результат работы проекта