writeRead

Выполните операцию записи и чтения для групп регистров хранения в одной транзакции MODBUS

Описание

пример

writeRead(m,writeAddress,values,readAddress,readCount) записывает данные в объект MODBUS m по начальному адресу writeAddress использование значений для записи values, а затем считывает данные по начальному адресу readAddress использование количества значений для чтения readCount.

Эта функция выполняет комбинацию одной операции записи и одной операции чтения для групп регистров хранения в одной транзакции MODBUS. Операция записи всегда выполняется перед чтением. Область значений адресов для чтения должен быть непрерывным, а область значений адресов для записи должен быть непрерывным, но каждый указан независимо и может или не перекрываться.

пример

writeRead(m,writeAddress,values,readAddress,readCount,serverId) дополнительно использует serverId как адрес сервера, на который отправляется команда.

пример

writeRead(m,writeAddress,values,writePrecision,readAddress,readCount,readPrecision) добавляет дополнительные точности для операций записи и чтения. The writePrecision и readPrecision аргументы определяют формат данных регистра, считываемого или записываемого на сервере MODBUS.

Примеры

свернуть все

The writeRead Функция предназначена для выполнения комбинации одной операции записи и одной операции чтения групп регистров хранения в одной транзакции MODBUS. Операция записи всегда выполняется перед чтением. Область значений адресов для чтения должен быть непрерывным, а область значений адресов для записи должен быть непрерывным, но каждый указан независимо и может или не перекрываться.

Запишите 2 регистра хранения, начиная с адреса 300, и считайте 4 регистра хранения, начиная с адреса 17250.

writeRead(m,300,[500 1000],17250,4)
ans = 

   35647   48923   50873   60892

Если операция успешна, она возвращает массив типа double, каждый из которых представляет 16-битное значение регистра, где первое значение в векторе соответствует значению регистра по адресу, указанному в readAddress.

Можно опционально создать переменные для значений, которые будут записаны, вместо включения массива значений в синтаксис функции. Пример можно записать таким образом, используя переменную для значений:

values = [500 1000];
writeRead(m,300,values,17250,4)
ans = 

   35647   58923   50873   60892

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

Запишите 3 регистра хранения, начиная с адреса 400, и считайте 4 регистра хранения, начиная с адреса 52008, с идентификатора 6 сервера.

writeRead(m,400,[1024 512 680],52008,4,6)
ans = 

   38629   24735   29456   39470

Используйте writePrecision и readPrecision аргументы для определения формата данных регистра, считываемого или записываемого на сервере MODBUS.

Запишите 3 регистра хранения, начиная с адреса 500, и считайте 6 регистров хранения, начиная с адреса 52008, с идентификатора 6 сервера. Задайте writePrecision от 'uint64' и a readPrecision от 'uint32'.

writeRead(m,500,[1024 512 680],'uint64',52008,6,'uint32',6)
ans = 

   38629   24735   29456   39470   33434   29484

Входные параметры

свернуть все

Начальный адрес для записи, заданный как double. writeAddress должен быть первым аргументом после имени объекта. В этом примере записываются 2 регистра хранения, начиная с адреса 501, и считываются 4 регистра хранения, начиная с адреса 11250. The writeAddress является 501.

Пример: writeRead(m,501,[1024 512],11250,4)

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

Массив значений для записи, заданный как двойной или массив типа double. Значения должны быть вторым аргументом после имени объекта. Каждое значение должно быть в области значений 0–65535. В этом примере записываются 2 регистра хранения, начиная с адреса 501, и считываются 4 регистра хранения, начиная с адреса 11250. The values являются [1024 512].

Пример: writeRead(m,501,[1024 512],11250,4)

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

Начальный адрес считываемых регистров удержания, заданный как double. readAddress должен быть третьим аргументом после имени объекта. В этом примере записываются 2 регистра хранения, начиная с адреса 501, и считываются 4 регистра хранения, начиная с адреса 11250. The readAddress является 11250.

Пример: writeRead(m,501,[1024 512],11250,4)

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

Количество считываемых регистров, заданное как double. readCount должен быть четвертым аргументом после имени объекта. В этом примере записываются 2 регистра хранения, начиная с адреса 501, и считываются 4 регистра хранения, начиная с адреса 11250. The readCount является 4.

Пример: writeRead(m,501,[1024 512],11250,4)

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

Адрес сервера для отправки команды, заданный как double. Идентификатор сервера должен быть указан после имени объекта, адреса записи, значений, адреса чтения и счетчика чтения. Если вы не задаете serverId, по умолчанию 1 используется. Допустимые значения 0–247, с 0 являясь широковещательным адресом. Этот пример записывает 3 регистра хранения, начиная с адреса 400, и считывает 4 регистра хранения, начиная с адреса 52008, с идентификатора 6 сервера.

Пример: writeRead(m,400,[1024 512 680],52008,4,6)

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

Формат данных регистра хранения, записываемого на сервер MODBUS, задается как вектор символов или строка. writePrecision должен быть задан после адреса записи и значений. Допустимые значения 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'single', и 'double'. Этот аргумент необязателен, и значение по умолчанию 'uint16'.

Обратите внимание, что writePrecision не относится к типу возврата, который всегда 'double'. Он задает, как интерпретировать данные регистра.

Этот пример записывает 3 регистра хранения, начиная с адреса 400, и считывает 4 регистра хранения, начиная с адреса 52008, с идентификатора 6 сервера. Это также задает writePrecision от 'uint64'.

Пример: writeRead(m,400,[1024 512 680],'uint64',52008,4,'uint32',6)

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

Формат данных регистра хранения, считываемого на сервере MODBUS в виде вектора символов или строки. readPrecision должен быть указан после адреса чтения и счетчика чтения. Допустимые значения 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'single', и 'double'. Этот аргумент необязателен, и значение по умолчанию 'uint16'.

Обратите внимание, что readPrecision не относится к типу возврата, который всегда 'double'. Он задает, как интерпретировать данные регистра.

Этот пример записывает 3 регистра хранения, начиная с адреса 400, и считывает 4 регистра хранения, начиная с адреса 52008, с идентификатора 6 сервера. Это также задает readPrecision от 'uint32'.

Пример: writeRead(m,400,[1024 512 680],'uint64',52008,4,'uint32',6)

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

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2017a