Считайте данные из сервера MODBUS
read(m,target,address)
read(m,target,address,count)
read(m,target,address,count,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);
Используя переменные удобно, когда у вас есть много значений, чтобы читать, и они имеют смешанные типы данных.
target
— Target, чтобы читатьЦелевая область, чтобы читать, заданный как вектор символов или строка. Можно выполнить операцию чтения MODBUS на четырех типах целей: обмотки, входные параметры, вводят регистры и регистры временного хранения информации, соответствуя значениям 'coils'
, 'inputs'
, 'inputregs'
и 'holdingregs'
. Цель должна быть первым аргументом после имени объекта. Этот пример читает 8 обмоток, запускающихся в адресе 1.
Пример: read(m,'coils',1,8)
Типы данных: char
address
— Начальный адрес, чтобы читать изНачальный адрес, чтобы читать из, заданный как двойное. Адрес должен быть вторым аргументом после имени объекта. Этот пример читает 10 обмоток, запускающихся в адресе 2.
Пример: read(m,'coils',2,10)
Типы данных: double
количество
Количество значений, чтобы читатьКоличество значений, чтобы читать, заданный как двойное. Количество должно быть третьим аргументом после имени объекта. Если вы не задаете количество, значение по умолчанию 1
используется. Этот пример читает 12 обмоток, запускающихся в адресе 2.
Пример: read(m,'coils',2,12)
Типы данных: double
serverId
— Адрес сервера, чтобы отправить команду чтения вАдрес сервера, чтобы отправить команду чтения в, заданный как двойное. 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Формат данных регистра, считанного из на сервере MODBUS, заданном как вектор символов или строка. Точность должна быть задана после имени объекта, цели, адреса и количества. Допустимыми значениями является 'uint16'
, 'int16'
, 'uint32'
, 'int32'
, 'uint64'
, 'int64'
, 'single'
и 'double'
. Этот аргумент является дополнительным, и значением по умолчанию является 'uint16'
.
Обратите внимание на то, что precision
не относится к типу возврата, который всегда является 'double'
. Это задает, как интерпретировать данные о регистре.
Этот пример читает 6 регистров временного хранения информации, запускающихся в адресе 2 использования точности 'uint32'
.
Пример: read(m,'holdingregs',2,6,'uint32');
Типы данных: char
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.