2–2
MM300 MOTOR MANAGEMENT SYSTEM – COMMUNICATIONS GUIDE
MODBUS PROTOCOL
CHAPTER 2: RS485 INTERFACE (MODBUS RTU)
NOTE
NOTE:
Polarity is important in RS485 communications. The '+' (positive) terminals of every device
must be connected together.
Data Frame Format and Data Rate
One data frame of an asynchronous transmission to or from a MM300 typically consists of
1 start bit, 8 data bits, and 1 stop bit. This produces a 10 bit data frame. This is important
for transmission through modems at high bit rates (11 bit data frames are not supported
by Hayes modems at bit rates of greater than 300 bps).
Modbus protocol can be implemented at any standard communication speed. The
MM300supports operation at 9600, 19200, 38400, 57600, and 115200 baud.
Data Packet Format
A complete request/response sequence consists of the following bytes (transmitted as
separate data frames):
Master Request Transmission:
SLAVE ADDRESS: 1 byte
FUNCTION CODE: 1 byte
DATA: variable number of bytes depending on FUNCTION CODE
CRC: 2 bytes
Slave Response Transmission:
SLAVE ADDRESS: 1 byte
FUNCTION CODE: 1 byte
DATA: variable number of bytes depending on FUNCTION CODE
CRC: 2 bytes
SLAVE ADDRESS
: This is the first byte of every transmission. This byte represents the user-
assigned address of the slave device that is to receive the message sent by the master.
Each slave device must be assigned a unique address and only the addressed slave will
respond to a transmission that starts with its address. In a master request transmission the
SLAVE ADDRESS represents the address of the slave to which the request is being sent. In a
slave response transmission the SLAVE ADDRESS represents the address of the slave that is
sending the response.
FUNCTION CODE
: This is the second byte of every transmission. Modbus defines function
codes of 1 to 127.
DATA
: This will be a variable number of bytes depending on the FUNCTION CODE. This may
be Actual Values, Setpoints, or addresses sent by the master to the slave or by the slave to
the master.
CRC
: This is a two byte error checking code.
Error Checking
The RTU version of Modbus includes a two byte CRC-16 (16 bit cyclic redundancy check)
with every transmission. The CRC-16 algorithm essentially treats the entire data stream
(data bits only; start, stop and parity ignored) as one continuous binary number. This
number is first shifted left 16 bits and then divided by a characteristic polynomial
(11000000000000101B). The 16 bit remainder of the division is appended to the end of the
transmission, MSByte first. The resulting message including CRC, when divided by the
same polynomial at the receiver will give a zero remainder if no transmission errors have
occurred.