| Type Funktion |
DWORD |
| Input PT |
POINTER TO ARRAY OF BYTE (Datenpaket) |
| SIZE |
UINT (Größe des Arrays) |
| Output |
DWORD (errechnete CRC-Checksumme) |
| CRC_GEN generiert eine CRC-Checksumme aus einen beliebig großen Array of Byte. Beim Aufruf wird der Funktion ein Pointer auf das zu bearbeitende Array und dessen Größe in Bytes übergeben. Unter CoDeSys lautet der Aufruf |
CRC_GEN(ADR(Array), SIZEOF(Array),...), wobei Array der Name des zu bearbeitenden Arrays ist. ADR ist eine Standardfunktion, die den Pointer auf das Array ermittelt und SIZEOF ist eine Standardfunktion, die die Größe des Arrays ermittelt. Das Polynom kann ein beliebiges POLYNOM bis maximal 32 Bit Länge sein. Ein Polynom X³ + X² + 1 wird mit 101 dargestellt (1X³ + 1X² + 0X¹ + 1 X⁰). Das höchstwertige Bit, in diesem Fall 1*X³ wird dabei im Polynom nicht angegeben den es ist immer eins. Es können Polynome bis X³² (CRC 32) verarbeitet werden.Durch den Wert INIT kann dem CR eine Startwert übergeben werden, üblich sind hier 0000 und FFFF. Der zu verwendende Startwert ist der in der Literatur übliche „Direct Initial Value“. Der Eingan XOR_OUT legt fest mit welcher Bitfolge die Checksumme am Ende mit XOR verknüpft wird. Die Eingänge REV_IN und REV_OUT legen die Bitfolge der Daten Fest. Wenn REV_IN = TRUE wird jedes Byte mit LSB beginnend verarbeitet, REV_IN = FALSE wird jeweils mit MSB begonnen. REV_OUT=TRUE dreht entsprechend die Bitfolge der Checksumme um. Der Bautein benötigt eine Mindestlänge der zu verarbeitenden Daten von 4 Bytes, und ist nach oben nur durch die maximale Array Größe begrenzt. |
|
Die weiter unten folgende CRC Tabelle gibt nähere Auskunft über gebräuchliche CRC's und deren Setup Daten für CRC_GEN. Aufgrund der Vielzahl von möglichen und auch gebräuchlichen CRC's ist es uns nicht möglich eine vollständige Liste aufzuführen. |
| Für weitergehende Recherchen ist die Webseite http |
//regregex.bbcmicro.net/crc-catalogue.htm zu empfehlen. |
| Online Berechnungen zum testen sind mit folgendem Java Tool möglich |
http://zorc.breitbandkatze.de/crc.html |
| Gebräuchliche CRC'S UND Polynome |
|
| Setup PL |
UINT (Länge des Polynoms) |
| PN |
DWORD (Polynom) |
| INIT |
DWORD (INIT Daten) |
| REV_IN |
BOOL (Eingangsdaten Bytes Umkehren) |
| REV_OUT |
BOOL (Ausgangsdaten Umkehren) |
| XOR_OUT |
DWORD (Letztes XOR des Ausgangs) |