Можно изменить содержимое регистра хранения с помощью maskWrite функция. Функция может устанавливать или очищать отдельные биты в конкретном регистре хранения. Она представляет собой операцию чтения/изменения/записи и использует комбинацию маски И, маски ИЛИ и текущего содержимого регистра.
Алгоритм функции работает следующим образом:
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)
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)