Articles

MODBUS RTU

Introduction à l’adressage Modbus RTU, aux codes de fonction et à la présentation du réseau Modbus RTU

Modbus RTU est un protocole série ouvert dérivé de l’architecture maître/esclave développée à l’origine par Modicon (maintenant Schneider Electric). C’est un protocole de niveau série largement accepté en raison de sa facilité d’utilisation et de sa fiabilité. Modbus RTU est largement utilisé au sein des systèmes de gestion des bâtiments (BMS) et des systèmes d’automatisation industrielle (IAS).

Les messages Modbus RTU sont une structure simple de 16 bits avec un CRC (Cyclic-Redundant Checksum). La simplicité de ces messages a pour but d’assurer la fiabilité. En raison de cette simplicité, la structure de registre Modbus RTU de base de 16 bits peut être utilisée pour emballer des données à virgule flottante, des tables, du texte ASCII, des files d’attente et d’autres données non liées.

Ce protocole utilise principalement une interface série RS-232 ou RS-485 pour les communications et est supporté par presque tous les logiciels commerciaux SCADA, HMI, OPC Server et d’acquisition de données du marché. Il est donc très facile d’intégrer des équipements compatibles Modbus dans des applications de surveillance et de contrôle nouvelles ou existantes.

Un peu d’histoire du Modbus RTU

On pourrait appeler le protocole Modbus le grand-père des réseaux industriels. Il est vraiment aussi vieux que les collines et a les moustaches pour le prouver. À l’ère actuelle de la connectivité Internet et des services Web, le message non connecté de Modbus et la structure de communication simple demande-réponse sont presque désuets. Presque aussi vieux que le premier contrôleur logique programmable, le Modicon 084, qui, à l’époque, était appelé PC pour contrôleur programmable.

Modbus RTU est un standard ouvert, ce qui signifie que les fabricants peuvent l’intégrer dans leurs équipements sans avoir à payer de royalties. C’est le protocole de communication le plus répandu dans le domaine de l’automatisation industrielle et c’est aujourd’hui le moyen le plus communément disponible pour connecter des appareils électroniques industriels.

Modbus est largement utilisé par de nombreux fabricants dans de nombreux secteurs. Modbus est généralement utilisé pour transmettre les données des instruments de contrôle à un contrôleur logique ou à un système d’archivage des données. Dans l’automatisation des bâtiments, par exemple, la température et l’humidité sont souvent communiquées à un ordinateur pour un stockage à long terme. Modbus est souvent utilisé pour connecter un ordinateur de supervision avec une unité terminale distante (RTU) dans les systèmes de contrôle de supervision et d’acquisition de données (SCADA).

Pourquoi Modbus est-il si populaire ?

La simplicité est la raison pour laquelle Modbus est si répandu. Le fait que Modbus ait été créé par l’un des plus grands fabricants d’automates à l’époque n’a pas non plus nui et l’a rendu ouvert et largement disponible. Modbus nécessite également très peu d’espace de code processeur ou de RAM. Bien que cela ne soit pas aussi important aujourd’hui compte tenu des processeurs puissants et de la technologie dont nous disposons, c’était très important dans les premières années de l’automatisation industrielle lorsque les processeurs utilisaient la technologie 8 bits et que les ressources comme la RAM et la ROM étaient extrêmement coûteuses et rares.

La vérification des messages est une autre raison pour laquelle Modbus a été si populaire. La vérification CRC et LRC signifie que les erreurs de transmission sont vérifiées avec une précision de 99 %.

Communication Modbus

Le protocole Modbus RTU utilise une technique maître/esclave pour communiquer entre les appareils. Ce qui signifie que toute application qui utilise le protocole Modbus RTU aura un maître Modbus et au moins un esclave Modbus. Un maître Modbus est généralement un ordinateur de supervision hôte exécutant un logiciel qui communiquera avec un ou plusieurs dispositifs Modbus esclaves.

modbusrtu_diagram

Modbus permet une communication maître/esclave entre des dispositifs connectés par des bus ou des réseaux. Sur le modèle OSI, Modbus est positionné au niveau 7. Modbus est destiné à être un protocole de demande/réponse et fournit des services spécifiés par des codes de fonction. Les codes de fonction de Modbus sont des éléments des PDUs (Protocol Data Unit) de demande/réponse de Modbus.

Pour construire l’unité de données de l’application Modbus, le client doit initier une transaction Modbus. C’est la fonction qui informe le serveur sur le type d’action à effectuer. Le format d’une requête initiée par un maître est établi par le protocole d’application Modbus. Le champ du code de fonction est alors codé sur un octet. Seuls les codes compris entre 1 et 255 sont considérés comme valides, les codes 128 à 255 étant réservés aux réponses d’exception. Lorsque le maître envoie un message à l’esclave, c’est le champ de code de fonction qui informe le serveur du type d’action à effectuer.

