Изменение содержимого регистра хранения с помощью записи маски

Изменить содержимое регистра хранения можно с помощью maskWrite функция. Функция может устанавливать или удалять отдельные биты в определенном регистре удержания. Это операция чтения/изменения/записи, в которой используется комбинация маски AND, маски OR и текущего содержимого регистра.

Алгоритм функции работает следующим образом:

 Result = (register value AND andMask) OR (orMask AND (NOT andMask))

Для примера:

                 Hex    Binary
Current contents  12   0001 0010
And_Mask          F2   1111 0010
Or_Mask           25   0010 0101
(NOT And_Mask)    0D   0000 1101

Result            17   0001 0111

Если на orMask значение 0, результатом является просто логический ANDing текущего содержимого и andMask. Если на andMask значение 0, результат равен orMask значение.

Содержимое регистра можно считать при помощи read функция с целевым набором, равным 'holdingregs'. Однако они могут быть изменены впоследствии, когда контроллер сканирует свою пользовательскую логическую программу.

Синтаксис операции записи маски для хранения регистров:

maskWrite(obj, address, andMask, orMask)

Если необходимо назначить идентификатор сервера, используйте:

maskWrite(obj, address, andMask, orMask, serverId)

The obj параметр является именем объекта MODBUS. Примеры предполагают, что вы создали объект MODBUS, m. Дополнительные сведения о создании объекта см. в разделе Создание соединения MODBUS.

The address - адрес регистра для выполнения записи в маску. The andMask параметр является AND значение для использования в операции записи маски. Допустимая область значений значений 0–65535. The orMask параметр является OR значение для использования в операции записи маски. Допустимая область значений значений 0–65535.

Этот пример устанавливает бит 0 по адресу 20 и выполняет операцию записи маски. Начиная с andMask является 6, которая очищает все биты, кроме битов 1 и 2. Биты 1 и 2 сохранены.

andMask = 6
orMask = 0

maskWrite(m,20,andMask,orMask)