Herunterladen Inhalt Inhalt Diese Seite drucken

Crc-Berechnung - Balluff BTL6-P111-M-A1-S115 series Datenblatt Und Anleitung

Inhaltsverzeichnis

Werbung

Verfügbare Sprachen
  • DE

Verfügbare Sprachen

  • DEUTSCH, seite 1
BTL6-P111-M_ _ _ _-A1-S115
Micropulse AT-Wegaufnehmer im Profilgehäuse rund
7
Arbeiten mit dem DPI/IP-Verfahren (Forts.)
7.3

CRC-Berechnung

Der CRC im Anfragetelegramm wird
aus den Zeichen CI und LEN be-
rechnet. Im Antworttelegramm um-
fasst die CRC-Berechnung die Zei-
chen CR, LEN und D0 ... Dn.
Implementierung der CRC-Berechnung in der Programmiersprache C:
typedef unsigned char byte;
typedef unsigned short word;
#define GENERATOR_POLINOM
#define CRC_OK
0
#define CRC_BAD 1
#define BUFFSIZE
byte bRxBuffer[BUFFSIZE];
byte bMessageLength;
int
CRCCalculation(void)
(
word wCRC;
byte bNextByte;
int
i, j;
wCRC = 0;
for ( i = 0; i < bMessageLength - 2; i++ ) {/* do not calculate on CRC bytes */
bNextByte = bRxBuffer[i];
for ( j = 0; j < 8; J++ ) {
if ( ( bNextByte & 0x01) ^ ((wCRC & 0x800) >> 15) ) {
}
else {
}
bNextByte >>= 1;
}
}
if ( (byte) ((wCRC & 0xff00) >> 8) == bRxBuffer[i] &&
(byte) (wCRC & 0x00ff) == bRxBuffer[i+1] ) {
return CRC_OK;
}
else return CRCBAD;
}
Pseudo-Code der CRC-Berechnung:
CRC = 0;
repeat
CRCNext = NextBit EXOR CRC(15);
CRC(15:1) = CRC(14:0);
CRC(0) = 0;
if CRCNext then
endif
until (last data bit)
Hinweis: NextBit ist das nächste Bit des seriellen Bitstroms. Die Start-,
Parity- und Stop-Bit werden nicht in die CRC-Berechnung einbezogen; sie
werden unabhängig durch die UART-Funktion behandelt. Die UART-Funktion
sendet/empfängt zuerst das LSB (least significant bit), deshalb muss der
CRC bei Bit 0 beginnen.
0x01021
48
/* received message, 1
/* number of characters in received message */
/* including CRC
wCRC <<= 1;
wCRC ^= GENERATOR_POLINOM;
wCRC <<= 1;
// initialize shift register
CRC(14:0) = CRC(14:0) EXOR 0x1021;
st
byte @ index 0
*/
// shift left by 1
*/
deutsch
7

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis