Чтение данных с сервера 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.