Можно изменить содержимое регистра временного хранения информации с помощью функции 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, результатом является просто логическое Выполнение операции "И" текущего содержимого и andMask
. Если значение andMask
0, результат равен значению orMask
.
Содержимое регистра может быть считано при помощи функции read
с целевым набором к 'holdingregs'
. Они могли, однако, быть изменены впоследствии, когда диспетчер сканирует его пользовательскую программу логики.
Синтаксис для операции записи маски для регистров временного хранения информации:
maskWrite(obj, address, andMask, orMask)
Если вы хотите определять ID сервера, используйте:
maskWrite(obj, address, andMask, orMask, serverId)
Параметр obj
является именем объекта MODBUS. Примеры принимают, что вы создали объект MODBUS, m
. Для получения информации о создании объекта смотрите, Создают Связь MODBUS.
address
является адресом регистра, чтобы выполнить запись маски на. Параметр andMask
является значением AND
, чтобы использовать в операции записи маски. Допустимой областью значений является 0–65535
. Параметр orMask
является значением OR
, чтобы использовать в операции записи маски. Допустимой областью значений является 0–65535
.
Этот пример устанавливает бит 0 в адресе 20 и выполняет операцию записи маски. Поскольку andMask
является 6, который очищает все биты за исключением битов 1 и 2. Биты 1 и 2 сохраняются.
andMask = 6 orMask = 0 maskWrite(m,20,andMask,orMask)