Written by Informatique Views: 7

Qu’est-ce que Modbus et comment ça marche

logo de modbus
Constructeur : Modicon (aujourdhui Schneider Electric)
Disponibilité : na
Catégorie : standard
Type : protocole de transmission série
Difficulté de mise en œuvre : moyenne / élevée

Modbus (définition Wiki), est « un protocole de communication Open Source et libre de droits créé en 1979 par Modicon (société faisant désormais partie du groupe Schneider Electric) pour mettre en communication leurs automates programmables (automates programmables). Il est devenu un standard de facto dans la communication industrielle et est actuellement lun des protocoles de connexion les plus populaires au monde parmi les appareils électroniques industriels. 

Les contrôleurs logiques programmables sont précisément des modules, typiquement adoptés dans le domaine industriel, conçus de manière à permettre aux machines les plus disparates dexécuter les fonctions les plus disparates en fonction de leur programmation et de lutilisation prévue, de la machine qui conserve les biscuits à la louche qui décharge le métal en fusion sur des moules : vraiment nimporte lequel.

Mais pourquoi en parle-t-on sur inDomus , alors que les standards utilisés en domotique sont généralement différents ?

On en parle car il est faux que Modbus ne soit utilisé que dans le secteur industriel : il arrive souvent que certains appareils électroménagers, électroménagers ou même composants individuels présents dans les habitations et les bureaux présentent Modbus comme une interface utile pour lintégration.

Modbus permet la communication entre différents appareils connectés au même réseau, par exemple un système qui mesure la température et lhumidité et communique le résultat à un ordinateur. Modbus est souvent utilisé pour connecter un ordinateur de supervision à une unité terminale distante (RTU) dans les systèmes de contrôle de supervision et dacquisition de données (SCADA).

Il existe essentiellement deux versions du protocole : sur port série (RS485 par défaut, mais aussi RS232) et sur Ethernet/Wi-Fi (Modubus TCP).

UTILISATION EN DOMOTIQUE PERSONNELLE

Il peut arriver quil existe, comme nous lavons dit, des composants domotiques compatibles avec Modbus , il est donc sain de connaître également cette norme: un exemple sont certains modèles de climatiseurs, ou des composants de panneaux électriques (trivialement, ceux de Schenider Eletric) et beaucoup dautres.

Si vous adoptez un HUB personnel pour votre domotique, comment intégrer ces composants à laide de cette norme ? En effet, relativement simplement. Puisquil sagit dun protocole série , généralement les composants compatibles avec cette norme ont des contacts électroniques sur lesquels attester un simple adaptateur qui permet ensuite de canaliser la télémétrie et les commandes vers et depuis le composant en question sur un réseau (série, TCP ou autre type) . Par exemple , il existe des adaptateurs Modbus ↔︎Ethernet , ou Modbus ↔︎Wi-Fi , ou Modbus ↔︎USB et ainsi de suite.

Une fois que vous avez vérifié que le composant domotique à intégrer supporte Modbus et que vous avez acheté un adaptateur qui vous permet de communiquer avec lui, létape suivante consiste à vérifier que votre HUB supporte cette norme : dans le cas du plus quadopté Home Assistant , par exemple, à cet effet, il existe un composant d intégration spécifique (illustré par nous en détail ici ). La dernière étape consiste à obtenir des informations sur les registres Modbus du composant à intégrer, informations utiles pour la configuration logique de lintégration : cette documentation est généralement disponible sur le net, dans les manuels dutilisation ou sur les sites des constructeurs.

Article similaire :  Télécharger toutes les photos d'iCloud vers pc
Nb Evidemment, le raisonnement vaut aussi, au contraire, pour les composants industriels : sur un plan purement théorique, personne ninterdit de piloter une machine industrielle compatible Modbus avec un HUB personnel. Un peu forcé, mais ça marche certainement.

En détail

Attention : entrons maintenant dans les détails techniques de cette norme, détails qui, aux yeux dun novice, peuvent - mettons la main dessus - savérer difficiles. La lecture est recommandée pour ceux qui ont un minimum de familiarité avec ces sujets.

Le ModBus se positionne au niveau 7 dans la pile ISO/OSI , définissant le formatage des messages appelé framing et le mode de transmission des données et les fonctions de contrôle. La communication seffectue via le paradigme client-serveur . Le protocole définit une unité de données de protocole (PDU) qui ne dépend pas de la couche de communication sous-jacente. Lunité de données dapplication (ADU) introduit des champs supplémentaires pour ladressage et la vérification des erreurs.

Lorsque lon parle de Modbus, il est facile dimaginer des dispositifs tels que des automates programmables (automates programmables), des IHM (interface homme-machine), des dispositifs dE / S, des contrôleurs de mouvement, des pilotes, etc. : souvent les périphériques sont surveillés par la supervision, systèmes de contrôle et acquisition de données.

