CHAPTER 12: DESCRIPTION OF PARAMETER SETTINGS
217 63-4528—04
RTU Mode
Check sum
ASCII mode:
LRC (Longitudinal Redundancy Check) is calculated by summing up, module 256, and the values of the bytes from ADR1 to last
data character then calculating the hexadecimal representation of the 2’s-complement negation of the sum.
For example,
01H+03H+21H+02H+00H+02H=29H, the 2’s-complement negation +1 of 29H is D7H.
RTU mode:
CRC (Cyclical Redundancy Check) is calculated by the following steps:
1. Load a 16-bit register (called CRC register) with FFFFH.
2. Exclusive OR the first 8-bit byte of the command message with the low order byte of the 16-bit CRC register, putting the
result in the CRC register.
3. Examine the LSB of CRC register.
4. If the LSB of CRC register is 0, shift the CRC register one bit to the right with MSB zero filling, then repeat step 3. If the LSB
of CRC register is 1, shift the CRC register one bit to the right with MSB zero filling, Exclusive OR the CRC register with the
polynomial value A001H, then repeat step 3.
5. Repeat step 3 and 4 until eight shifts have been performed. When this is done, a complete 8-bit byte will have been pro-
cessed.
6. Repeat step 2 to 5 for the next 8-bit byte of the command message. Continue doing this until all bytes have been pro-
cessed. The final contents of the CRC register are the CRC value. When transmitting the CRC value in the message, the
upper and lower bytes of the CRC value must be swapped, i.e. the lower order byte will be transmitted first.
The following is an example of CRC generation using C language. The function takes two arguments:
Unsigned char* data ß a pointer to the message buffer
Unsigned char length ß the quantity of bytes in the message buffer
The function returns the CRC value as a type of unsigned integer.
Unsigned int crc_chk (unsigned char* data, unsigned char length)
{
The second data content
‘0’
‘F’
‘A’
‘0’
LRC Check
‘9’
‘A’
END
CR
LF
Command Message: Response Message
ADR 01H ADR 01H
CMD 10H CMD 1 10H
Starting data address 05H Starting data address 05H
00H 00H
Number of data
(count by word)
00H Number of data
(count by word)
00H
02H 02H
Number of data
(count by byte)
04
CRC Check Low
41H
The first data content 13H CRC Check High 04H
88H
The second data content 0FH
A0H
CRC Check Low ‘9’
CRC Check High ‘A’