exponenta event banner

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

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