Delta C2000 Series User Manual page 552

Vector control drive
Hide thumbs Also See for C2000 Series:
Table of Contents

Advertisement

RTU mode:
CRC (Cyclical Redundancy Check) is calculated by 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  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)
{
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 */
}else{
}
}
}
return reg_crc;
}
reg_crc=(reg_crc>>1) ^ 0xa001;
reg_crc=reg_crc >>1;
// return register CRC
12.1-09-7
Chapter 12 Description of Parameter SettingsC2000

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents