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

Типы данных можно перечитать по MODBUS

read функция выполняет операции чтения от четырех типов адресуемых целью областей:

  • Обмотки

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

  • Введите регистры

  • Регистры временного хранения информации

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

Для примера, показывающего целый рабочий процесс чтения регистра временного хранения информации на PLC, смотрите Температуру Чтения от Удаленного Датчика температуры.

Обмотки считывания по MODBUS

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

Синтаксис, чтобы считать обмотки:

read(obj,'coils',address,count)

obj параметр является именем объекта MODBUS. Примеры принимают, что вы создали объект MODBUS, m. Для получения информации о создании объекта смотрите, Создают Связь MODBUS.

address параметр является начальным адресом обмоток, чтобы читать, и это - двойное. count параметр является количеством обмоток, чтобы читать, и это - двойное. Если чтение успешно, оно возвращается, вектор из удваивается, каждый со значением 1 или 0, где первое значение в векторе соответствует обмоточному значению в начальном адресе.

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

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

ans = 

   1   1   0   1   1   0   1   0

Можно также создать переменную, которая будет считана позже.

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

data = 

   1   1   0   1   1   0   1   0

Чтение входных параметров по MODBUS

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

Синтаксис, чтобы считать входные параметры:

read(obj,'inputs',address,count)

obj параметр является именем объекта MODBUS. Примеры принимают, что вы создали объект MODBUS, m. Для получения информации о создании объекта смотрите, Создают Связь MODBUS.

address параметр является начальным адресом входных параметров, чтобы читать, и это - двойное. count параметр является количеством входных параметров, чтобы читать, и это - двойное. Если операция чтения успешна, она возвращается, вектор из удваивается, каждый с 1 или 0, где первое значение в векторе соответствует входному значению в начальном адресе.

Этот пример читает 10 дискретных входных параметров, запускающихся в адресе 2.

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

ans = 

   1   1   0   1   1   0   1   0   0   1

Чтение входных регистров по MODBUS

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

Синтаксис, чтобы считать входные регистры:

read(obj,'inputregs',address,count)

obj параметр является именем объекта MODBUS. Примеры принимают, что вы создали объект MODBUS, m. Для получения информации о создании объекта смотрите, Создают Связь MODBUS.

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

Этот пример читает 4 входных регистра, запускающиеся в адресе 20.

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

ans = 

   27640   60013   51918   62881

Чтение регистров временного хранения информации по MODBUS

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

Синтаксис, чтобы считать входные параметры:

read(obj,'holdingregs',address,count)

obj параметр является именем объекта MODBUS. Примеры принимают, что вы создали объект MODBUS, m. Для получения информации о создании объекта смотрите, Создают Связь MODBUS.

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

Этот пример читает 4 регистра временного хранения информации, запускающиеся в адресе 20.

read(m,'holdingregs',20,4)

ans = 

   27640   60013   51918   62881

Для примера, показывающего целый рабочий процесс чтения регистра временного хранения информации на PLC, смотрите Температуру Чтения от Удаленного Датчика температуры.

Определение ID сервера и точности

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

Опция ID сервера

serverId аргумент задает адрес сервера, чтобы отправить команду чтения в. Допустимыми значениями является 0–247, с 0 быть широковещательным адресом. Этот аргумент является дополнительным, и значением по умолчанию является 1.

Примечание

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

Синтаксис, чтобы задать ID сервера:

read(obj,target,address,count,serverId)

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

read(m,'coils',1,8,3);

Опция точности

'precision' аргумент задает формат данных регистра, считанного из на сервере MODBUS. Допустимыми значениями является 'uint16'int16uint32int32uint64int64единственный, и 'double'. Этот аргумент является дополнительным, и значением по умолчанию является 'uint16'.

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

Синтаксис, чтобы задать точность:

read(obj,target,address,count,precision)

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

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

Обе опции

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

Синтаксис, чтобы задать и ID Сервера и точность:

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

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

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

Чтение смешанных типов данных

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

В read Синтаксис

Синтаксис 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. В этом примере это читает 3 uint16 значения от адреса 500-502, 2 single значения от адреса 503-506, 3 double значения от адреса 507-518, и 2 int16 значения от адреса 519-520, все в одной операции чтения.

Используя переменные

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

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

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