exponenta event banner

запись-чтение

Выполнение операции записи и считывания для групп регистров хранения в одной транзакции 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) добавляет дополнительные уточнения для операций записи и чтения. writePrecision и readPrecision аргументы определяют формат данных регистра, считываемого с сервера MODBUS или записываемого в него.

Примеры

свернуть все

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

Запись 2 регистров хранения, начиная с адреса 300, и считывание 4 регистров хранения, начиная с адреса 17250.

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

   35647   48923   50873   60892

Если операция выполнена успешно, она возвращает массив двойников, каждый из которых представляет 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' и readPrecision из 'uint32'.

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

   38629   24735   29456   39470   33434   29484

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

Типы данных: 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++ с помощью MATLAB ® Coder™

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