Intégration · Communication industrielle

Faire remonter les données Modbus de vos équipements dans votre logiciel

Modbus est un protocole de requête et de réponse publié par la Modbus Organization : un logiciel métier, en position de client, lit ou écrit les registres d'un automate, d'un compteur d'énergie ou d'un variateur, en Modbus TCP sur le port 502 ou en liaison série derrière une passerelle. Le protocole n'authentifie personne ; sa variante sécurisée encapsule les échanges dans TLS, sur le port 802.

L'essentiel

  • Modbus range les données d'un équipement dans quatre tables : entrées discrètes et bobines d'un bit, registres d'entrée et registres de maintien de 16 bits.
  • Une requête Modbus lit au plus 125 registres ou 2 000 bits, et le code fonction 16 écrit au plus 123 registres à la fois.
  • Modbus TCP circule sur le port 502 ; la spécification Modbus/TCP Security de 2021 encapsule le même protocole dans TLS 1.2 ou plus récent, sur le port 802.
  • La spécification du protocole Modbus ne décrit aucun mécanisme d'authentification : un équipement Modbus TCP doit rester sur un réseau d'atelier isolé.
  • Derrière une passerelle Modbus TCP vers série, le champ Unit Identifier porte l'adresse de l'esclave visé, de 1 à 247.

Registres, bobines, codes fonction : que peut lire un logiciel ?

Un logiciel lit dans un équipement Modbus des bits et des mots de 16 bits, rangés dans quatre tables définies par la Modbus Application Protocol Specification V1.1b3.

TableTailleAccèsExemple courant
Entrées discrètes (Discrete Inputs)1 bitLecture seulePorte de four fermée, capteur de présence
Bobines (Coils)1 bitLecture et écritureMarche ou arrêt d'une pompe
Registres d'entrée (Input Registers)16 bitsLecture seuleTempérature mesurée, intensité
Registres de maintien (Holding Registers)16 bitsLecture et écritureConsigne de vitesse, compteur paramétrable

Chaque opération correspond à un code fonction public : 01 à 04 pour lire les quatre tables, 05 et 06 pour écrire une bobine ou un registre, 15 et 16 pour en écrire plusieurs, 23 pour écrire puis lire des registres dans la même transaction, 43 pour l'identification de l'équipement. Une requête lit au plus 2 000 bits ou 125 registres, et en écrit au plus 123 avec le code 16. Les registres sont transmis octet de poids fort en premier.

Le protocole ne dit pas ce que contient chaque registre : c'est la table d'échange du constructeur qui l'indique, avec les unités et les facteurs d'échelle. Une valeur sur 32 bits occupe deux registres consécutifs, et cette table précise dans quel ordre les assembler. Sans elle, aucune intégration sérieuse n'est possible.

Modbus TCP, liaison série, passerelle : comment les trames circulent

En Modbus TCP, chaque trame commence par un en-tête MBAP de 7 octets, décrit par le guide d'implémentation Modbus Messaging on TCP/IP :

  • Transaction Identifier : apparie chaque réponse à sa requête, ce qui permet plusieurs requêtes en cours sur une même connexion ;
  • Protocol Identifier : vaut 0 pour Modbus ;
  • Length : nombre d'octets qui suivent ;
  • Unit Identifier : adresse de l'esclave série visé derrière une passerelle, de 1 à 247 ; en liaison TCP directe, la valeur 0xFF est recommandée.

Le serveur écoute le port 502. Le guide recommande de garder la connexion TCP ouverte plutôt que de la rouvrir à chaque échange, et précise que le nombre de transactions simultanées va de 1 à 16 selon les capacités de l'équipement : le collecteur règle son rythme sur l'appareil le plus limité. La trame complète tient en 260 octets en TCP et 256 en liaison série.

Pour des équipements en liaison série (par exemple sur un bus RS-485), une passerelle TCP vers série permet au logiciel de joindre toute une chaîne de compteurs par une seule adresse IP, l'esclave visé étant désigné, de 1 à 247, dans le champ Unit Identifier.

Réponses d'exception : que doit faire le logiciel ?

