11.8.2 Start/Stop Field
Messages start with a silent period of at least 3.5 character
intervals, implemented as a multiple of character intervals
at the selected network baud rate (shown as start T1-T2-
T3-T4). The 1
st
transmitted eld is the device address.
Following the last transmitted character, a similar period of
at least 3.5 character intervals marks the end of the
message. A new message can begin after this period. The
entire message frame must be transmitted as a continuous
stream. If a silent period of more than 1.5 character
intervals occurs before completion of the frame, the
receiving device ushes the incomplete message and
assumes that the next byte is the address eld of a new
message. Similarly, if a new message begins before 3.5
character intervals after a previous message, the receiving
device considers it a continuation of the previous message,
causing a timeout (no response from the slave), since the
value in the nal CRC (cyclical redundancy check) eld is
not valid for the combined messages.
11.8.3 Address Field
The address eld of a message frame contains 8 bits. Valid
slave device addresses are in the range of 0–247 decimal.
The individual slave devices are assigned addresses in the
range of 1–247 (0 is reserved for broadcast mode, which all
slaves recognize). A master addresses a slave by placing
the slave address in the address eld of the message.
When the slave sends its response, it places its own
address in this address eld to let the master know which
slave is responding.
11.8.4 Function Field
The function eld of a message frame contains 8 bits. Valid
codes are in the range of 1–FF. Function elds are used to
send messages between master and slave. When a
message is sent from a master to a slave device, the
function code eld tells the slave what action to perform.
When the slave responds to the master, it uses the
function code eld to indicate either a normal (error-free)
response, or that an error has occurred (called an
exception response). For a normal response, the slave
simply echoes the original function code. For an exception
response, the slave returns a code that is equivalent to the
original function code with its most signicant bit set to
logic 1. In addition, the slave places a unique code into the
data eld of the response message. This code tells the
master what error occurred, or the reason for the
exception. See chapter 11.9.1 Function Codes Supported by
Modbus RTU.
11.8.5 Data Field
The data eld is constructed using sets of 2 hexadecimal
digits, in the range of 00–FF hexadecimal. These sequences
are made up of 1 RTU character. The data eld of
messages sent from a master-to-slave device contains more
information, which the slave must use to do what is
dened by the function code. This information can include
items such as coil or register addresses, the quantity of
items, and the count of actual data bytes in the eld.
11.8.6 CRC Check Field
Messages include an error-checking eld, operating based
on a CRC (cyclical redundancy check) method. The CRC
eld checks the contents of the entire message. It is
applied regardless of any parity check method used for the
individual characters of the message. The transmitting
device calculates the CRC value then appends the CRC as
the last eld in the message. The receiving device
recalculates a CRC during receipt of the message and
compares the calculated value to the actual value received
in the CRC
eld. If the 2 values are unequal, a bus timeout
results. The error-checking eld contains a 16-bit binary
value implemented as 2 8-bit bytes. After error-checking,
the low-order byte of the eld is appended rst, followed
by the high-order byte. The CRC high-order byte is the last
byte sent in the message.
11.8.7 Coil Register Addressing
In Modbus, all data are organized in coils and holding
registers. Coils hold a single bit, whereas holding registers
hold a 2 byte word (16 bits). All data addresses in Modbus
messages are referenced to 0. The 1
st
occurrence of a data
item is addressed as item number 0. For example: The coil
known as coil 1 in a programmable controller is addressed
as coil 0000 in the data address eld of a Modbus
message. Coil 127 decimal is addressed as coil 007Ehex
(126 decimal).
Holding register 40001 is addressed as register 0000 in the
data address eld of the message. The function code eld
already species a holding register operation. Therefore,
the 4XXXX reference is implicit. Holding register 40108 is
addressed as register 006Bhex (107 decimal).
Appendix Design Guide
MG06K102 Danfoss A/S © 03/2019 All rights reserved. 85
11 11