Guide de l'utilisateur MLC 9000+
5.7 Calcul du total de contrôle CRC
Il s'agit d'un contrôle cyclique par redondance de 16 bits. Il est calculé conformément à une formule utilisant une division
récursive des données par un polynôme. L'apport dans chaque division représente le résidu des résultats de la
précédente.
La formule précise que l'apport est traité comme un numéro binaire à train de bits continu, le bit le plus significatif étant
transmis en premier. Toutefois, le dispositif de transmission envoie le bit le moins significatif en premier.
Selon la formule, le polynôme de division est 216 + 215 + 22 + 1 (0x 18005). Toutefois, deux modifications se produisent :
(i)
(ii)
Cela signifie que le polynôme a une valeur de 0x A001. L'algorithme CRC est le suivant :
er
XOR 1
données avec
MSB du résultat
Les 8 bits
ont-ils été
déplacés
Déplacer le
résultat vers la
droite d'un bit
Le
NON
bit est-il hors
du jeu ?
XOR résultat
avec
polynôme
59355, Publication 1 - Mai 04
L'ordre des bits étant inversé, le profil binaire l'est également : le MSB est donc le bit le
plus à droite.
Étant donné que seul le résidu est important, le MSB (bit le plus à droite) peut être
éliminé.
Précharger
8 bits de
résultat à 16 bits
avec 0xFF
données suivants
avec MSB du résultat
OUI
?
NON
OUI
Bit le plus
significatif
Bit le plus
significatif
COMMUNICATIONS MODBUS
XOR 8 bits de
NON
Données
terminées ?
OUI
Annexer
16 bits de
résultat
aux
données
Ordre de bit normal
Octet le plus
significatif
Ordre de bit inversé
Octet le moins
significatif
ORDRE DE BIT INVERSÉ UTILISÉ
Bit le
Octet le moins
moins
significatif
significatif
Bit le
Octet le plus
moins
significatif
significatif
5-9