23.03.2014 Views

Process Unit 73 O2 -2 - Knick

Process Unit 73 O2 -2 - Knick

Process Unit 73 O2 -2 - Knick

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!