Siemens SITRANS F MAG 8000 Modbus RTU Instructions De Service page 83

Masquer les pouces Voir aussi pour SITRANS F MAG 8000 Modbus RTU:
Table des Matières

Publicité

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
l'octet de poids faible du registre CRC à 16 bits et placez le résultat dans le registre CRC.
3. Décalez le registre CRC d'un bit vers la droite (vers le bit de poids faible) et placez un zéro
dans le bit de poids fort. Extrayez et examinez le bit de poids faible.
4. (Si le bit de poids faible a la valeur 0) : Répétez l'opération 3 (nouveau décalage). (Si le 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).
5. Répétez les étapes 3 et 4 jusqu'à ce que 8 décalages aient eu lieu. Une fois cela fait, un
octet de 8 bits complet aura été traité.
6. Répétez les étapes 2 à 5 pour l'autre octet de 8 bits du message. Poursuivez jusqu'à ce que
tous les octets aient été traités.
7. Le contenu final du registre CRC constitue la valeur CRC.
8. Lorsque le CRC est placé dans le message, il faut permuter ses octets de poids fort et de
poids faible comme décrit ci-dessous.
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.
Par exemple, si la valeur CRC est 1241 hexa (0001 0010 0100 0001) :
Adr
Fonc
Exemple de programmation CRC
/* Tableau des valeurs CRC pour l'octet de poids fort */
static __flash unsigned char auchCRCHi[] = {
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80,
0x41, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00,
0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
MAG 8000 Modbus RTU
Instructions de service, 04/2016, A5E03828423-AA
Nombre de
Donnée n
données
Donnée n
Donnée n
+1
+2
B.2 Calcul du CRC
Donnée n
CRC pds
+x
faible
0x41
Annexe
CRC pds
fort
0x12
83

Publicité

Table des Matières
loading

Table des Matières