read

Чтение данных с сервера MODBUS

Описание

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, который является адресом сервера, которому отправляется команда read, и precision, который является форматом данных считываемого регистра.

Примеры

свернуть все

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

Считайте 8 катушек, начиная с адреса 1. The address параметр является начальным адресом считываемых катушек и count параметр - количество считываемых катушек.

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

   1   1   0   1   1   0   1   0

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

Считайте 10 дискретных входы, начиная с адреса 2. The address параметр является начальным адресом считываемых входов и count параметр является количеством считываемых входов.

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

   1   1   0   1   1   0   1   0   0   1

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

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

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

   27640   60013   51918   62881

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

Считайте 5 регистров хранения, начиная с адреса 2. The address параметр является начальным адресом считываемых регистров хранения и count параметр является количеством считываемых регистров хранения.

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

   27640   60013   51918   62881   34836

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

Примечание

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

Этот пример считывает 8 катушек, начиная с адреса 1, с идентификатора 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

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

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

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