Calcul des codes de contrôle dans le protocole MODBUS-RTU
Dans le protocole MODBUS-RTU, deux modes de vérification de la précision des
données envoyées coexistent:
• Contrôle de parité sur un byte individuel
• Contrôle à redondance cyclique (CRC) sur l'entier paquet transmis
Les codes sont calculés à partir du dispositif transmetteur en fonction des données à
envoyer. Le dispositif récepteur fait un nouveau calcul des codes en fonction des
données reçues et les compare avec les codes annexés au message. Si les codes sont
corrects, le message est accepté et élaboré.
Contrôle de parité
C'est un contrôle effectué sur un byte individuel.
Un bit est ajouté à l'extrémité de chaque byte d'information de façon que le numéro
total de bits 1 soit:
• pair, si on utilise la parité pair
• impair, si on utilise la parité impair
Exemple: byte = 1100 0101, le numéro de bits 1 est quatre. Le bit de parité sera 0 si
on emploie la parité pair, ou 1 si on utilise la parité impair .
Le mode préréglé en usine du protocole est la parité pair.
L'instrument permet de modifier ou de désactiver le contrôle
paramètre de configuration P#060.
Code CRC
Le code CRC est une valeur binaire à 16 bits calculée en fonction de tous les bytes du
message et est ajoutée à l'extrémité du message à transmettre.
La procédure de calcul du code est la suivante:
1. Les 16 bits du registre CRC sont tous initialisés à 1.
2. On effectue l'OU exclusif (XOR) entre le byte de poids faible du CRC et le
premier byte du message (en excluant les bits de début, de parité et d'arrêt).
Le résultat devient la nouvelle valeur du CRC.
3. On effectue un d à droite du registre CRC, en insérant un 0 à gauche comme bit
de poids fort.
4. On examine le bit déplacé à droite après le décalage: si c'est 1, on effectue l'OU
exclusif entre la valeur CRC et la valeur fixe «1010 0000 0000 0001». Le
résultat devient la nouvelle valeur du CRC.
5. On répète les points 3 et 4 jusqu'à effectuer un total de 8 glissements.
6. On répète les points 2, 3, 4 et 5 pour tous les bytes du message.
7. La valeur CRC finale est placée à l'extrémité du message en partant du byte de
poids faible, qui sera donc transmis avant du byte de poids fort.
HD45 / HD46
ANNEXE A
- 67 -
de
parité par moyen du
V2.4