чтение

Считайте данные из сервера MODBUS

Синтаксис

read(m,target,address)
read(m,target,address,count)
read(m,target,address,count,serverId,precision)

Описание

read(m,target,address) чтения одно значение данных к объекту MODBUS m от целевого типа target в начальном адресе address. Функция читает одно значение по умолчанию. Если вы хотите считать больше чем одно значение, добавьте аргумент count.

пример

read(m,target,address,count) считывает данные в объект MODBUS m от целевого типа target в начальном адресе address с помощью количества значений, чтобы считать count.

пример

read(m,target,address,count,serverId,precision) дополнительно задает serverId, который является адресом сервера, чтобы отправить команду чтения в, и precision, который является форматом данных считанного регистра.

Примеры

свернуть все

Если цель чтения является обмотками, функция читает значения из 1–2000 непрерывных обмоток в удаленном сервере, запускающемся в заданном адресе. Обмотка является одним выходным битом. Значение 1 указывает, что обмотка включена, и значение 0 означает, что это выключено.

Считайте 8 обмоток, запускающихся в адресе 1. Параметр address является начальным адресом обмоток, чтобы читать, и параметр count является количеством обмоток, чтобы читать.

read(m,'coils',1,8)
ans = 

   1   1   0   1   1   0   1   0

Если цель чтения является входными параметрами, функция читает значения из 1–2000 непрерывных дискретных входных параметров в удаленном сервере, запускающемся в заданном адресе. Дискретный вход является одним входным битом. Значение 1 указывает, что вход включен, и значение 0 означает, что это выключено.

Считайте 10 дискретных входных параметров, запускающихся в адресе 2. Параметр address является начальным адресом входных параметров, чтобы читать, и параметр count является количеством входных параметров, чтобы читать.

read(m,'inputs',2,10)
ans = 

   1   1   0   1   1   0   1   0   0   1

Если цель чтения вводится регистры, функция читает значения из 1–125 непрерывных входных регистров в удаленном сервере, запускающемся в заданном адресе. Входной регистр является 16-битным регистром только для чтения.

Считайте 4 входных регистра, запускающиеся в адресе 20. Параметр address является начальным адресом входных регистров, чтобы читать, и параметр count является количеством входных регистров, чтобы читать.

read(m,'inputregs',20,4)
ans = 

   27640   60013   51918   62881

Если цель чтения является регистрами временного хранения информации, функция читает значения из 1–125 непрерывных регистров временного хранения информации в удаленном сервере, запускающемся в заданном адресе. Регистр временного хранения информации является 16-битным регистром чтения-записи.

Считайте 5 регистров временного хранения информации, запускающихся в адресе 2. Параметр address является начальным адресом регистров временного хранения информации, чтобы читать, и параметр count является количеством регистров временного хранения информации, чтобы читать.

read(m,'holdingregs',2,5)
ans = 

   27640   60013   51918   62881   34836

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

Считайте 8 регистров временного хранения информации, запускающихся в адресе 1 использование точности 'uint32' с сервера ID 3.

read(m,'holdingregs',1,8,3,'uint32');

Можно считать непрерывные значения различных типов данных (точность) путем определения типа данных для каждого значения. Можно сделать это в синтаксисе функции read или настроить переменные, содержащие массивы количеств и точности. Оба метода показывают здесь.

Считайте непрерывные регистры совпадающего типа данных.

read(m,'holdingregs',500,10,'uint32');

В том примере целевой тип является регистрами временного хранения информации, начальным адресом является 500, количеством является 10, и точностью является uint32.

Если вы хотели иметь эти 10 значений, имеют смешанные типы данных, можно использовать этот синтаксис:

read(m,'holdingregs',500,[3 2 3 2],{'uint16', 'single', 'double', 'int16'});

Вы используете массив значений в рамках команды и для количества и для точности. В этом случае количества равняются 3, 2, 3, и 2. Команда считает 3 значения типа данных uint16, 2 значения типа данных single, 3 значения типа данных double и 2 значения типа данных int16. Регистры непрерывны, запускающийся в адресе 500.

Вместо того, чтобы использовать массивы в команде чтения как показано на предыдущем шаге, можно также использовать массивы в качестве переменных в команде. Эквивалентный код для того же примера:

count = [3 2 3 2]
precision = {'uint16', 'single', 'double', 'int16'}
read(m,'holdingregs',500,count,precision);

Используя переменные удобно, когда у вас есть много значений, чтобы читать, и они имеют смешанные типы данных.

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

свернуть все

Целевая область, чтобы читать, заданный как вектор символов или строка. Можно выполнить операцию чтения MODBUS на четырех типах целей: обмотки, входные параметры, вводят регистры и регистры временного хранения информации, соответствуя значениям 'coils', 'inputs', 'inputregs' и 'holdingregs'. Цель должна быть первым аргументом после имени объекта. Этот пример читает 8 обмоток, запускающихся в адресе 1.

Пример: read(m,'coils',1,8)

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

Начальный адрес, чтобы читать из, заданный как двойное. Адрес должен быть вторым аргументом после имени объекта. Этот пример читает 10 обмоток, запускающихся в адресе 2.

Пример: read(m,'coils',2,10)

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

Количество значений, чтобы читать, заданный как двойное. Количество должно быть третьим аргументом после имени объекта. Если вы не задаете количество, значение по умолчанию 1 используется. Этот пример читает 12 обмоток, запускающихся в адресе 2.

Пример: read(m,'coils',2,12)

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

Адрес сервера, чтобы отправить команду чтения в, заданный как двойное. ID сервера должен быть задан после имени объекта, цели, адреса и количества. Если вы не задаете serverId, значение по умолчанию 1 используется. Допустимыми значениями является 0-247 с 0, являющимся широковещательным адресом.

Примечание

То, что некоторые устройства называют свойством slaveID, может работать свойством serverID в интерфейсе MODBUS. Для некоторых производителей ведомый ID иногда упоминается как ID сервера. Если ваше устройство использует свойство slaveID, оно может работать, чтобы использовать его в качестве свойства serverID с командой чтения, как описано здесь.

Этот пример читает 8 обмоток, запускающихся в адресе 1 с сервера ID 3.

Пример: read(m,'coils',1,8,3);

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

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

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

Этот пример читает 6 регистров временного хранения информации, запускающихся в адресе 2 использования точности 'uint32'.

Пример: read(m,'holdingregs',2,6,'uint32');

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

Введенный в R2017a

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