Delta Electronics manual Modbus CommunicationsASDA-B Series

Models: ASDA-B Series

1 321
Download 321 pages 45.58 Kb
Page 250
Image 250

Chapter 8 MODBUS CommunicationsASDA-B Series

The following is an example of CRC generation using C language. The function takes two arguments:

unsigned char* data;

unsigned char length

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(bit 0 ) = 1 */ reg_crc = (reg_crc >> 1)^0xA001;

} else {

reg_crc = (reg_crc>>1);

}

}

}

return reg_crc;

}

PC communication program example: #include<stdio.h> #include<dos.h> #include<conio.h> #include<process.h>

#define PORT 0x03F8 /* the address of COM 1 */ #define THR 0x0000

#define RDR 0x0000 #define BRDL 0x0000 #define IER 0x0001 #define BRDH 0x0001 #define LCR 0x0003 #define MCR 0x0004 #define LSR 0x0005 #define MSR 0x0006 unsigned char rdat[60];

/* read 2 data from address 0200H of ASD with address 1 */

unsigned char tdat[60]={‘:’,’0’,’1’,’0’,’3’,’0’,’2’,’0’,’0’,’0’,’0’,’0’,’2’,’F’,’8’,’\r’,’\n’}; void main() {

Revision January 2009

8-15

Page 250
Image 250
Delta Electronics manual Modbus CommunicationsASDA-B Series