Quand un équipement refuse une requête, il renvoie le code fonction augmenté de 0x80 et un code d'exception. Chaque code appelle une réaction différente du collecteur.

CodeSignification selon la spécificationRéaction attendue du logiciel
01Fonction illégale : non prise en charge ou non autorisée dans l'état actuelErreur de paramétrage à corriger, pas de nouvel essai en boucle
02Adresse de données illégale : adresse et longueur incompatiblesTable d'échange mal saisie ou modèle d'équipement différent : alerte à l'intégrateur
03Valeur de données illégale : requête mal construiteDéfaut du collecteur, journalisé avec la trame envoyée
04Défaillance de l'équipement pendant l'exécutionNouvel essai espacé, puis alerte à la maintenance

L'absence de réponse est le cas le plus fréquent : équipement hors tension, câble coupé, passerelle saturée. Le guide TCP ne fixe pas de délai de réponse, mais recommande que l'attente avant un nouvel essai dépasse le temps de réponse maximal attendu. Une valeur non lue est enregistrée comme inconnue, jamais comme zéro : un compteur à zéro fausserait la production du jour.

Quatre exemples de flux en PME industrielle

  1. L'énergie consommée par machine. Toutes les quinze minutes, le collecteur lit les registres d'index des compteurs électriques, les horodate et les range dans la base d'historique. Le logiciel de gestion rapproche ces consommations des ordres de fabrication et calcule un coût énergétique par série.
  2. La surveillance d'une chambre froide. Une sonde reliée à un régulateur expose la température dans un registre d'entrée. Lue chaque minute, la valeur alimente l'enregistrement des températures ; un dépassement prolongé envoie une alerte à l'astreinte. Voir notre page pour les entreprises agroalimentaires.
  3. Le compteur d'une presse ancienne. L'automate d'une presse sans connectivité moderne expose son compteur de coups dans un registre de maintien. Lu en fin de poste, il alimente la déclaration de production, sans modifier le programme.
  4. La consigne envoyée au variateur. Le planning fixe la cadence d'une ligne ; après validation du chef d'équipe, le logiciel écrit la consigne de vitesse dans le registre prévu, puis relit la valeur pour confirmer. Ce sens descendant ne s'active qu'après une période de lecture seule sans incident.

Ces flux s'insèrent dans une architecture plus large, décrite sur la page relier automates et supervision à votre ERP.

Un protocole sans mot de passe : comment le protéger ?

La spécification du protocole Modbus ne décrit aucune authentification : tout poste qui joint l'équipement sur le port 502 peut lire et écrire ses registres. La protection repose donc sur l'architecture.

  • Les équipements Modbus restent sur un réseau d'atelier séparé du réseau bureautique, et le port 502 n'est jamais ouvert vers Internet.
  • Un seul collecteur, dans une zone réseau dédiée, parle aux équipements ; le reste du système d'information ne parle qu'au collecteur.
  • Les écritures sont limitées à une liste fermée de registres, décidée avec la maintenance.

La Modbus Organization a publié en 2021 la spécification Modbus/TCP Security (version 36, datée du 30 juillet 2021). Elle encapsule les trames Modbus/TCP, inchangées, dans une session TLS 1.2 ou plus récente, interdit le repli vers TLS 1.1, TLS 1.0 ou SSL 3.0, utilise le port 802 enregistré auprès de l'IANA et impose une authentification mutuelle par certificats X.509v3. Quand l'équipement applique un contrôle d'autorisation, le rôle du client est porté par une extension du certificat, et une requête non autorisée reçoit l'exception 01. Encore faut-il que vos équipements la prennent en charge : la documentation de chaque appareil le dit.

Modbus, OPC UA ou MQTT : lequel retenir ?

Modbus est souvent imposé par l'existant : compteurs, régulateurs, variateurs et automates déjà installés le parlent, et c'est parfois leur seule porte. Pour des machines récentes, OPC UA apporte un modèle de données décrit, des abonnements aux changements et une sécurité intégrée. Pour faire circuler les mesures entre plusieurs applications, un broker MQTT découple producteurs et consommateurs. Les trois cohabitent souvent : le collecteur lit en Modbus et republie vers le reste du système.

