Etudiant
Dissertation : Etudiant. Rechercher de 53 000+ Dissertation Gratuites et Mémoireseçues n octets Mot de contrôle 2 octets
Si une erreur apparaît, le code fonction est modifié pour indiquer que la réponse est une réponse d’erreur. Les données contiennent alors un code (code d’exception) permettant de connaître le type d’erreur. Le champ de contrôle permet au maître de confirmer que le message est valide. N° d’esclave 1 octet Code fonction 1 octet Code d’exception 1 octet Mot de contrôle 2 octets
Protocole MODBUS
Pascal DEREUMAUX
novembre 2004
3/6
Format général d’une trame Deux types de codage peuvent être utilisés pour communiquer sur un réseau Modbus. Tous les équipements présents sur le réseau doivent être configurés selon le même type. Type ASCII : chaque octet composant une trame est codé avec 2 caractères ASCII (2 fois 8 bits). END 2 caractères « CR LF » LRC : C’est la somme en hexadécimal modulo 256 du contenu de la trame hors délimiteurs, complémentée à 2 et transmise en ASCII. Type RTU (Unité terminale distante) : chaque octet composant une trame est codé sur 2 caractères hexadécimaux (2 fois 4 bits). START Silence Adresse 1 octet Fonction 1 octet Données n octets CRC 2 octets END Silence START 1 caractère Adresse Fonction Données 2 caractères 2 caractères n caractères LRC 2 caractères
La taille maximale des données est de 256 octets. Le mode ASCII permet d’avoir des intervalles de plus d’une seconde entre les différents caractères sans que cela ne génère d’erreurs, alors que le mode RTU permet un débit plus élevé pour une même vitesse de transmission. L’ensemble des informations contenues dans le message est exprimé en hexadécimal. Le maître s’adresse à l’esclave dont l’adresse est donnée dans le champ prévu à cet effet. Le code fonction indique à l’esclave le type d’action à réaliser. Exemple : lecture de registre, code de fonction (03)HEX, écriture dans un registre, code de fonction (10)HEX. Le champ de données est codé sur n mots en hexadécimal de 00 à FF, soit sur n octets. Selon le code fonction, le champ de données contient diverses informations complémentaires permettant à l’esclave de décoder le message (voir l’exemple plus bas). Dans le cas du mode RTU, le champ contrôle d’erreur CRC (Contrôle de Redondance Cyclique) contient une valeur codée sur 16 bits. Nota : Le contrôle de parité peut dans certains cas être supprimé car d’autres contrôles d’échanges sont mis en œuvre (cas du contrôle CRC encore appelé contrôle par Checksum) L’esclave renvoie sa réponse ; il place sa propre adresse dans le champ adresse afin que le maître puisse l’identifier. Il utilise ensuite le champ fonction pour indiquer si la réponse contient une erreur. Pour une réponse normale, l’esclave reprend le même code fonction que celui du message envoyé par le maître, sinon il renvoie un code erreur correspondant au code original avec son MSB à 1. Le champ de données contient diverses informations dépendant du code fonction. Le champ contrôle d’erreur contient une valeur codée sur 16 bits. Cette valeur est le résultat d’un CRC (Cyclical Redundancy Check) calculé à partir d’un message.
Protocole MODBUS
Pascal DEREUMAUX
novembre 2004
4/6
Support de transmission Chaque octet composant un message est transmis en mode RTU de la manière suivante : Start Start Bit 0 Bit 0 Bit 1 Bit 1 Bit 2 Bit 2 Sans contrôle de parité Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 7 Parité Stop Stop
Avec contrôle de parité Bit 3 Bit 4 Bit 5 Bit 6
Avant et après chaque message, il doit y avoir un silence équivalent à 3,5 fois le temps de transmission d’un mot.
Message du maître
Réponse de l’esclave
Délai de 3,5 fois le temps de transmission d’un mot
Délai de 3,5 fois le temps de transmission d’un mot
L’ensemble du message doit être transmis de manière continue. Si un silence de plus de 1,5 fois le temps de transmission d’un mot intervient en cours de transmission, le destinataire du message considérera que la prochaine information qu’il recevra sera l’adresse du début d’un nouveau message. Le protocole MODBUS ne définit que la structure des messages et leur mode d’échange. On peut utiliser n’importe quel support de transmission RS 232, RS 422 ou RS 485, mais la liaison RS 485 est la plus répandue car elle autorise le « multipoints ». Exemple d’échange entre un maître et un esclave Trame émise par le maître : 04 03 00 02 0001 25 CA - Adresse esclave : 04 - Code fonction 03 = lecture registre - N° du registre de début de lecture : MSB : 00 et LSB : 02 - Nombre de registre de lecture : MSB : 00 et LSB : 01 - CRC : 25 CA Réponse de l’esclave avec erreur : 04 83 02 01 31 - Adresse esclave : 04 - Code fonction : lecture avec MSB = 1 : 83 - Code erreur (n° registre) : 02 - CRC : 01 31 Réponse de l’esclave sans erreur : 04 03 02 02 58 B8 DE - Adresse esclave : 04 - Code fonction : lecture registre : 03 - Nombre d’octets données : 02 - Données du registre 0002 : MSB 02 et LSB : 58 - CRC : B8 DE
Protocole MODBUS Pascal DEREUMAUX novembre 2004
5/6
Services supportés par MODBUS MODBUS offre 19 fonctions différentes. Elles se caractérisent par un code fonction sur un octet (en hexadécimal). Tous les équipements ne supportent pas tous les codes fonction.
Code H’01’ H’02’ H’03’ H’04’ H’05’ H’06’ H’07’ H’08’ H’09’ H’0A’ H’0B’ H’0C’ H’0D’ H’0E’ H’0F’ H’10’ H’11’ H’12’ H’13’
Nature des fonctions MODBUS Lecture de n bits de sortie consécutifs Lecture de n bits de sortie consécutifs Lecture de n mots de
...