Vous aimez ce que vous lisez ?

Souscrivez à notre série d’e-mails Automation Education pour apprendre les tenants et aboutissants des principaux protocoles industriels dans un format hebdomadaire de la taille d’un octet !

Pour définir des actions multiples, certaines fonctions se verront ajouter des codes de sous-fonction. Par exemple, le maître peut lire les états ON/OFF d’un groupe de sorties ou d’entrées discrètes. Il peut également lire/écrire le contenu des données d’un groupe de registres MODBUS. Lorsque le maître reçoit la réponse de l’esclave, le champ du code de fonction est utilisé par l’esclave pour indiquer une réponse sans erreur ou une réponse d’exception. L’Esclave fait écho à la demande du code de fonction initial dans le cas d’une réponse normale.

Représentation des données Modbus RTU

Comme tout ce qui concerne Modbus, la représentation des données est simple. En fait, les données sont représentées plus simplement dans Modbus que dans tout autre protocole industriel que vous trouverez. Le bit de moindre importance est envoyé et reçu en premier. Tous les appareils du réseau doivent interpréter chaque octet transmis de manière analogue de cette façon.

Il n’existe aucune méthode de reconnaissance automatisée des vitesses de transmission. La même vitesse de transmission doit être utilisée par le ou les esclaves et le maître connectés au bus. Aucune vitesse de transmission spécifique n’est spécifiée par le Modbus : les vitesses de transmission typiques sont 9600 ou 19200.

Un octet transmis est codé comme : Valeur binaire de 8 bits, hexadécimale 0 - 9 et A - F. Le bit le moins significatif est envoyé et reçu en premier
Un octet transmis est codé comme : Valeur binaire de 8 bits, hexadécimale 0 – 9 et A – F. Le bit le moins significatif est envoyé et reçu en premier.

Il n’y a que deux types de données dans Modbus : les bobines et les registres. Les bobines sont simplement des bits uniques. Les bits peuvent être ON (1) ou OFF (0). Certaines bobines représentent des entrées, ce qui signifie qu’elles contiennent le statut d’une entrée physique discrète. Ou bien elles représentent des sorties, c’est-à-dire qu’elles contiennent l’état d’un certain signal de sortie discret physique. Les registres sont simplement des données de registre non signées de 16 bits. Les registres peuvent avoir une valeur comprise entre 0 et 65535 (0 à FFFF en hexadécimal). Il n’y a pas de représentation pour les valeurs négatives, pas de représentation pour les valeurs supérieures à 65535, et pas de représentation pour les données réelles comme 200,125.

Les registres sont regroupés en registres d’entrée et registres de maintien. Comme les bobines d’entrée, les registres d’entrée rapportent l’état d’une certaine entrée externe sous la forme d’une valeur comprise entre 0 et 65535. L’intention originale d’un registre d’entrée était de refléter la valeur d’une entrée analogique. C’est une représentation numérique d’un signal analogique comme une tension ou un courant. La plupart des dispositifs Modbus d’aujourd’hui ne sont pas des dispositifs d’E/S, et les registres d’entrée fonctionnent simplement de manière identique aux registres de maintien.

Les registres de maintien ont été conçus à l’origine comme un stockage temporaire de programme pour des dispositifs comme les contrôleurs Modbus. Aujourd’hui, les registres de maintien fonctionnent comme un stockage de données pour les dispositifs.

Les paquets Modbus RTU sont uniquement destinés à envoyer des données ; ils n’ont pas la capacité d’envoyer des paramètres tels que le nom du point, la résolution, les unités, etc. Si la capacité d’envoyer de tels paramètres est nécessaire, il faut étudier un BACnet, un EtherNet/IP ou d’autres protocoles modernes.

Exigences d’adresse Modbus RTU et identification de la station

Les adresses de nœud Modbus RTU standard sont de 1 à 255, 0 étant réservé aux messages de diffusion et à l’écriture uniquement. Cependant, l’adresse 0 est rarement utilisée car il n’y a pas de confirmation que le message a été correctement reçu au niveau du nœud esclave. Cela n’a pas beaucoup d’incidence si votre couche physique est RS-232 car un seul noeud peut être implémenté de toute façon. RS-485 limite le nombre de nœuds à 32, bien que certains pilotes vous permettent d’étendre cette quantité.

Les périphériques Modbus esclave série sont identifiés par un numéro de station qui précède la structure générale du message. En général, jusqu’à 32 stations sont prises en charge, car c’est la limite imposée par la plupart des pilotes série RS485. Il n’y a pas de limite logicielle au nombre de stations qui peuvent être supportées. Les adresses valides des esclaves sont attribuées dans la plage de 1 à 255, le numéro de station 0 étant réservé aux messages de diffusion, des messages traités par tous les esclaves.

