APPENDIX B
L'algorithme CRC-16 traite essentiellement la séquence complète de données (bits de données seulement; démarrage,
arrêt et parité ignorées) en tant que un seul nombre binaire continu. Ce nombre est en premier décalé à gauche de 16 bits
et divisé par une caractéristique polynomiale (11000000000000101B). La balance de 16 bits de la division est ajoutée à la
fin du paquet, MSByte en premier. Le paquet résultant comprend le CRC, lorsque divisé par le même polynomiale à la
réception donnera une balance de 0 si aucune erreur de transmission n'est survenue. Cet algorithme exige que la car-
actéristique polynomiale soit inverse en bit commandé. Le bit le plus significatif de la caractéristique polynomial est aban-
donné, étant donné qu'il n'affecte pas la valeur de la balance.
L'implémentation de la langue de programmation «C» de l'algorithme CRC sera fourni sur demande.
Table B–2: CRC-16 ALGORITHM
SYMBOLES:
-->
transfert de données
A
registre d'opération 16-bit
Alow
byte de «A» d'ordre moins éléve
Ahigh
byte de «A» d'ordre éléve
CRC
résultante de 16-bits de CRC-16
i,j
compteurs de boucle
(+)
opérateur logique «ou-exclusive»
N
nombre total de bytes de données
Di
i-ième byte de données
G
polynomiale caractéristique de 16 bits = 1010000000000001 (binaire) avec «bitMS» abandonné et ordre
de bit inversé
shr (x)
Opérateur de décalage de droite (bitLS de x est décalé dans un porteur de drapeau, un «0» est décalé
dans le bitMS de x, tous les autres bits sont décalés d'une position à droite)
ALGORITHME:
1.
FFFF (hex) --> A
2.
0 --> i
3.
0 --> j
4.
Di (+) Alow --> Alow
5.
j + 1 --> j
6.
shr (A)
7.
Y a-t-il un porteur?
8.
Est-ce que j = 8?
9.
i + 1 --> i
10.
Est-ce que i = N?
11.
A --> CRC
GE Multilin
Non: aller à 8; Oui: G (+) A → A et continuer.
Non: aller à 5; Oui: continuer
Non: aller à 3; Oui: continuer
Relais de gérance de générateur G60
B.1 PROTOCOLE MODBUS
B.1.4 ALGORITHME CRC-16
B-3
B