exponenta event banner

maskWrite

Выполнение операции записи маски для регистра хранения

Описание

пример

maskWrite(m,address,andMask,orMask) записывает данные в объект MODBUS m в реестр держателей по адресу address, используя указанные значения маски. Функция может устанавливать или очищать отдельные биты в конкретном регистре хранения. Она представляет собой операцию чтения/изменения/записи и использует комбинацию маски И, маски ИЛИ и текущего содержимого регистра.

пример

maskWrite(m,address,andMask,orMask,serverId) дополнительно определяет serverId в качестве адреса сервера для отправки команды write.

Примеры

свернуть все

Можно изменить содержимое регистра хранения с помощью maskWrite функция. Функция может устанавливать или очищать отдельные биты в конкретном регистре хранения. Она представляет собой операцию чтения/изменения/записи и использует комбинацию маски И, маски ИЛИ и текущего содержимого регистра.

Создать AND и OR переменные.

andMask = 6
orMask = 0

Установите бит 0 по адресу 20 и выполните операцию записи маски. С момента andMask является 6, который очищает все биты, кроме битов 1 и 2. Биты 1 и 2 сохраняются.

maskWrite(m,20,andMask,orMask)

Используйте serverId для указания адреса сервера, на который отправляется команда mask write.

Установите бит 0 по адресу 20 и выполните операцию записи маски по идентификатору 3 сервера.

maskWrite(m,20,6,0,3)

Входные аргументы

свернуть все

Адрес регистра для выполнения операции записи маски, указанный как двойной. Адрес должен быть первым аргументом после имени объекта. Этот пример устанавливает бит 0 по адресу 20 и выполняет операцию записи маски.

Пример: maskWrite(m,20,andMask,orMask)

Типы данных: double

Значение AND, используемое в операции записи маски, задается как двойное. andMask должен быть вторым аргументом после имени объекта. Допустимый диапазон: 0–65535.

Этот пример устанавливает бит 0 по адресу 20 и выполняет операцию записи маски, используя 6 в качестве значения И.

Пример: maskWrite(m,20,6,0)

Типы данных: double

Значение OR, используемое в операции записи маски, задается как двойное. orMask должен быть третьим аргументом после имени объекта. Допустимый диапазон: 0–65535.

Этот пример устанавливает бит 0 по адресу 20 и выполняет операцию записи маски, используя 0 в качестве значения ИЛИ.

Пример: maskWrite(m,20,6,0)

Типы данных: double

Адрес сервера для отправки команды записи маски, указанный как двойной. Идентификатор сервера должен быть указан после имени объекта, адреса, маски AND и маски OR. Если не указать serverId, значение по умолчанию 1 используется. Допустимые значения: 0–247, с 0 является адресом широковещательной передачи. Этот пример устанавливает бит 0 по адресу 20 и выполняет операцию записи маски по идентификатору 3 сервера.

Пример: maskWrite(m,20,6,0,3)

Типы данных: double

Совет

Алгоритм функции работает следующим образом:

 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 значение.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2017a