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