CGCOMMUNICATIONS GUIDE MODBUS RTU PROTOCOL369 MOTOR MANAGEMENT RELAY – COMMUNICATIONS GUIDE CG395.2 Data Packet FormatA complete request/response sequence consists of the following bytes (transmitted asseparate data frames):Master Request Transmission:SLAVE ADDRESS - 1 byteFUNCTION CODE - 1 byteDATA - variable number of bytes depending on FUNCTION CODECRC - 2 bytesSlave Response Transmission:SLAVE ADDRESS - 1 byteFUNCTION CODE - 1 byteDATA - variable number of bytes depending on FUNCTION CODECRC - 2 bytesSLAVE ADDRESS: This is the first byte of every transmission. It 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 willrespond to a transmission that starts with its address. In a master request transmission theSLAVE ADDRESS represents the address of the slave to which the request is being sent. In aslave response transmission the SLAVE ADDRESS represents the address of the slave that issending the response. Note: A master transmission with a SLAVE ADDRESS of 0 indicates abroadcast command. Broadcast commands can be used for specific functions.FUNCTION CODE: This is the second byte of every transmission. The modbus protocoldefines function codes of 1 to 127. The 369 implements some of these functions. In amaster request transmission the FUNCTION CODE tells the slave what action to perform. Ina slave response transmission if the FUNCTION CODE sent from the slave is the same asthe FUNCTION CODE sent from the master indicating the slave performed the function asrequested. If the high order bit of the FUNCTION CODE sent from the slave is a 1 (i.e. if theFUNCTION CODE is > 127) then the slave did not perform the function as requested and issending an error or exception response.DATA: This will be a variable number of bytes depending on the FUNCTION CODE. This maybe actual values, setpoints, or addresses sent by the master to the slave or by the slave tothe master. Data is sent MSByte first followed by the LSByte.CRC: This is a two byte error checking code. CRC is sent LSByte first followed by theMSByte.5.3 Error CheckingThe 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. Thisnumber 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 thetransmission, LSByte first. The resulting message including CRC, when divided by the samepolynomial at the receiver will give a zero remainder if no transmission errors haveoccurred.