Toutes les ressources

Protocoles et réseaux

Modbus RTU et Modbus TCP : guide complet

Tables de données, fonctions, adressage 0/1, ordre des mots, paramètres série et erreurs fréquentes d'intégration.

Fiche GTB HUB · gratuite

En bref

Modbus est un protocole maître/esclave (client/serveur en TCP) simple et très répandu (compteurs, variateurs, PAC, groupes froids). Les spécifications sont publiées par Modbus Organization. Le maître interroge ; l'esclave répond. Aucun esclave n'émet spontanément.

Les 4 tables de données

TableFonctionsRéférence usuelleContenu
Coils01, 05, 150xxxxBits en lecture/écriture
Discrete Inputs021xxxxBits en lecture seule
Input Registers043xxxxMots 16 bits en lecture seule
Holding Registers03, 06, 164xxxxMots 16 bits en lecture/écriture

Le piège de l'adressage (décalage de 1)

Dans la trame, l'adresse est 0-based : la référence documentaire 40001 correspond à l'adresse protocole 0 avec la fonction 03. Certains fabricants documentent directement l'adresse protocole, d'autres la référence 4xxxx, d'autres encore une adresse décimale « 1-based ». Si toutes vos valeurs semblent décalées d'un registre, essayez ±1.

Les valeurs sur 32 bits

Un registre fait 16 bits (octet de poids fort en premier). Les valeurs 32 bits (FLOAT32, INT32, UINT32) occupent deux registres, mais l'ordre des mots n'est pas normalisé : ABCD (big-endian) ou CDAB (mots inversés) sont les plus fréquents. La documentation de l'équipement fait foi ; à défaut, testez les ordres et retenez la valeur physiquement plausible. Pensez aussi aux facteurs d'échelle (×0,1, ×0,01…) et aux unités indiquées dans la table.

👉 Décodez vos registres dans le Laboratoire des protocoles.

Modbus RTU (série)

  • Support RS-485 (2 fils + référence commune), 1 maître, jusqu'à 247 esclaves adressés (1 à 247 ; 0 = diffusion sans réponse).
  • Format par défaut de la spécification : 8 bits de données, parité paire, 1 bit de stop ; sans parité, 2 bits de stop. Dans la pratique, beaucoup d'équipements sont livrés en « 8N1 » : alignez vitesse, parité et bits de stop sur tout le bus.
  • Trames séparées par un silence ; contrôle d'intégrité par CRC-16.
  • Mêmes règles de câblage que tout bus RS-485 : bus chaîné, terminaison aux extrémités, une polarisation, écran correctement relié.

Modbus TCP

  • Port 502. En-tête MBAP de 7 octets (identifiant de transaction, protocole = 0, longueur, Unit ID) puis la même PDU qu'en RTU, sans CRC.
  • Le Unit ID sert surtout aux passerelles TCP/RTU pour désigner l'esclave série ; pour un équipement TCP natif, la valeur attendue est indiquée dans sa notice (souvent 1 ou 255).

Limites par requête

Lecture de registres : 125 maximum (fonctions 03/04). Écriture multiple : 123 registres (fonction 16). Lecture de bits : 2 000. Regroupez les lectures par blocs contigus pour gagner du temps, sans dépasser ces limites ni « traverser » des zones non implémentées (qui provoquent l'exception 02).

Codes d'exception

CodeSignificationPiste
01Illegal FunctionFonction non gérée (ex. 04 au lieu de 03)
02Illegal Data AddressAdresse inexistante, décalage 0/1, bloc trop long
03Illegal Data ValueValeur ou quantité refusée
04Server Device FailureDéfaut interne de l'esclave
0A / 0BPasserelleChemin indisponible / esclave absent derrière la passerelle

Check-list d'intégration

  1. Obtenir la table Modbus officielle correspondant au modèle et à la version de firmware.
  2. Noter : adresse esclave, vitesse, parité, stop, fonctions, adresses, types, ordre des mots, échelle, unités.
  3. Tester un registre simple et connu (ex. tension) avant de tout configurer.
  4. Régler les temporisations (timeout, délai entre requêtes) selon le nombre d'esclaves et la vitesse.
  5. Prévoir un point « défaut de communication » par équipement dans la supervision.

Fiche de synthèse : pour les valeurs propres à un produit, référez-vous toujours à sa documentation officielle et aux textes en vigueur.