Académique Documents
Professionnel Documents
Culture Documents
Cours Modbus/TCP
Soumis par DS
10-03-2006
Dernière mise à jour : 16-10-2006
Depuis l'introduction fulgurante des réseaux ethernet dans l'industrie, le protocole Modbus et notamment sa version
Modbus/TCP sont couramment mis en oeuvre pour réaliser des supervisions de chaînes industrielles pilotées par des
automates programmables.
1 - Introduction
Le protocole MODBUS a été crée en 1979 par Modicon (Télémécanique, Schneider Automation)
Ce document se veut comme une introduction aux 2 documents officiels qui définissent le protocole MODBUS :
- Le protocole MODBUS et TCP/IP (pdf)D'ailleurs, toutes les illustrations de ce cours proviennent de ces 2 documents
2 - Le protocole MODBUS
Le protocole MODBUS est couramment utilisé dans l'industrie, notamment pour dialoguer avec des automates
programmables.
Le protocole MODBUS est un protocole de type applicatif situé sur la couche 7 du modèle OSI. En-dessous, il existe
plusieures possibilités pour implémenter le protocole MODBUS :
l'ADU pour une liaison RS-232 sera différente de l'ADU pour une liaison TCP/IP.
- Function code : il s'agit de codes de fonctions prédéfinis par le protocole MODBUS (voir chapitre 2.3)
Le protocole MODBUS repose sur des fonctions prédéfines et associées à un code particulier (sur 1 octet = de 0 à 255).
Le tableau ci-après récapitule les différentes fonctions utilisables que l'on peut classer en 3 familles :
- Data access : ces fonctions permettent d'accéder en lecture et/ou écriture à des bits, mots ou fichiers d'un équipement
MODBUS
- Diagnostics : ces fonctions permettent d'effectuer certains diagnostics sur un équipement MODBUS
- Other : ces fonctions permettent l'encapsulation du protocole MODBUS avec un autre (ex: CANopen)
Le protocole MODBUS définit en plus des fonctions classiques des fonctions et des codes d'exception destinés à la
gestion des erreurs dans une communication.
Les fonction d'exception sont représentées comme les fonctions classiques par un code. Voici la règle à appliquer :
Exception code = Function code + 0x80
Le tableau ci-dessus récapitule les différents codes d'exception associés aux fonction d'exception :
Code
Nom
01
Illegal function
http://sandiris.free.fr/web Propulsé par Joomla! Généré: 2 February, 2009, 08:10
Le site du BTS-IRIS de Niort
02
Illegal data address
03
Illegal data value
04
Slave device failure
05
Acknowledge
06
Slave device busy
08
Memory parity error
0a
Gateway path unavailable
0b
Gateway target device failed to respond
Les données échangées avec le protocole MODBUS, avec un automate par exemple, sont principalement des bits et
des mots (sur 16 bits). Suivant le type d'accès (lecture et/ou écriture) on distingue différents type de données comme
dans le tableau ci-dessous :
Ces données sont différement organisées dans la mémoire d'un equipement MODBUS. Dans tous les cas, un
décodage est effectué pour chaque requête MODBUS :
Après avoir étudié le protocole MODBUS dans sa généralité, nous allons à présent voir comment on peut utiliser ce
protocole au dessus d'un réseau TCP/IP/Ethernet. Dans la suite du document on utilisera la dénomination
MODBUS/TCP pour ce type d'utilisation du protocole.
3.1 - L'encapsulation
Le principe est simple, il s'agit d'encapsuler un message MODBUS dans une trame TCP/IP classique.
Le client MODBUS effectue une requête et attend en retour une réponse du serveur MODBUS. Chaque équipement
MODBUS/TCP qu'il soit client ou serveur sera identifié par 2 informations :
- adresse IP (donc adresse Ethernet via le protocole ARP) = à définir par l'utilisateur
Comme on peut le voir le PDU est identique dans les 2 représentations. Pour ce qui est de l'ADU le premier champ
"Additional address" se traduit par un champ "MBAP Header" et le champ "Error check" disparait car les couches TCP/IP
effectuent déjà un contrôle d'erreur (CRC).
- Transaction Identifier : il s'agit en fait du numéro d'un message MODBUS. Chaque message (requête+réponse) est
identifié par un numero différent
- Protocol Identifier : il s'agit du numéro du protocole pour les systèmes multiplexés qui en utilisent plusieurs (MODBUS
= 0)
- Unit Identifier : il s'agit de l'identiant d'un équipement généralement utilisé par une passerelle (TCP/IP <-> liaison
série)
4 - Webographie