Couches de transport

Il existe plusieurs transports standard utilisés pour déplacer les messages du protocole Modbus : RS232 et RS485. Vous pouvez en utiliser d’autres, mais ce sont les plus courants.

Le RS485 est un successeur du RS232. Il fonctionne de manière similaire en ce qui concerne les bits de synchronisation qui synchronisent le transfert des bits d’une station émettrice à une station réceptrice. Il existe toutefois deux caractéristiques déterminantes qui rendent le RS485 différent du RS232. La première est la possibilité de piloter plusieurs destinations. Les émetteurs RS485 peuvent signaler électriquement jusqu’à 32 dispositifs de destination. Cela fait de RS485 le moyen préféré pour transporter en série les messages Modbus.

L’autre caractéristique déterminante de RS485 est l’immunité renforcée au bruit. Le RS485 n’utilise pas le commun électrique comme référence pour son signal électrique. Au lieu de cela, RS485 utilise une paire de fils et pilote un signal en établissant un potentiel de tension à travers la paire. En faisant cela, tout bruit électrique environnemental affecte les deux fils de manière égale et le potentiel aux bornes des deux fils n’est pas modifié.

Codage des données Modbus RTU

Un mécanisme de codage décrit comment les modèles de bits sont formés à partir des valeurs de contrôle et de données qui sont codées dans le paquet. L’expéditeur et le récepteur doivent utiliser le même encodage pour comprendre correctement le contenu des données. Il existe deux mécanismes d’encodage des messages Modbus : ASCII et RTU.

L’encodage RTU est le mécanisme d’encodage beaucoup plus communément utilisé sur Modbus. RTU signifie simplement que les valeurs sont encodées en tant que binaire big-endian standard. Cela signifie que dans le cas de valeurs de 16 bits, l’octet le plus significatif (MSB) est encodé avant l’octet le moins significatif (LSB). Une valeur de 8 bits comme le décimal 41 (29 hex) est codée simplement comme 0010 1001. Alors qu’une valeur de 16 bits comme le décimal 300 (12C hex) est codée 0000 0001 0010 1100. Le MSB de 01 est codé et transmis avant le LSB de 2C.

Mappage de la mémoire du MODBUS RTU

Modbus RTU
Data Type
Common
name
Adresse de départ
Modbus Coils Bits, valeurs binaires, drapeaux 00001
Entrées numériques Entrées binaires 10001
Entrées analogiques Entrées binaires 30001
Registres Modbus Valeurs analogiques, variables 40001

La différence entre Modbus RTU et Modbus TCP

La différence la plus fondamentale entre Modbus RTU et Modbus TCP (également connu sous le nom de Modbus IP, Modbus EtherNet, et Modbus TCP/IP) est que Modbus TCP fonctionne sur une couche physique Ethernet et Modbus RTU est un protocole de niveau série. Modbus TCP utilise également un en-tête de 6 octets pour permettre le routage.

Un maître Modbus RTU est un bus maître unique. Il envoie un message à un dispositif esclave RTU et reçoit une réponse. Modbus RTU est limité à un seul maître. Un seul ensemble de signaux peut se trouver sur la liaison RS485 à un moment donné. Soit l’unique maître RTU transmet, soit l’un des appareils clients RTU transmet.

Avec l’introduction de Modbus TCP, tout a été simplifié et plus facile. Avec Modbus TCP, les contrôleurs peuvent utiliser beaucoup plus efficacement la bande passante sur Ethernet pour être le Maître vers des centaines de dispositifs Modbus TCP. Modbus TCP permet des clients multiples. Là où RS485 avait une limitation électrique de 32 appareils, Ethernet est illimité. La RAM d’exploitation est la seule limitation pratique. Avec Modbus TCP, il y a la possibilité pour un concepteur de réseau d’utiliser plusieurs Clients/Maîtres s’il le souhaite.

Avec Modbus TCP (Ethernet), vous devez faire intervenir un commutateur coûteux. Avec Modbus RTU (série), vous pouvez simplement relier tous les appareils en guirlande. Les appareils dotés de vieux processeurs 8 bits et d’un tout petit peu de mémoire peuvent facilement faire du Modbus série mais vous aurez besoin d’une plateforme plus coûteuse pour faire de l’Ethernet.

Le saviez-vous ?

Le fondateur de Real Time Automation, John S. Rinaldi, a écrit un livre entier sur Modbus ? Consultez The Everyman’s Guide to Modbus, disponible dès maintenant sur Amazon !

Pour plus d’informations sur nos produits et services Modbus RTU, appelez le 1-800-249-1612 ou envoyez-nous un e-mail à [email protected].

Vous cherchez à ajouter Modbus RTU à votre projet ?

Voir les solutions Modbus RTU

Vous voulez cette page au format PDF ? Cliquez ici !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *