Communication Protocol
131
Bit checkout of the byte
The user can select different bit checkouts or non-checkout, which impacts the check bit setting of
each byte.
The definition of even checkout: add an even check bit before the data transmission to illustrate the
number of "1" in the data transmission is odd number or even number. When it is even, the check byte
is "0", otherwise, the check byte is"1". This method is used to stabilize the parity of the data.
The definition of odd checkout: add an odd check bit before the data transmission to illustrate the
number of "1" in the data transmission is odd number or even number. When it is odd, the check byte
is "0", otherwise, the check byte is"1". This method is used to stabilize the parity of the data.
For example, when transmitting "11001110", there are five "1" in the data. If the even checkout is
applied, the even check bit is "1"; if the odd checkout is applied; the odd check bit is "0". The even and
odd check bit is calculated on the check bit position of the frame. And the receiving devices also carry
out even and odd checkout. If the parity of the receiving data is different from the setting value, there
is an error in the communication.
CRC check
The checkout uses RTU frame format. The frame includes the frame error detection field which is
based on the CRC calculation method. The CRC field is two bytes, including 16 figure binary values.
It is added into the frame after calculated by transmitting device. The receiving device recalculates the
CRC of the received frame and compares them with the value in the received CRC field. If the two
CRC values are different, there is an error in the communication.
During CRC, 0*FFFF will be stored. And then, deal with the continuous 6-above bytes in the frame
and the value in the register. Only the 8Bit data in every character is effective to CRC, while the start
bit, the end and the odd and even check bit is ineffective.
The calculation of CRC applies the international standard CRC checkout principles. When the user is
editing CRC calculation, he can refer to the relative standard CRC calculation to write the required
CRC calculation program.
Here provided a simple function of CRC calculation for the reference (programmed with C language):
unsigned int crc_cal_value(unsigned char *data_value,unsigned char data_length)
{
int i;
unsigned int crc_value=0xffff;
while(data_length--)
{ crc_value^=*dat+;
for(i=0;i<8;i++)
{
if(crc_value&0x0001)crc_value=(crc_value>>1)^0xa001;
else crc_value=crc_value>>1;
} }
return(crc_value);
}