Delta EB3000 Series User Manual page 478

Elevator drive
Table of Contents

Advertisement

4. Checksum
ASCII mode (LRC Check)
LRC (Longitudinal Redundancy Check) is calculated by summing up the values of the bytes from ADR1 to the
last data character then calculating the hexadecimal representation of the 2's-complement negation of the sum.
Example:
01H + 03H + 21H + 02H + 00H + 02H = 29H, the 2's-complement negation of 29H is D7H.
RTU mode (CRC check)
CRC (Cyclical Redundancy Check) is calculated with the following steps:
Step 1: Load a 16-bit register (called CRC register) with FFFFh.
Step 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.
Step 3: Examine the LSB of CRC register.
Step 4: If the LSB of CRC register is 0, shift the CRC register one bit to the right, fill MSB with zero, then repeat
step 3. If the LSB of CRC register is 1, shift the CRC register one bit to the right, fill MSB with zero,
Exclusive OR the CRC register with the polynomial value A001H, then repeat step 3.
Step 5: Repeat step 3 and 4 until you perform eight shifts. This processes a complete 8-bit byte.
Step 6: Repeat step 2 through 5 for the next 8-bit byte of the command message. Continue doing this until all
bytes are processed. 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, that is, the
lower order byte is transmitted first.
The following is an example of CRC generation using C language. The function takes two arguments:
unsigned char* data
unsigned char length  // the quantity of bytes in the message buffer
unsigned int crc_chk(unsigned char* data, unsigned char length)
{
int j;
unsigned int reg_crc=0Xffff;
while(length--){
reg_crc ^= *data++;
for(j=0;j<8;j++){
if(reg_crc & 0x01){ /* LSB(b0)=1 */
reg_crc=(reg_crc>>1) ^ 0Xa001;
}else{
reg_crc=reg_crc >>1;
}
}
}
return reg_crc;
}
 // a pointer to the message buffer
// return register to CRC
B-9
Appendix B. Modbus ProtocolEB3000

Advertisement

Table of Contents
loading

Table of Contents