Il existe différentes versions du protocole ModBus, ASCII et RTU fonctionnant sur des réseaux implémentés sur les technologies RS232 RS422 et RS485, tandis que la version TCP/IP fonctionne sur des réseaux prenant en charge la suite TCP/IP.

Serial ModBus définit la structure des messages qui sont envoyés et que les équipements, divisés en maître (client) et esclave (serveur), interprètent quel que soit le type de réseau (client-serveur) sur lequel ils travaillent.

Le modèle de registre est la plus petite entité contenant des informations sur ladresse et les fonctions sur lesquelles il opère.

Type de fonctionTerminologieCaractéristiques
Sortie discrèteBobinesLecture et écriture 16 bits
Entrée discrèteSaisir1 bit en lecture seule (E/S)
Registre dentréeRegistre dentrée16 bits en lecture seule (E/S)
Registre de sortieRegistre dexploitation1 bit de lecture et décriture

Le protocole série ModBus définit deux types élémentaires de données : entrée TOR et registre dentrée . Le type de données discret représente une valeur (bit) pour adresser les sorties (bobines) dun API, tandis que le type de données de registre dentrée représente des valeurs entières de 16 bits. Très souvent une paire de valeurs de type registre est utilisée pour représenter des flottants 32 bits - attention dans ce cas le tri est little endian (les octets les moins significatifs sont stockés avant les octets les plus significatifs).

En général, ce type de données, à lexception des flottants 32 bits, est transféré avec un ordre de bits endian (les octets les plus significatifs sont stockés avant les moins significatifs).

Pour la partie série, il existe deux manières différentes de formater les messages :

  • Modbus RTU fournissant une représentation binaire - compacité des données
  • Modbus ASCII version plus humaine - les données (adresses, fonctions, etc.) sont lisibles par lutilisateur car elles sont codées en hexadécimal.
Article similaire :  Les catégories de logiciels malveillants

Dans les deux cas une communication série est utilisée, RTU suit les commandes, les fonctions et les données avec une somme de contrôle de type CRC ( Cyclic Redundancy Checksum ) tandis que pour lASCII une somme de contrôle de type LRC ( Longitudinal Redundancy Checksum ) est générée . Les nœuds RTU ne peuvent pas communiquer avec les nœuds ASCII et vice versa.

Il y a certaines limitations du protocole série ModBus à souligner, en utilisant un paradigme maître-esclave , il ny a aucun moyen pour un appareil de forcer un envoi de données/exception. Le nœud maître doit continuellement (tirer) interroger les esclaves pour tout changement dans les données. Ladressage Modbus permet de connecter jusquà 254 appareils, un facteur qui limite le nombre maximum dappareils connectés à une station maître.


Nous avons mentionné que pour le Modbus série, il existe deux modes de transmission, ASCII et RTU . Examinons de plus près comment les messages sont créés et ce qui change entre les deux modes.

Pour la version ASCII, chaque octet dun message est envoyé sous la forme de deux caractères ASCII. Lavantage de cette méthode est quelle permet davoir des pauses entre les caractères jusquà 1 seconde sans générer derreurs.

Les caractéristiques du mode ASCII sont :

  • codage hexadécimal (0-9, AF) ;
  • 1 bit de démarrage, 7 bits de données, 1 bit de parité/disparité, 1 bit darrêt si le contrôle de parité est activé, sinon 2 bits ;
  • Somme de contrôle LRC.

Pour la version RTU, chaque octet dans un message contient deux caractères hexadécimaux, le principal avantage de ce mode est quavec le même débit lié, nous avons une densité plus élevée de données en flux continu.

Les caractéristiques du mode RTU sont :

  • Codage binaire 8 bits correspondant à deux caractères hexadécimaux ;
  • 8 bits de données, 1 bit de parité/disparité, 1 bit de fin si le contrôle de parité est activé, sinon 2 bits ;
  • Somme de contrôle CRC.

Dans les deux cas, les messages sont contenus dans une trame où lon a un point de départ et un point darrivée très précis.
Voyons maintenant comment les cadres sont modélisés pour les deux modes.

ASCII

Dans ce cas le message commence par le caractère  :  correspondant en hexadécimal à  3A  et se termine par les caractères  saut de ligne / retour chariot  correspondant en hexadécimal à  0D  et  0A 

DÉBUTADRESSEFONCTIONLES DONNÉESCRLFIN
1 caractère2 caractères2 caractèresN caractères2 caractères2 caractères
RTU

En mode RTU, le message commence par un intervalle de temps de silence dau moins 3,5 caractères

DÉBUTADRESSEFONCTIONLES DONNÉESCRCFIN
T1 T2 T3 T48 bits8 bitsN x 8 bits16 bitsT1 T2 T3 T4

Ladresse en mode ASCII contient deux caractères alors quen mode RTU 8 bits. Les adresses valides pouvant être attribuées aux dispositifs esclaves vont de 1 à 247 sous forme de valeur numérique décimale. Ladresse 0 est réservée à la communication par diffusion. Lorsque le maître interroge un esclave il écrit ladresse du destinataire dans le champ adresse , lorsque lesclave répond il réécrit son adresse dans le champ adresse de sa réponse. Ceci confirme que la requête a été reçue.