Quand une supervision du constructeur exporte déjà les données utiles, on part de cet export plutôt que d'interroger les équipements une seconde fois.

Ce que YMHB Web réalise et vous remet

YMHB Web programme des automates, par exemple Kinco avec KincoBuilder, et des interfaces opérateur, par exemple avec DTools : quand un compteur manque dans l'automate, il peut être ajouté au programme, avec une sauvegarde de la version d'origine. Pour la liaison au logiciel de gestion, nous livrons le collecteur et son code, la table d'échange documentée (adresse, type, unité, facteur d'échelle, sens), la cadence de lecture de chaque équipement, un journal des exceptions et des alertes quand un équipement ne répond plus. Le détail de l'offre figure sur la page automates, IHM et supervision, et les facteurs de coût sur prix d'un programme d'automate ou d'une IHM.

Questions fréquentes

Quelle différence entre Modbus TCP et Modbus sur liaison série ?

Modbus TCP transporte les requêtes Modbus sur un réseau Ethernet, avec un en-tête MBAP de 7 octets et le port 502. La liaison série, par exemple en RS-485, relie les équipements sur un bus avec une adresse d'esclave de 1 à 247. Une passerelle TCP vers série permet à un logiciel de joindre une chaîne d'équipements série par une seule adresse IP, en indiquant l'esclave dans le champ Unit Identifier.

Combien de registres Modbus peut-on lire en une seule requête ?

Selon la Modbus Application Protocol Specification V1.1b3, une requête lit de 1 à 125 registres de 16 bits ou de 1 à 2 000 bits, et le code fonction 16 écrit de 1 à 123 registres. Pour lire davantage de valeurs, le collecteur enchaîne plusieurs requêtes, en respectant le nombre de transactions simultanées que l'équipement accepte, entre 1 et 16 selon ses capacités.

Modbus est-il sécurisé ?

Le protocole Modbus classique ne prévoit aucune authentification : tout poste qui joint l'équipement peut lire et écrire ses registres. La Modbus Organization a publié en 2021 une variante, Modbus/TCP Security, qui encapsule les échanges dans TLS 1.2 ou plus récent sur le port 802, avec authentification mutuelle par certificats. À défaut, la sécurité repose sur la séparation des réseaux et un collecteur unique.

Que signifie l'exception Modbus 02 renvoyée par un équipement ?

L'exception 02, adresse de données illégale, signifie que l'adresse demandée, combinée à la longueur, ne correspond à aucune donnée de l'équipement. Dans une intégration, elle révèle presque toujours une table d'échange mal saisie, un décalage d'adresse ou un modèle d'équipement différent de celui prévu. Le collecteur doit alors alerter l'intégrateur plutôt que réessayer en boucle.

Faut-il remplacer ses équipements Modbus par de l'OPC UA ?

Pas nécessairement. Un équipement Modbus qui fonctionne peut être lu par un collecteur placé sur le réseau de l'atelier, qui republie ses données vers le logiciel de gestion ou en OPC UA. Le remplacement se discute au moment du renouvellement du matériel, ou quand la sécurité et la richesse du modèle de données d'OPC UA deviennent indispensables.

À lire aussi

Sources

  1. Modbus Organization, Modbus Application Protocol Specification V1.1b3 (tables de données, codes fonction, limites, exceptions, port 502)
  2. Modbus Organization, Modbus Messaging on TCP/IP Implementation Guide V1.0b (en-tête MBAP, Unit Identifier, adresses 1 à 247, port 502, connexions, transactions, délais)
  3. Modbus Organization, MODBUS/TCP Security Protocol Specification (MB-TCP-Security-v36, 30 juillet 2021 : TLS 1.2 ou plus, port 802, certificats X.509v3, rôles, exception 01)

Prêt à démarrer ?

Décrivez-nous votre situation, pas une liste de fonctionnalités.

Réponse sous un jour ouvré, en général par téléphone. Si un outil du marché suffit, nous vous le dirons.

Premier échange sans engagementCadrage avant chiffrage

AppelerDécrire mon problème