Chapter 8. Communication Function
8-76
4) MOD1516
Function block Description
Input
REQ: Execute function block when it’s 1(rising edge)
CH : Set communication channel (0 ~ 1)
SLV_ADDR: Input the number of the slave station
FUNC: Input the function code. It supports function code 15 and 16
ADDR: The starting address to read from the slave station
NUM: The data size to read from
the slave station
Output
WD_DATA: A variable name to save the data to be written.
NDR: If it ends without error, output 1 and keep the value till the call for the next
function block.
ERR: If an error occurs, output 1 and keep the value till the call for the next
function block.
STATUS: When an error occurs, output an error code.
(1) Function
This is a function block that can execute either function code 15 or 16 for writing 1 bit (function code 15) and
writing 1 word (function code 16) in Modbus protocol communication. Function code 15 does 1 bit by 1 bit data
writing on each Coil in a sequence Coils. And Function 16 does 1 word by 1 word data writing on sequence of the
Holding Registers.
(2) Error
It outputs error codes to output STATUS. Refer to “Error codes” for the detailed.
(3) Example of the program
z It’s supposed that GM7U main unit is the master and it writes bits continually on the output coil of the
station no. 17, a Modicon product.
z The master writes continual 10 bits, 01110011011 on the Coils 00020 of the slave station no. 17 1 bit
by 1 bit. The data that is to be written are saved in any array variable WR_DB0 of the 2 sized BYTE
type.
Variable Value to save
WR_DB0 [0] 2#11001101 or 16#CD
WR_DB0 [1] 2#10000001 or 16#81
z The size of BYTE_CNT is the same as when the data to be written are converted by byte. The above
data are 10 by 1 bit. They can’t be filled by 1 byte. So they must be filled from the low bit, using 2 bytes.
And 0 fills the remnant 6 bits. Therefore the size of BYTE_CNT is 2.
z f it is supposed that data of 1000 0001 1100 1101 are saved in the array variable, WR_DB0, the data are
sent as 10 bits (01 1100 1101) at the bottom plus 6 bit of 0 at the top. For the size of the data is set as 10
bits to send and they are sent by bytes, the deficient 6 bits are filled with 0.
z Data is sent starting from the low bit by byte unit. An example of sending the above data is as follows.