Article similaire :  Comment ouvrir les fichiers Winmail DAT

Le champ qui définit la fonction, également dans ce cas, pour ASCII contient deux caractères tandis que pour RTU 8 bits. Les codes valides vont de 1 à 255 sous forme de valeurs numériques décimales. Lorsquun maître envoie un message à un esclave, laction que lesclave doit effectuer est spécifiée dans le champ de fonction (lecture, écriture, chargement, vérification, etc.). Dans ce cas également, dans la réponse, lesclave insère le même code de fonction demandé par le maître.

CODENOMDescription
01Lire létat de la bobineLecture des sorties TOR dun esclave
02Lire létat dentréeLecture des entrées TOR dun esclave
03Lire le registre dexploitationLecture de la valeur binaire des registres de maintien dun esclave
04Lire le registre dentréeLecture de la valeur binaire des registres dentrée dun esclave
05Forcer une seule bobineForcer une bobine à la valeur ON ou OFF

Pour le champ de données, nous avons vu quil est construit en utilisant des paires de chiffres hexadécimaux qui tombent dans lintervalle 00 - FF ; deux caractères ASCII ou un caractère binaire huit bits pour le mode RTU.


Nous terminons ce tour dhorizon du Modbus série en analysant un exemple de transmission dune requête et sa réponse.

En 1999 Modbus TCP a été développé, une norme dédiée aux réseaux qui exploitent la suite de protocoles TCP/IP : en fait il sagit dune version de Modbus RTU série basée sur TCP/IP, qui permet des communications sur les réseaux internet/intranet. Depuis quelques années, la version TCP/IP est de plus en plus utilisée comme Open Source, simple à mettre en œuvre, avec un faible coût de développement et un support matériel à garantir très minimal.

Le protocole Modbus TCP/IP utilise le codage binaire des données et le mécanisme de détection derreur TCP/IP, contrairement au Modbus série, la version TCP/IP est orientée connexion et permet de les exécuter simultanément sur le même esclave ou sur plusieurs appareils. Modbus TCP/IP utilise également le paradigme maître-esclave ; cette communication utilise quatre autres types de messages.

  1. Requête Modbus : léquipement client initie une transaction ;
  2. Indication Modbus : le message de requête reçu du dispositif serveur ;
  3. Réponse Modbus : le message de réponse à la requête envoyée par léquipement serveur ;
  4. Confirmation Modbus : le message de réponse reçu de léquipement client.

La trame du message Modbus TCP/IP est différente de la série Modbus.

Le Modbus Application Protocol Header identifie lADU, contrairement au modèle série celui-ci est identifié par un octet « unit identifier » qui correspond à ladresse de lesclave du protocole RTU. Ceci est utile pour avoir un routeur/passerelle avec une seule adresse IP qui peut prendre en charge plusieurs unités indépendantes.

Les requêtes dans le ModBus TCP/IP sont construites de manière à ce que léquipement récepteur puisse vérifier la fin du message . Pour ce faire, des informations complémentaires sont renseignées dans le MBAP Header afin de permettre au destinataire didentifier les limites du message, très utile si le message a été décompressé en plusieurs paquets.

Un équipement Modbus TCP/IP peut fournir une interface client et/ou serveur et une interface back-end permettant en général daccéder indirectement aux objets de lapplication. Il est composé de quatre zones : entrées TOR, sorties TOR (bobines), registres dentrée et registres de sortie.

PRÉNOMTYPE DOBJETMODE
Entrées discrètesMorceau uniqueLecture seulement
BobinesMorceau uniqueLecture écriture
Journaux dentréemot de 16 bitsLecture seulement
Journaux de sortiemot de 16 bitsLecture écriture

Dans la couche dapplication, il y a quatre éléments principaux :

  1. Client Modbus : équipement client qui permet à lapplication utilisateur de contrôler léchange de données avec un équipement distant, le client construit une requête pour démarrer la transaction ;
  2. Interface client Modbus : interface qui permet à lapplication utilisateur de construire une requête, y compris laccès à lapplication ;
  3. Serveur Modbus : lorsquil reçoit une requête, ce modulo active une action locale telle que la lecture, lécriture ou une autre action. Jexpose généralement le port TCP 502/512 et jattends les requêtes ;
  4. Interface dorsale Modbus : interface du serveur vers lapplication serveur où sont définis les objets de lapplication.

La fonction principale du service de messagerie fourni par Modbus TCP/IP est de gérer la communication afin de gérer également sa terminaison et son flux de données sur les connexions TCP Standard. Cela vous permet davoir tous les avantages qui viennent avec le protocole TCP/IP tels que le flux de contrôle, le contrôle au niveau de la liaison de données et au niveau de lapplication utilisateur.

(Visited 7 times, 1 visits today)
Close