B-2 D30 Line Distance Protection System GE MultilinB.1 MODBUS RTU PROTOCOL APPENDIX BB• FUNCTION CODE: This is one of the supported functions codes of the unit which tells the slave what action to per-form. See the Supported Function Codes section for complete details. An exception response from the slave is indi-cated by setting the high order bit of the function code in the response packet. See the Exception Responses sectionfor further details.• 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.B.1.4 CRC-16 ALGORITHMThe CRC-16 algorithm essentially treats the entire data stream (data bits only; start, stop and parity ignored) as one contin-uous 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. Theresulting packet including CRC, when divided by the same polynomial at the receiver will give a zero remainder if no trans-mission errors have occurred. This algorithm requires the characteristic polynomial to be reverse bit ordered. The most sig-nificant 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: CRC-16 ALGORITHMSYMBOLS: --> data transferA 16 bit working registerAlow low order byte of AAhigh high order byte of ACRC 16 bit CRC-16 resulti,j loop counters(+) logical EXCLUSIVE-OR operatorN total number of data bytesDi i-th data byte (i = 0 to N-1)G 16 bit characteristic polynomial = 1010000000000001 (binary) with MSbit dropped and bit order reversedshr (x) right shift operator (th LSbit of x is shifted into a carry flag, a '0' is shifted into the MSbit of x, all other bitsare shifted right one location)ALGORITHM: 1. FFFF (hex) --> A2. 0 --> i3. 0 --> j4. Di (+) Alow --> Alow5. j + 1 --> j6. shr (A)7. Is there a carry? No: go to 8; Yes: G (+) A --> A and continue.8. Is j = 8? No: go to 5; Yes: continue9. i + 1 --> i10. Is i = N? No: go to 3; Yes: continue11. A --> CRC