Измените содержимое регистра временного хранения информации Используя запись маски

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