B-2 B90 Low Impedance Bus Differential System GE MultilinB.1 MODBUS RTU PROTOCOL APPENDIX BB• DATA: This will be a variable number of bytes depending on the function code. This may include actual values, set-tings, 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. The RTU version of Modbus ® includes a 16-bit cyclic redundancy check(CRC-16) with every packet which is an industry standard method used for error detection. If a Modbus slave devicereceives a packet in which an error is indicated by the CRC, the slave device will not act upon or respond to the packetthus preventing any erroneous operations. See the CRC-16 Algorithm section for details on calculating the CRC.• DEAD TIME: A packet is terminated when no data is received for a period of 3.5 byte transmission times (about 15 msat 2400 bps, 2 ms at 19200 bps, and 300 μs at 115200 bps). Consequently, the transmitting device must not allow gapsbetween bytes longer than this interval. Once the dead time has expired without a new byte transmission, all slavesstart listening for a new packet from the master except for the addressed slave.Modbus-TCP/IP communications takes place in ADUs (Application Data Units), which are wrapped in the TCP/IP/Ethernetprotocols. Ethernet provides layer 2 addressing and CRC-32 error checking. IP provides layer 3 addressing. TCP providescommunication establishment and ending and manages data flow. The Parallel Redundancy Protocol (PRP) can also beused to provide seamless data flow in case of a single failure in the network, by using a combination of LAN duplication andframe duplication. See chapter 5 for information on setting up TCP for Modbus (in the Modbus section), IP, and PRP (Net-work section).The following describes the ADU..MBAP header: This Modbus Application Protocol header contains the following fields:• Transaction Identifier: Used for transaction pairing. The Modbus server copies in the response the transaction identifierof the request.• Protocol Identifier: Used for intra-system multiplexing. The Modbus protocol is identified by the value 0.• Length: The length field is a byte count of the following fields, including the Unit Identifier and data fields.– Unit Identifier: For the purposes of the UR, this field is equivalent to the Modbus RTU SLAVE ADDRESSfield. The client must use the same value here as programmed in the UR setting MODBUS SLAVE ADDRESS.FUNCTION CODE: This is the same as the Modbus RTU function code field described above.DATA: This is the same as the Modbus RTU data field described above.B.1.4 MODBUS RTU CRC-16 ALGORITHMThe Modbus TPC/IP CRC-32 algorithm is universally executed in hardware, so there is no need to describe it here.The Modbus RTU 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 packet, MSByte first. The result-ing packet including CRC, when divided by the same polynomial at the receiver will give a zero remainder if no transmis-sion errors have occurred. This algorithm requires the characteristic polynomial to be reverse bit ordered. The mostsignificant bit of the characteristic polynomial is dropped, since it does not affect the value of the remainder.A C programming language implementation of the CRC algorithm will be provided upon request.Table B–2: MODBUS TCP/IP FORMATDESCRIPTION SIZEMBAP header Transaction identifier 2 bytesProtocol identifier 2 bytesLength 2 bytesUnit identifier 1 byteFUNCTION CODE 2 bytesDATA N bytes