Process Unit 73 O2 -2 - Knick
Process Unit 73 O2 -2 - Knick
Process Unit 73 O2 -2 - Knick
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Process</strong> <strong>Unit</strong> <strong>73</strong> O 2 -2<br />
4ème zone : caractère de contrôle CRC16<br />
Le caractère de contrôle cyclique par redondance CRC16 (16-bit Cyclic Redundancy Check) se<br />
forme conformément à CCITT-X.25.<br />
Polynome de contrôle selon CCITT-X.25 = x 16 + x 12 + x 5 + 1<br />
Le caractère CRC représente la somme de contrôle de tous les bytes transmis. Il se transmet sous la<br />
forme de 2 bytes binaires, d’abord le byte le plus élevé, puis le plus faible. Le caractère CRC16<br />
transmis est structuré de telle sorte qu’il complète toujours l’ensemble du caractère de contrôle pour<br />
obtenir 0000 hex . L’ensemble de l’enchaînement reçu n’est valable et ne peut être interprété que<br />
lorsque CRC = 0000 hex . Sinon, il faut ignorer toute l’information.<br />
Le caractère CRC16 possède la distance de Hamming 4 et est entre autre utilisé dans les<br />
protocoles de bus HDLC, SDLC et ADCP.<br />
Procédure pour générer un caractère de contrôle CRC :<br />
Pour complèter l’enchaînement afin d’obtenir CRC = 0000 hex , il faut tout d’abord positionner le caractère<br />
CRC dans l’enchaînement sur 0000 hex . On inscrit alors dans l’enchaînement le caractère de<br />
contrôle obtenu par l’intermédiaire de cet enchaînement (CRC compris). Le caractère CRC devient le<br />
caractère CRC total 0000 hex .<br />
Formation d’un caractère de contrôle CRC :<br />
Variables :<br />
BUFFER =<br />
Zone de mémoire de l’information complète y compris header et zone<br />
CRC<br />
BUFPOINTER =<br />
Aiguille sur le caractère dans le BUFFER<br />
LONGUEUR = Longueur de l’information complète (zones 1 à 4)<br />
BYTE =<br />
Caractère du BUFFER en traitement<br />
REPERE =<br />
Mémoire intermédiaire pour le bit de valeur maximale (MSB)<br />
CRC =<br />
CRC16<br />
BEGIN crc<br />
. CRC = 0000 hex<br />
. BUFPOINTER = au début du BUFFER<br />
. WHILE (LONGUEUR != 0)<br />
. . bitcounter = 0<br />
. . BYTE = caractère sur lequel se trouve le BUFPOINTER<br />
. . BUFPOINTER sur le caractère suivant (incrément)<br />
. . DO<br />
. . . REPERE = bit le plus élevé bit 15 du CRC<br />
. . . repousser le CRC d’1 bit vers la gauche (CRC = CRC * 2)<br />
. . . IF (bit le plus élevé bit 7 du BYTE == ”1”)<br />
. . . . CRC = CRC + 1<br />
. . . ENDIF<br />
. . . Repousser le BYTE d’1 bit vers la gauche (BYTE = BYTE*2)<br />
. . . IF (REPERE == ”1”)<br />
. . . . CRC = CRC exclusif–ou 1021 hex<br />
. . . ENDIF<br />
. . . bitcounter = bitcounter + 1<br />
. . WHILE (bitcounter < 8)<br />
. . LONGUEUR = LONGUEUR – 1<br />
. END WHILE<br />
END crc<br />
12–32 Commandes d’interface