(4) Message frame (protocol)
Basically, the master sends a query message (question) and the slave returns a response message
(response). When communication is normal, Device Address and Function Code are copied as they are, and
when communication is abnormal (function code or data code is illegal), bit 7 (= 80h) of Function Code is
turned on and the error code is set to Data Bytes.
Query message from Master
The message frame consists of the four message fields as shown above.
By adding the no-data time (T1: Start, End) of 3.5 characters to the beginning and end of the message data,
the slave recognizes it as one message.
The four message fields will be explained below.
1) ADDRESS field
2) FUNCTION field
3) DATA field
4) CRC CHECK field
Response message from slave
Is 1 byte long (8 bits), and can be set to any of 0 to 247. Set 0 to send a broadcast message
(all-address instruction) or any of 1 to 247 to send a message to each slave.
When the slave responds, it returns the address set from the master.
The value set to Pr. 331 RS-485 communication station number is the slave address.
The function code is 1 byte long (8 bits) and can be set to any of 1 to 255. The master sets the
function that it wants to request from the slave, and the slave performs the requested
operation. The following table gives the supported function codes. An error response is
returned if the set function code is other than those in the following table.
When the slave returns a normal response, it returns the function code set by the master.
When the slave returns an error response, it returns H80 + function code.
Read Holding Register
Preset Single Register
Preset Multiple Registers
Read Holding Register
The format changes depending on the function code (refer to page210). Data includes the byte
count, number of bytes, description of access to the holding register, etc.
The received message frame is checked for error. CRC check is performed, and 2 byte long
data is added to the end of the message. When CRC is added to the message, the low-order
byte is added first and is followed by the high-order byte.
The CRC value is calculated by the sending side that adds CRC to the message. The receiving
side recalculates CRC during message receiving, and compares the result of that calculation
and the actual value received in the CRC CHECK field. If these two values do not match, the
result is defined as error.
Communication operation and setting
Reads the holding register data.
Writes data to the holding register.
Makes a function diagnosis.
(communication check only)
Writes data to multiple consecutive
Reads the number of registers that
succeeded in communication last
Table 1: Function code list