Annexe
B.6 Calcul du CRC
La dernière condition se basera sur les éléments suivants :
Seule la dernière valeur de débit diffusée en interne est vérifiée. La vitesse de diffusion
attendue est lue à la mise sous tension. Si une diffusion n'est pas reçue après 10 fois la
vitesse de diffusion attendue, la vitesse de diffusion est relue dans l'USM (elle a peut-être
changé depuis la mise sous tension). Si la vitesse de diffusion n'a pas changé (et qu'elle
n'était pas égale à zéro), l'indicateur d'exécution est désactivé. La réception de dix valeurs
(de débit) diffusées à l'intérieur de 10 fois la fenêtre attendue activera de nouveau
l'indicateur d'exécution.
B.6
Calcul du CRC
Le champ Contrôle de redondance cyclique (CRC) comporte deux octets contenant une
valeur binaire à 16 bits. La valeur CRC est d'abord générée par l'émetteur qui l'adjoint au
message. Le récepteur recalcule le CRC pendant la réception du message et compare la
valeur calculée à la valeur effective qu'il a reçue dans le champ CRC. Une erreur est
signalée si les deux valeurs sont différentes.
Voici une brève description de la manière dont le CRC est calculé. Cette description est
suivie d'un exemple de programmation en C.
Calcul du CRC
1. Chargez des FFFF hexa (que des 1) dans un registre 16 bits. Appelez-le le registre CRC.
2. Effectuez l'opération booléenne OU exclusif sur le premier octet de 8 bits du message et
3. Décalez le registre CRC d'un bit vers la droite (vers le bit de poids faible) et placez un
4. (Si le bit de poids faible a la valeur 0) : Répétez l'opération 3 (nouveau décalage). (Si le
5. Répétez les étapes 3 et 4 jusqu'à ce que 8 décalages aient eu lieu. Une fois cela fait, un
6. traité.
7. Répétez les étapes 2 à 5 pour l'autre octet de 8 bits du message. Poursuivez jusqu'à ce
8. Le contenu final du registre CRC constitue la valeur CRC.
9. Lorsque le CRC est placé dans le message, il faut permuter ses octets de poids fort et de
Transfert du CRC dans le message
Lors de la transmission du CRC de 16 bits (deux octets de 8 bits) dans le message, l'octet
de poids faible est transmis en premier, suivi de l'octet de poids fort.
68
l'octet de poids faible du registre CRC à 16 bits et placez le résultat dans le registre CRC.
zéro dans le bit de poids fort. Extrayez et examinez le bit de poids faible.
bit de poids faible a la valeur 1) : Effectuez une opération booléenne OU exclusif entre le
registre CRC et la valeur polynômiale 0xA001 (1010 0000 0000 0001).
octet de 8 bits complet aura été
que tous les octets aient été traités.
poids faible comme décrit ci-dessous.
Instructions de service, 06/2010, A5E03089265-01
Modbus RTU RS485