1.
Introduction
Le Modbus est un protocole de communication industriel introduit par Modicon en [Link] est
généralement utilisé avec les automates programmables ou les équipements de types industriels.
Il est maintenant devenu une norme "Open Protocol" dans le domaine de l'automatisme et de la
communication industrielle, et est le moyen le plus couramment utilisé pour faire communiquer
des équipements [Link] existe des versions avec des modifications mineures ou adaptées
à d'autres environnements (comme par exemple JBUS ou MODBUS II).
Dans le chapitre suivant nous allons étudier le protocole Modbus dans sa globalité. En premier
lieu nous allons définir principe du Modbus ainsi que ces caractéristiques. Ensuite, nous
introduisons structure du message et les supports de transmission. En fin, la liaison RS485 ainsi
que les fonctions principale sont détaillés.
2. Principe du Modbus
Modbus est un protocole de communication permettant de transmettre des informations entre
des appareils électroniques sur des lignes série (version originale) ou via Ethernet, et est
couramment utilisé dans l'automatisation des processus et des usines. Bien qu'il s'agisse d'un
protocole ouvert et que tout le monde puisse l'utiliser, "Modbus" est une marque déposée de
Schneider Electric USA, Inc. (propriétaire actuel de la marque Modicon). L'organisation
[Link] a été créée pour promouvoir l'utilisation de Modbus et Schneider Electric en est
partenaire. Cet article est une introduction à Modbus et à ses fonctions de base. [Link]
couvre largement Modbus, les spécifications des différents types de Modbus, les logiciels, les
tests, le code d'interface, etc. L'Internet propose également des tutoriels et des informations
spécifiques sur les implémentations Modbus de chaque appareil.
Le protocole série Modbus (la version originale) est un protocole maître/esclave, par exemple
un maître qui contrôle les transactions de données Modbus avec plusieurs esclaves qui
répondent aux demandes du maître pour lire ou écrire des données aux esclaves. Le protocole
Modbus TCP, également connu sous le nom de Modbus TCP/IP, utilise une architecture
client/serveur. Ces architectures de réseau sont illustrées.
3. Données et caractéristique
Vitesse de transmission : 9600 ou 19200 bits/seconde
Trame : 8 bits sans parité
Parité : sans parité
- 1 stop
Mode de communication : half-duplex. (2 fils ou 4 fils)
- le maître parle à un esclave et attend sa réponse,
- le maître parle à l'ensemble des esclaves, sans attente de réponse (diffusion générale).
4. Structure du message
Dans le mode RTU, La trame ne comporte ni octet d’en-tête de message, ni octets de fin de
message. Sa définition est la suivante :
Les données sont transmises en binaire. CRC16 : paramètre de contrôle polynomial (cyclical
redundancy check). La détection de fin de trame est réalisée sur un silence supérieur ou égal à
3 caractères.
4.1. Adressage et messagerie
L'adressage mémoire Modbus est généralement organisé autour de registres 16 bits qui
contiennent 16 bobines ou des états on/off (0/1) ou des valeurs entières dans des registres 16
bits (registres d'entrée/sortie ou de maintien). Bien que certains appareils utilisent leur propre
adressage Modbus, l'adressage Modbus typique est illustré à la figure ci-dessous.
La messagerie Modbus est basée sur ce que l'on appelle une unité de données d'application
(ADU) et une unité de données de protocole (PDU). Le message Modbus comprend l'adresse
de l'esclave/serveur concerné, un code de fonction, les adresses de début des données, et les
données envoyées (en écriture) ou à renvoyer (en lecture) au maître/client, avec une somme de
contrôle d'erreur à la fin (CRC/LRC/Checksum).
La taille de l'unité PDU série Modbus est limitée par la contrainte de taille héritée de la première
implémentation du réseau série Modbus, qui était de 256 octets. Les adresses des esclaves
Modbus sont limitées à 1-255. Les adresses 1-247 sont disponibles pour l'utilisateur et les
adresses 248-255 sont réservées.
Une transaction de données série Modbus typique est illustrée à la figure ci-dessous. Les
transactions de données Modbus TCP sont essentiellement les mêmes, sauf que l'adresse du
serveur est une adresse IP, qu'il y a une certaine surcharge Ethernet et que la somme de contrôle
des erreurs est différente. Les données Modbus peuvent inclure les adresses de données de
départ, la quantité de données ou le comptage, et les données réelles qui sont lues ou doivent
être écrites. Si l'esclave/serveur Modbus a un problème avec la demande du maître/client,
l'esclave/serveur renvoie une réponse d'erreur au maître/client.
5. Support de transmission
Chaque octet composant un message est transmis en mode RTU de la manière suivante :
Sans contrôle de parité
Start Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Stop
Avec contrôle de parité
Start Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Parité Stop
Avant et après chaque message, il doit y avoir un silence équivalent à 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.
6. La liaison RS485
Les médias de type RS485 sont souvent en half duplex c’est-à-dire la transmission s’effectue
via 2 fils.
Ils permettent de faire communiquer jusqu'à 32 périphériques sur la même ligne de données et
sur une distance pouvant aller jusqu'à 1200 m sans répéteurs. A noter que l’on peut obtenir du
full duplex en utilisant 4 fils de transmission au lieu de [Link] permet d’avoir un débit de
transmission plus rapide. Chaque périphérique esclave peut aussi communiquer avec les 32
autres périphériques. Les protocoles de communication RS422 et RS485 sont multi drop c'est
à dire plusieurs périphériques peuvent communiquer sur la même ligne de données. Le RS485
a comme avantages d’être immunisé contre les bruits ou parasites.
7. Fonction principale et codage
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.