Calcul CRC Modbus en C#
- Par automationsense
- Le 28/07/2015
- Dans Tutoriels automatisme
- 0 commentaire
Lorsque vous communiquez avec des équipements à travers votre PC, vous utilisez habituellement le port série RS232.Le CRC est utilisé pour vérifier l'intégrité du message envoyé lors de l'envoi de commande.Le CRC est aussi utilisé en liaison modbus afin de vérifier les trames envoyées.L'émetteur du message calcule une valeur "CheckSum" qui est fonction du contenu du message, puis l'ajoute à la fin du message. Le récepteur fait le même calcul, et contrôle que le "CheckSum" a la même valeur que celui de l'émetteur.
Pour la vérification de l'intégrité des trames Modbus, il existe 2 types de méthodes : Le LRC (Longitudinal Redundancy Check) qui est utilisé uniquement lorsque vous communiquez en modbus ASCII quant au Cyclic Redundancy Check ou CRC, il est utilisé en modbus RTU.Le champ de contrôle de trame de message d'erreur contient deux octets de 8 bits qui contiennent le résultat du calcul du CRC effectué sur le contenu du message.Vous retrouverez en bas de page une classe C# permettant le calcul de CRC que vous pourrez inclure dans votre projet.Ici,nous allons vous expliquer comment le calcul de CRC est effectué en modbus RTU pour lire les valeurs du "holding register".
Utilisation du code
Ajouter la classe CRC_Modbus.cs à votre projet,ajouter l'espace de noms CRC, créez un objet de la classe CRC_Modbus. Il existe une méthode CRC16 qui calcule et renvoie deux octets CRC de 8 bits. Dans le constructeur CRC_Modbus, les valeurs de la table CRC sont initialisés (c'est le CRC_table ,tableau qui a une taille de 512).La fonction ci-dessous permet de calculer le CRC d'une trame Modbus.
Supposons qu'on veuille envoyer une trame,ci-dessous la méthode d'envoie.La variable modbus_bytes correspond à la trame à envoyer,device adresse l'adresse du device avec lequel on veut communiquer,le data_type,le code fonction(ici on veut lire dans le holding register),le start_adress l'adresse du mot à lire codé sur 2 bytes poids fort et poids faible,le length le nombre de mot à lire codé aussi sur 2 bytes poids fort et faible.Après le calcul du CRC,la trame(CRC inclu) peut être envoyé via le port série.
crc-calculation-for-modbus.zip (2.29 Ko)
S'inscrire à la formation : Comprendre et mettre en oeuvre les réseaux industriels modbus:
automatisme réseaux industriels Modbus RS232 série CRC formation automatisme automate programmable API
Ajouter un commentaire