Delta Electronics none manual Modbus CommunicationsASDA-AB Series

Models: none

1 355
Download 355 pages 2.82 Kb
Page 258
Image 258

Chapter 8 MODBUS CommunicationsASDA-AB 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 March 2008, Doc. Name: 2007PDD23000011

8-15

Page 258
Image 258
Delta Electronics none manual Modbus CommunicationsASDA-AB Series