Introduction à Modbus TCP/IP
Tu te demandes comment fonctionne Modbus TCP et pourquoi l’utiliser ? Ce protocole de communication industriel est très utilisé en automatisme industriel. Basé sur Ethernet, il permet l’échange de données entre différents appareils dans les systèmes de contrôle.
Historiquement introduit par Schneider Electric (ex Modicon) le protocole Modbus, était à l’origine un protocole série (Modbus RTU), qui a été adapté sur un réseau TCP/IP.
Principes fondamentaux du protocole Modbus TCP/IP
Caractéristiques du réseau Modbus TCP/IP
- Vitesse de communication : Modbus TCP utilise une communication basée sur Ethernet avec des débits allant de 10 Mbps à 1 Gbps.
- Distance de transmission : La portée maximale dépend de la qualité du câble Ethernet utilisé :
- Câble Ethernet Cat 5e ou supérieur : jusqu’à 100 mètres entre chaque appareil sans répéteur.
- Fibre optique : permet d’étendre la distance à plusieurs kilomètres.
- Topologie de réseau : Modbus TCP utilise une topologie en étoile, grâce à l’utilisation de switches Ethernet. Chaque dispositif est connecté individuellement au réseau via un switch. Il n’y a pas de limite stricte sur le nombre d’appareils, tant que l’infrastructure réseau (switches, routeurs) le permet.
Modèle client-serveur
Modbus TCP/IP fonctionne selon un modèle client-serveur. C’est une difference par rapport au modèle maître-esclave du Modbus RTU (liaison série). Voici comment ça fonctionne :
- Le client (maître) initie la communication.
- Il envoie une requête au serveur (esclave).
- Le serveur traite la requête et renvoie une réponse.
Voici quelques points clés à retenir :
- Les clients peuvent être des interfaces homme-machine (IHM) ou des automates programmables (PLC).
- Les serveurs sont généralement des capteurs, des actionneurs ou d’autres dispositifs fournissant des données.
- Chaque requête du client contient un en-tête MBAP, un code de fonction et des champs de données.
- Le serveur traite la requête selon le code de fonction reçu.
Tu peux avoir plusieurs clients et serveurs sur un même réseau. Certains dispositifs peuvent même jouer les deux rôles à la fois.
Encapsulation des données
Modbus TCP/IP utilise une technique appelée encapsulation pour transporter les messages Modbus sur les réseaux TCP/IP. Voici comment ça marche :
- Le message Modbus original est conservé intact.
- L’en-tête MBAP est ajouté devant le message Modbus.
- Le tout est placé dans la section de données d’un paquet TCP/IP standard.
Cette méthode permet d’utiliser l’infrastructure réseau existante tout en préservant la structure Modbus. Tu peux ainsi profiter des avantages de TCP/IP :
- Fiabilité de la transmission
- Contrôle de congestion
- Détection et correction d’erreurs
Un point important à noter : Modbus TCP/IP n’utilise pas le champ de vérification d’erreur (checksum) du Modbus original. Il s’appuie plutôt sur les méthodes de vérification d’intégrité de TCP/IP.
La structure des trames Modbus TCP/IP
La trame Modbus TCP diffère de la trame RTU en raison de l’encapsulation des données dans des paquets TCP/IP. Voici les éléments clés d’une trame Modbus TCP :
Champ | Taille | Description |
---|---|---|
Identifiant de transaction | 2 octets | Un identifiant unique pour suivre les transactions. |
Protocole | 2 octets | Toujours à 0 pour Modbus TCP. |
Longueur | 2 octets | Indique la longueur des données restantes dans la trame. |
Identifiant de l’unité | 1 octet | Utilisé pour identifier l’esclave en cas de passerelle. |
Code de fonction | 1 octet | Spécifie l’action à effectuer (lecture, écriture, etc.). |
Données | Variable | Contient les données ou le message Modbus à transmettre. |
Les types de données échangés via Modbus TCP/IP
Comme pour Modbus RTU, l’adressage des données dans Modbus TCP reste similaire :
Type d’objet | Description |
---|---|
Coils | Interrupteurs binaires activés/désactivés, contrôlant des relais ou des dispositifs d’E/S booléens. |
Discrete Inputs | Entrées binaires en lecture seule, provenant de capteurs ou d’autres dispositifs d’entrée. |
Input Registers | Registres de 16 bits en lecture seule, souvent utilisés pour lire des mesures de capteurs. |
Holding Registers | Registres de 16 bits en lecture/écriture, utilisés pour stocker des valeurs numériques. |
Les codes fonctions Modbus TCP/IP
Les codes de fonction dans Modbus TCP sont les mêmes que ceux utilisés dans Modbus RTU, puisqu’ils suivent le même standard. Voici quelques exemples de codes courants :
Code de fonction | Description |
---|---|
01 | Lire les bobines (Read Coils) : Lit l’état des variables binaires dans un dispositif esclave. |
04 | Lire les registres d’entrée (Read Input Registers) : Lit la valeur des registres d’entrée de 16 bits, souvent utilisés pour des données de capteurs (lecture seule). |
05 | Forcer une bobine (Write Single Coil) : Modifie l’état d’une bobine (0 ou 1). Utilisé pour contrôler une sortie numérique telle qu’un relais ou un moteur. |
06 | Écrire dans un registre de maintien (Write Single Holding Register) : Écrit une valeur dans un registre de maintien de 16 bits. Utilisé pour mettre à jour des paramètres de configuration. |
16 | Écrire plusieurs registres de maintien (Write Multiple Holding Registers) : Modifie plusieurs registres simultanément. |
Implémentation de Modbus TCP/IP dans l’automatisation industrielle
Couche physique (hardware)
La mise en place d’un réseau Modbus TCP/IP nécessite une infrastructure réseau Ethernet, avec les composants suivants :
- Switch Ethernet : Pour connecter plusieurs appareils sur un réseau.
- Câble Ethernet (Cat 5e ou supérieur) : Utilisé pour relier les dispositifs au switch, avec une portée maximale de 100 mètres.
- Passerelle Modbus TCP/RTU : Si vous avez besoin de faire communiquer des appareils Modbus RTU avec un réseau Modbus TCP.
Couche logiciel (software)
Après avoir installé la couche physique (hardware) passons à la couche logiciel (software).
L’exemple est tiré d’une configuration sur le logiciel CodeSys de programmation d’automate, on retrouve l’arborescence décrite ci-dessus.
1 Config port ethernet Modbus TCP/IP
Cette section contient des champs pour définir les paramètres de communication du port série Modbus.
- IP address : C’est l’adresse unique assignée à l’appareil sur le réseau. Intérêt : C’est ça qui permet que le maître (client) sache où envoyer les requêtes pour communiquer avec un esclave (serveur).
- Subnet mask : Détermine quelles parties de l’adresse IP appartiennent au réseau et à l’hôte. Intérêt : Permet de séparer et organiser les dispositifs en groupes logiques sur le réseau..
- Default Gateway : Adresse IP du routeur ou du switch auquel l’appareil envoie le trafic destiné à des adresses hors du réseau local. Intérêt : Pertinent dans des configurations où les communications doivent s’étendre au-delà du réseau local.
- Use Operating System Settings : Permet à l’appareil d’utiliser les paramètres réseau définis par le système d’exploitation. Intérêt : Simplifie la configuration en utilisant les paramètres déjà en place.
- Change Operating System Settings : Option pour configurer manuellement les paramètres réseau de l’appareil. Intérêt : Offre la flexibilité de spécifier des configurations adaptées à des besoins spécifiques ou des configurations de réseau non standard, souvent nécessaire dans des applications industrielles ou des environnements spécifiques.
2 Config maitre (client) Modbus TCP/IP
- Délai d’expiration de réponse (ms) : Ce paramètre définit le temps d’attente en millisecondes avant qu’une réponse soit considérée comme ayant échoué. Intérêt : Cela permet de gérer les délais dans la communication réseau pour s’assurer que le système ne reste pas bloqué en attendant une réponse qui pourrait ne jamais arriver.
- Délai d’expiration de socket (ms) : Il définit le temps en millisecondes avant qu’une connexion Modbus soit fermée en l’absence d’activité. Intérêt : ça permet de libérer les ressources réseau qui ne sont plus actives.
- Reconnexion automatique : Cette option, lorsqu’elle est activée, permet au maître de tenter automatiquement de se reconnecter à un esclave si la connexion est perdue. Intérêt : Ceci est utile dans des environnements industriels où les connexions réseau peuvent être interrompues de temps en temps.
3 Config escalve (serveur) Modbus TCP/IP
- Adresse IP esclave : C’est l’adresse IP attribuée à cet esclave spécifique sur le réseau Modbus TCP. Intérêt : Permet au maître de savoir où envoyer les requêtes spécifiquement à cet esclave, essentiel pour la communication ciblée.
- Unit-ID [1-247] : C’est l’identifiant unique de l’esclave dans le réseau Modbus, utilisable dans des environnements où plusieurs esclaves existent. Intérêt : Important pour distinguer chaque esclave lorsque plusieurs dispositifs sont présents sur un même réseau Modbus TCP.
- Délai d’expiration de réponse (ms) : Ce paramètre configure le temps maximum en millisecondes que l’esclave peut prendre pour répondre à une requête avant que la requête ne soit considérée comme ayant échoué. Intérêt : Assure que le maître ne restera pas en attente indéfiniment pour une réponse, permettant de gérer efficacement les délais dans les communications réseau.
- Port : Numéro du port utilisé pour la communication Modbus TCP, 502 étant le port standard pour Modbus TCP. Intérêt : Spécifie le point de communication sur le réseau, crucial pour le routage correct des requêtes et des réponses entre le maître et l’esclave.
4 Config trame modbus
- Canal : Déclaration d’un réseau Modbus.
- Nom :indique le nom attribué à ce canal de communication (utilisation interne au programme). Il est conseiller de donné un titre évocateur.
- Type d’accès : fonction utilisée pour lire ou écrire les différents types de variables (liste des fonctions Modbus plus haut dans l’article)
- Déclencheur : “Cyclic” pour que la lecture est effectuée de manière cyclique à intervalle de temps régulier.
- Registre : paramètre relatif au champs de donnée qui va être lu.
- Offset : Définit l’adresse de départ à partir de laquelle les registres seront lus par le maitre en fonction des emplacements modbus de l’esclave (se référer à la doc du composant esclave pour paramétrer)
- Longueur : spécifie le nombre de registres à lire ou écrire à partir de l’offset.
- Gestion d’erreurs : Choisir de “Conserver dernière valeur” ou “remettre à zéro” quand on a une erreur
5 Config mapping Modbus
- Variable :Chaque variable est mappée à un canal spécifique pour la communication Modbus.
- Mappage : Chaque variable peut être mappée a une variable interne au programme
- Canal : Chaque variable est associée à un canal, préalablement définît
- Type : Définit le type de variable que la trame Modbus va lire
- Description : On retrouve ici le type de fonction Modbus utilisé (ici lecture seule de registre)
Les conseils bien intégré Modbus TCP/IP
Pour une intégration optimale, suis ces bonnes pratiques :
- Utilise une topologie en étoile pour les réseaux Ethernet, en connectant chaque dispositif directement à un switch réseau.
- Choisis des câbles de haute qualité, comme les paires torsadées CAT5e ou supérieur, pour garantir une transmission des données fiable et rapide.
- Assure-toi que chaque segment de réseau ne dépasse pas 100 mètres, pour éviter la perte de signal et maintenir l’intégrité des données sur des distances plus longues.
- Applique des techniques de mise à la terre appropriées et utilise des équipements de réseau isolés pour réduire le bruit électrique et les perturbations électromagnétiques.
Gestion des erreurs et dépannage
Mécanismes de détection d’erreurs
En Modbus TCP/IP, la gestion des erreurs repose sur les mécanismes de vérification d’intégrité du protocole TCP/IP. Contrairement à Modbus RTU qui utilise un contrôle de redondance cyclique (CRC), Modbus TCP s’appuie sur les outils natifs de TCP/IP, tels que les sommes de contrôle (checksums) pour garantir l’intégrité des paquets. Ces mécanismes permettent de détecter les erreurs de transmission, les pertes de paquets et d’assurer une retransmission automatique en cas de problème, garantissant ainsi une communication fiable.
Codes d’erreur Modbus TCP/IP
Comme avec Modbus RTU, lorsqu’un serveur (esclave) rencontre une erreur en traitant une requête, il renvoie un message d’exception avec un code d’erreur. Ces codes informent le client (maître) sur la nature de l’erreur.
Techniques de résolution des problèmes courants sur Modbus TCP/IP
Pour résoudre les problèmes de communication en Modbus TCP, voici quelques étapes
Considère d’abord la couche hardware :
- Vérifie les câbles Ethernet et les connexions entre les appareils, en t’assurant qu’ils ne dépassent pas la distance maximale de 100 mètres et qu’ils sont de bonne qualité (CAT5e ou mieux).
- Examine les switches et les routeurs impliqués pour vérifier leur bon fonctionnement et leur configuration.
- Ping les adresses IP : Connecte toi en Ethernet et ping les adresses IP pour vérifier que les modules sont accessible sur le réseau.
Puis examine la couche software :
- Analyse les codes d’erreur retournés par les appareils esclaves.
- Assure-toi que la configuration IP des appareils maître et esclave est correcte et que tous sont capables de communiquer sur le réseau. (il faut que les appareils soit sur le même réseau Ethernet au niveau de leur adresse IP
- Vérifie que le port TCP (généralement 502) est correctement configuré et n’est pas bloqué par des pare-feu ou autres dispositifs de sécurité réseau.
- Ajuste les paramètres de timeout du TCP pour tenir compte des délais de réponse potentiels, surtout si le réseau est large ou sujet à congestion.
Si les appareils reçoivent des données incohérentes :
- Inspecte les adresses Modbus et assure-toi que les requêtes du maître ciblent correctement les adresses des esclaves.
- Vérifie le mappage des données pour s’assurer que les requêtes correspondent aux types de données attendus (coils, registres discrets, etc.) et que les variables internes dans ton programme sont bien mappées et cohérentes avec les données lues ou écrites sur l’esclave.
Applications et limite de Modbus TCP/IP
Tu te demandes comment Modbus TCP/IP est utilisé concrètement dans l’industrie ? Ce protocole a une influence considérable dans divers secteurs. Voyons ensemble ses principales applications.
Application de Modbus TCP/IP
Modbus TCP/IP est très présent dans le monde de l’automatisme industrielle. Tu peux l’utiliser pour connecter et contrôler une grande variété d’équipements :
- Automates programmables (PLC)
- Interfaces homme-machine (IHM)
- Capteurs et actionneurs
- Modules d’entrées/sorties
Comme expliqué tu peux avoir jusqu’à 247 dispositifs connectés sur un même réseau Modbus. Chacun a son identifiant unique pour communiquer.
Limites de Modbus TCP/IP et Alternatives
Bien que Modbus TCP soit une évolution du protocole Modbus RTU et qu’il utilise les réseaux Ethernet pour améliorer la vitesse et la portée des communications, il présente certaines limites qui peuvent affecter son efficacité dans des environnements industriels modernes.
Premièrement, Modbus TCP reste basé sur une architecture client-serveur qui peut ne pas être adaptée aux applications critiques en temps réel. De plus, comme il n’intègre pas de sécurité native (cryptage ou authentification), les communications peuvent être vulnérables aux attaques, surtout sur des réseaux ouverts.
Face à ces limitations, plusieurs alternatives ont émergé pour répondre aux besoins d’applications industrielles plus exigeantes :
- EtherNet/IP : Un protocole industriel basé sur Ethernet qui supporte la communication en temps réel, plus robuste que Modbus TCP, avec une meilleure intégration pour des systèmes à haut débit de données.
- Profinet : Conçu principalement pour les applications industrielles, Profinet permet la collecte de données à grande échelle et la commande en temps réel avec des garanties de performance plus strictes.
- OPC UA : Un protocole de communication industriel moderne qui supporte la sécurité, l’interopérabilité entre systèmes différents, et la communication à grande échelle, souvent utilisé dans les architectures IIoT (Internet Industriel des Objets).