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.
14.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.
14.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 14.9.1 Function Codes Supported by
Modbus RTU.
14.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.
14.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.
14.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 rst 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
VLT
®
HVAC Drive FC 102
234 Danfoss A/S © 11/2017 All rights reserved. MG16C302
1414