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