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

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

Синтаксис

writeRead(m,writeAddress,values,readAddress,readCount)
writeRead(m,writeAddress,values,readAddress,readCount,serverId)
writeRead(m,writeAddress,values,writePrecision,readAddress,readCount,readPrecision)

Описание

пример

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 с сервера ID 6.

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

   38629   24735   29456   39470

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

Запишите 3 регистра временного хранения информации, запускающиеся в адресе 500, и считайте 6 регистров временного хранения информации, запускающихся в адресе 52008 с сервера ID 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

Адрес сервера, чтобы отправить команду в, заданный как двойное. ID сервера должен быть задан после имени объекта, записать адрес, значения, адрес чтения, и считать количество. Если вы не задаете serverId, значение по умолчанию 1 используется. Допустимыми значениями является 0–247 с 0, являющимся широковещательным адресом. Этот пример пишет 3 регистра временного хранения информации, запускающиеся в адресе 400, и читает 4 регистра временного хранения информации, запускающиеся в адресе 52008 с сервера ID 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 с сервера ID 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 с сервера ID 6. Это также задает readPrecision 'uint32'.

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

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

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте