write выполняет операции записи в два типа целевых адресуемых областей:
Катушки
Хранение регистров
Каждая из двух областей может принимать запрос на запись к одному адресу или смежному диапазону адресов. При выполнении операции записи необходимо указать тип цели (target), начальный адрес (address) и значения для записи (values). Можно также дополнительно указать адрес сервера (serverIdи формат данных (precision).
Если целью записи являются катушки, то функция записывает непрерывную последовательность из 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)
Если целью записи является хранение регистров, функция записывает блок из 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')