Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

write

Perform a write operation to the connected MODBUS server

Syntax

write(m,target,address,values)
write(m,target,address,values,serverId,'precision')

Description

example

write(m,target,address,values) writes data to MODBUS object m to target type target at the starting address address using the values to read values. You can write to coils or holding registers.

example

write(m,target,address,values,serverId,'precision') additionally specifies serverId, which is the address of the server to send the read command to, and the precision, which is the data format of the register being read.

serverId can be used for both coils and holding registers, and precision can be used for registers only. You can use either argument by itself, or use both arguments together when the write target is holding registers.

Examples

collapse all

If the write target is coils, the function writes a contiguous sequence of 1–1968 coils to either on or off in a remote device. A coil is a single output bit. A value of 1 indicates the coil is on and a value of 0 means it is off.

Write to 4 coils, starting at address 8289. The address parameter is the starting address of the coils to write to, and it is a double. The values parameter is an array of values to write.

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

You can also create a variable for the values to write.

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

If the write target is holding registers, the function writes a block of 1–123 contiguous registers in a remote device. Values whose representation is greater than 16 bits are stored in consecutive register addresses.

Set the register at address 49153 to 2000.

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

You can write to coils or holding registers and also specify the optional parameter for server ID, and you can specify precision for holding registers. You can set either option by itself or set both the serverId option and the precision option together. Both options should be listed after the required arguments.

Write 3 values, starting at address 29473, at Server ID 2, converting to single precision.

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

Input Arguments

collapse all

Target area to write to, specified as a character vector or string. You can perform a MODBUS write operation on two types of targets: coils and holding registers, so you must set the target type as either 'coils' or 'holdingregs'. Target must be the first argument after the object name. This example writes to 4 coils starting at address 8289.

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

Data Types: char

Starting address to write to, specified as a double. Address must be the second argument after the object name. This example writes to 6 coils starting at address 5200.

Example: write(m,'coils',5200,[1 1 0 1 1 0])

Data Types: double

Array of values to write, specified as a double or array of doubles. values must be the third argument after the object name. If the target is coils, valid values are 0 and 1. If the target is holding registers, valid values must be in the range of the specified precision. You can include the array of values in the syntax, as shown here, or use a variable for the values.

This example writes to 4 coils starting at address 8289.

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

Data Types: double

Address of the server to send the write command to, specified as a double. Server ID must be specified after the object name, target, address, and values. If you do not specify a serverId, the default of 1 is used. Valid values are 0-247, with 0 being the broadcast address. This example writes 8 coils starting at address 1 from server ID 3.

Example: write(m,'coils',1,[1 1 1 1 0 0 0 0],3);

Data Types: double

Data format of the register being written to on the MODBUS server, specified as a character vector or string. Precision must be specified after the object name, target, address, and values. Valid values are 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'single', and 'double'. This argument is optional, and the default is 'uint16'.

Note that precision does not refer to the return type, which is always 'double'. It specifies how to interpret the register data.

This example writes to 4 holding registers starting at address 2 using a precision of 'uint32'.

Example: write(m,'holdingregs',2,[100 200 300 500],'uint32');

Data Types: char

Introduced in R2017a

Was this topic helpful?