exponenta event banner

Запись данных на сервер MODBUS

Типы данных, которые можно записать по MODBUS

write выполняет операции записи в два типа целевых адресуемых областей:

  • Катушки

  • Хранение регистров

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

Запись катушек по MODBUS

Если целью записи являются катушки, то функция записывает непрерывную последовательность из 1-1968 катушек, чтобы включить или выключить (1 или 0) в удаленном устройстве. Катушка - это один выходной бит. Значение 1 указывает, что катушка включена, и значение 0 значит, он выключен.

Синтаксис записи в катушки:

write(obj,'coils',address,values)

obj - это имя объекта MODBUS. В примерах предполагается, что создан объект MODBUS, m. Сведения о создании объекта см. в разделе Создание соединения MODBUS.

address параметр является начальным адресом витков для записи и является двойным. values параметр является массивом значений для записи. Для цели катушек допустимые значения: 0 и 1.

В этом примере выполняется запись в 4 катушки, начиная с адреса 8289.

write(m,'coils',8289,[1 1 0 1])

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

values = [1 1 0 1];
write(m,'coils',8289,values)

Запись регистров хранения по MODBUS

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

Синтаксис записи в регистры хранения:

write(obj,'holdingregs',address,values)

obj - это имя объекта MODBUS. В примерах предполагается, что создан объект MODBUS, m. Сведения о создании объекта см. в разделе Создание соединения MODBUS.

address параметр является начальным адресом регистров хранения для записи и является двойным. values параметр является массивом значений для записи. Для целевого объекта хранения регистров допустимые значения должны находиться в диапазоне заданной точности.

В этом примере регистр по адресу 49153 устанавливается равным 2000.

write(m,'holdingregs',49153,2000)

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

'precision' аргумент указывает формат данных регистра, записываемого в сервер MODBUS. Допустимые значения: 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'single', и 'double'. Этот аргумент является необязательным, а значение по умолчанию - 'uint16'.

Значения, передаваемые для записи, преобразуются в регистровые значения на основе заданной точности. Для значений точности 'int32', 'uint32', и 'single', каждое значение соответствует 2 регистрам и для 'uint64', 'int64' и 'double', каждое значение соответствует 4 регистрам. Для 'int16' и 'uint16'каждое значение из одного 16-битного регистра.

В этом примере записываются 3 значения, начиная с адреса 29473 и преобразуя в single точность.

write(m,'holdingregs',29473,[928.1 50.3 24.4],'single')