Изменить содержимое регистра хранения можно с помощью 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)