0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43,
0x83, 0x41, 0x81, 0x80,
0x40
} ;
unsigned short int CRC16(unsigned char *puchMsg, unsigned short int
usDataLen)
{
table */
}
Siehe auch
Eine CRC-Prüfsumme kann auf mehrere Arten berechnet werden. Weitere Informationen
finden Sie auf der Website der Modbus-Organisation (http://www.modbus.org/). Hier sind
detaillierte Beschreibungen und Programmierbeispiele verfügbar.
MAG 8000 Modbus RTU
Betriebsanleitung, 04/2016, A5E03828417-AA
unsigned char uchCRCHi = 0xFF; /* high byte of CRC initialized */
unsigned char uchCRCLo = 0xFF; /* low byte of CRC initialized */
unsigned uIndex ;
while(usDataLen--)
{
uIndex = uchCRCHi ^ *puchMsg++ ; /* calculate the CRC */
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
uchCRCLo = auchCRCLo[uIndex] ;
}
#ifdef INTEL_LIKE_PROCESSOR
return (unsigned short int)((uchCRCLo << 8) | uchCRCHi);
#else
return (unsigned short int)((uchCRCHi << 8) | uchCRCLo);
#endif
/* will index into CRC lookup
/* pass through message buffer */
Anhang
B.2 CRC-Berechnung
81