User manual

Chapter 8 MODBUS Communications ASDA-A User Manual
4th Edition 2005/11/30, HE03 © DELTA ELECTRONICS, INC. ALL RIGHTS RESERVED
8-12
End1, End0 (Communication End)
ASCII Mode:
In ASCII mode, (0DH) stands for character ’\r’ (carriage return) and (0AH) stands for character ’\n’ (new
line), they indicate communication end.
RTU Mode:
In RTU mode, a silent interval of more than 10ms indicates communication end.
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