Modbus - Modbus

Modbus est un ensemble de données protocole de communication initialement publié par Modicon (aujourd'hui Schneider Electric ) en 1979 pour une utilisation avec ses automates programmables industriels (API). Modbus est devenu un protocole de communication standard de facto et est désormais un moyen couramment disponible pour connecter des appareils électroniques industriels .

Modbus est populaire dans les environnements industriels car il est publiquement publié et libre de droits . Il a été développé pour des applications industrielles, est relativement facile à déployer et à maintenir par rapport à d'autres standards, et impose peu de restrictions - autres que la taille du datagramme (paquet) - sur le format des données à transmettre.

Le protocole Modbus utilise des lignes de communication série de caractères , Ethernet ou la suite de protocoles Internet comme couche de transport.

Modbus prend en charge la communication vers et depuis plusieurs appareils connectés au même câble ou réseau Ethernet. Par exemple, il peut y avoir un appareil qui mesure la température et un autre appareil pour mesurer l'humidité connecté au même câble, tous deux communiquant les mesures au même ordinateur .

Modbus est souvent utilisé pour connecter un ordinateur de supervision d'usine/système à une unité terminale distante (RTU) dans les systèmes de contrôle de supervision et d'acquisition de données ( SCADA ) dans l'industrie de l'énergie électrique. De nombreux types de données sont nommés à partir du contrôle industriel des dispositifs d'usine, tels que la logique à relais en raison de son utilisation dans la commande de relais : une seule sortie physique est appelée bobine et une seule entrée physique est appelée entrée discrète ou contact .

Le développement et la mise à jour des protocoles Modbus sont gérés par l'organisation Modbus depuis avril 2004, date à laquelle Schneider Electric a transféré les droits à cette organisation. L'organisation Modbus est une association d'utilisateurs et de fournisseurs d'appareils compatibles Modbus qui préconise l'utilisation continue de la technologie. Modbus Organization, Inc. est une association commerciale pour la promotion et le développement du protocole Modbus.

Limites

  • Comme Modbus a été conçu à la fin des années 1970 pour communiquer avec les automates programmables, le nombre de types de données est limité à ceux compris par les automates de l'époque. Les grands objets binaires ne sont pas pris en charge.
  • Il n'existe aucun moyen standard pour un nœud de trouver la description d'un objet de données, par exemple, pour déterminer si une valeur de registre représente une température comprise entre 30 et 175 degrés.
  • Étant donné que Modbus est un protocole client/serveur (anciennement maître/esclave), il n'y a aucun moyen pour un appareil de terrain de « signaler une exception » (sauf via Ethernet TCP/IP, appelé open-mbus) - le nœud client doit systématiquement interroger chacun appareil de terrain et recherchez les changements dans les données. Cela consomme de la bande passante et du temps réseau dans les applications où la bande passante peut être coûteuse, comme sur une liaison radio à faible débit.
  • Modbus est limité à l'adressage de 247 appareils sur une liaison de données, ce qui limite le nombre d'appareils de terrain pouvant être connectés à une station parent (encore une fois, Ethernet TCP/IP est une exception).
  • Les transmissions Modbus doivent être contiguës, ce qui limite les types de dispositifs de communication à distance à ceux qui peuvent mettre en mémoire tampon les données pour éviter les interruptions dans la transmission.
  • Le protocole Modbus lui-même n'offre aucune sécurité contre les commandes non autorisées ou l'interception de données.

Types d'objets Modbus

Voici un tableau des types d'objets fournis par un équipement serveur Modbus à un équipement client Modbus :

Type d'objet Accès Taille Espace d'adressage
Bobine Lire écrire 1 peu 0x0000 – 0xFFFF
Entrée discrète Lecture seulement 1 peu 0x0000 – 0xFFFF
Registre d'entrée Lecture seulement 16 bits 0x0000 – 0xFFFF
Registre de détention Lire écrire 16 bits 0x0000 – 0xFFFF

Versions de protocole

Des versions du protocole Modbus existent pour le port série et pour Ethernet et d'autres protocoles prenant en charge la suite de protocoles Internet . Il existe de nombreuses variantes de protocoles Modbus :

  • Modbus RTU (Remote Terminal Unit) — Ceci est utilisé dans la communication série et est la mise en œuvre la plus courante disponible pour Modbus. Modbus RTU utilise une représentation binaire compacte des données pour la communication de protocole. Le format RTU suit les commandes/données avec une somme de contrôle de redondance cyclique comme mécanisme de contrôle d'erreur pour assurer la fiabilité des données. Un message Modbus RTU doit être transmis en continu sans hésitations inter-caractères. Les messages Modbus sont encadrés (séparés) par des périodes d'inactivité (silencieuses).
  • Modbus ASCII — Ceci est utilisé dans la communication série et utilise des caractères ASCII pour la communication de protocole. Le format ASCII utilise une somme de contrôle de redondance longitudinale . Les messages Modbus ASCII sont encadrés par deux points de début (":") et une nouvelle ligne de fin (CR/LF).
  • Modbus TCP/IP ou Modbus TCP — Il s'agit d'une variante Modbus utilisée pour les communications sur les réseaux TCP/IP , se connectant sur le port 502. Elle ne nécessite pas de calcul de somme de contrôle, car les couches inférieures fournissent déjà une protection par somme de contrôle.
  • Modbus sur TCP/IP ou Modbus sur TCP ou Modbus RTU/IP — Il s'agit d'une variante Modbus qui diffère de Modbus TCP en ce qu'une somme de contrôle est incluse dans la charge utile comme avec Modbus RTU.
  • Modbus sur UDP — Certains ont expérimenté l'utilisation de Modbus sur UDP sur des réseaux IP, ce qui supprime les frais généraux requis pour TCP .
  • Modbus Plus (Modbus+, MB+ ou MBP) — Modbus Plus est la propriété de Schneider Electric et contrairement aux autres variantes, il prend en charge les communications d' égal à égal entre plusieurs clients. Il nécessite un coprocesseur dédié pour gérer la rotation rapide des jetons de type HDLC . Il utilise une paire torsadée à 1 Mbit/s et comprend une isolation de transformateur à chaque nœud, ce qui le rend déclenché par transition/front au lieu de déclenchement par tension/niveau. Un matériel spécial est requis pour connecter Modbus Plus à un ordinateur, généralement une carte conçue pour le bus ISA , PCI ou PCMCIA .
  • Pemex Modbus — Il s'agit d'une extension du Modbus standard avec prise en charge des données historiques et de flux. Il a été conçu pour la société pétrolière et gazière Pemex pour une utilisation dans le contrôle des processus et n'a jamais été largement adopté.
  • Enron Modbus — Il s'agit d'une autre extension de Modbus standard développée par Enron Corporation avec prise en charge des variables entières et à virgule flottante 32 bits et des données historiques et de flux. Les types de données sont mappés à l'aide d'adresses standard. Les données historiques servent à répondre à une norme de l'industrie de l' American Petroleum Institute (API) concernant la manière dont les données doivent être stockées.

Le modèle de données et les appels de fonction sont identiques pour les 4 premières variantes de protocoles ; seule l'encapsulation est différente. Cependant, les variantes ne sont pas interopérables, ni les formats de trame.

Communications et appareils

Chaque appareil communiquant (c'est-à-dire transférant des données) sur un Modbus se voit attribuer une adresse unique.

Sur Modbus RTU, Modbus ASCII et Modbus Plus (qui sont tous des réseaux multipoints RS-485 à câble unique), seul le nœud affecté en tant que client peut lancer une commande. Tous les autres appareils sont des serveurs et répondent aux requêtes et aux commandes.

Pour les protocoles utilisant Ethernet tels que Modbus TCP, n'importe quel appareil peut envoyer une commande Modbus, donc tous peuvent agir en tant que client, bien que normalement un seul appareil agisse en tant que client.

De nombreux modems et passerelles prennent en charge Modbus, car il s'agit d'un protocole très simple et souvent copié. Certains d'entre eux ont été spécialement conçus pour ce protocole. Différentes implémentations utilisent des communications filaires et sans fil, comme dans la bande ISM , et même le service de messages courts (SMS) ou le service général de radiocommunication par paquets (GPRS). L'une des conceptions les plus courantes des réseaux sans fil utilise le réseau maillé . Les problèmes typiques que les concepteurs doivent surmonter incluent des problèmes de latence et de synchronisation élevés.

Commandes

Les commandes Modbus peuvent demander à un appareil Modbus de :

  • changer la valeur dans l'un de ses registres, qui est écrit dans les registres de bobine et de maintien.
  • lire un port d'E/S : lire les données d'un port discret et d'un port de bobine,
  • commande à l'appareil de renvoyer une ou plusieurs valeurs contenues dans ses registres de bobine et de maintien.

Une commande Modbus contient l'adresse Modbus de l'appareil auquel elle est destinée (1 à 247). Seul le périphérique adressé répondra et agira sur la commande, même si d'autres périphériques peuvent la recevoir (une exception est les commandes spécifiques pouvant être diffusées envoyées au nœud 0, qui sont traitées mais non reconnues).

Toutes les commandes Modbus contiennent des informations de somme de contrôle pour permettre au destinataire de détecter les erreurs de transmission.

Formats de cadre

Une "trame" Modbus est constituée d'une Application Data Unit (ADU), qui encapsule une Protocol Data Unit (PDU) :

  • ADU = Adresse + PDU + Contrôle d'erreur,
  • PDU = Code de fonction + Données.

L'ordre des octets pour les valeurs dans les trames de données Modbus est l'octet le plus significatif d'une valeur multi-octets envoyée avant les autres. Toutes les variantes Modbus utilisent l'un des formats de trame suivants.

Format de trame Modbus RTU (principalement utilisé sur les lignes de données série asynchrones telles que RS-485/ EIA-485 )

Nom Longueur (bits) Fonction
Début 28 Au moins 3 ½ caractères de silence (condition de marque)
Adresse 8 Adresse de la gare
Fonction 8 Indique le code de la fonction ; par exemple, lire des bobines/registres de maintien
Données n × 8 Les données + la longueur seront renseignées en fonction du type de message
CRC 16 Contrôle de redondance cyclique
Finir 28 Au moins 3½ caractères de silence entre les images

Remarque sur le CRC :

  • Polynôme : x 16 + x 15 + x 2 + 1 (CRC-16-ANSI également connu sous le nom de CRC-16-IBM, polynôme algébrique hexadécimal normal 8005et inversé A001).
  • Valeur initiale : 65 535.
  • Exemple de trame en hexadécimal : 01 04 02 FF FF B8 80(le calcul CRC-16-ANSI de 01à FFdonne 80B8, qui est transmis l' octet de poids faible en premier ).

Format de trame Modbus ASCII (principalement utilisé sur les lignes série asynchrones 7 ou 8 bits)

Nom Longueur ( octets ) Fonction
Début 1 Commence par deux-points :(la valeur hexadécimale ASCII est 3A)
Adresse 2 Adresse de la gare
Fonction 2 Indique les codes de fonction comme lire les bobines/entrées
Données n × 2 Les données + la longueur seront renseignées en fonction du type de message
LRC 2 Somme de contrôle ( contrôle de redondance longitudinale )
Finir 2 Paire de retour chariot - saut de ligne (CR/LF) ( valeurs ASCII de 0D, 0A)

L'adresse, la fonction, les données et le LRC sont tous des paires de caractères lisibles en hexadécimal majuscule représentant des valeurs 8 bits (0-255). Par exemple, 122 (7 × 16 + 10) sera représenté par 7A.

Le LRC est calculé comme la somme des valeurs de 8 bits (à l'exclusion des caractères de début et de fin), annulée ( complément à deux ) et codée en tant que valeur de 8 bits. Exemple : si l'adresse, la fonction et les données sont codées sous la forme 247, 3, 19, 137, 0 et 10, leur somme est de 416. Le complément à deux (−416) réduit à 8 bits est 96 (par exemple 256 × 2 − 416), qui sera représenté comme 60en hexadécimal. D'où le cadre suivant : :F7031389000A60<CR><LF>. Il est spécifié pour être utilisé uniquement en tant que somme de contrôle : parce qu'il est calculé sur les données codées plutôt que sur les caractères transmis, sa caractéristique « longitudinale » n'est pas disponible pour une utilisation avec des bits de parité pour localiser des erreurs sur un seul bit.

Format de trame Modbus TCP (principalement utilisé sur les réseaux Ethernet )

Nom Longueur (octets) Fonction
Identifiant de la transaction 2 Pour la synchronisation entre les messages du serveur et du client
Identificateur de protocole 2 0 pour Modbus/TCP
Champ de longueur 2 Nombre d'octets restants dans cette trame
Identifiant de l'unité 1 Adresse du serveur (255 si non utilisé)
Code de fonction 1 Codes de fonction comme dans les autres variantes
Octets de données m Données comme réponse ou commandes

L'identifiant d'unité est utilisé avec les appareils Modbus/TCP qui sont des composites de plusieurs appareils Modbus, par exemple sur les passerelles Modbus/TCP vers Modbus RTU. Dans ce cas, l'identifiant de l'unité indique l'adresse du serveur de l'appareil derrière la passerelle. Les appareils nativement compatibles Modbus/TCP ignorent généralement l'identificateur d'unité.

Codes de fonction/commande disponibles

Les diverses opérations de lecture, d'écriture et autres sont classées comme suit. Les lectures et écritures les plus primitives sont indiquées en gras. Un certain nombre de sources utilisent une terminologie alternative, par exemple Force Single Coil où la norme utilise Write Single Coil .
Les entités importantes au sein d'un serveur Modbus sont :

  • Bobines : lisible et inscriptible, 1 bit (off/on)
  • Entrées discrètes : lisible, 1 bit (off/on)
  • Registres d'entrée : lisibles, 16 bits (0 à 65 535), essentiellement des mesures et des états
  • Holding Registers : lisibles et inscriptibles, 16 bits (0 à 65 535), essentiellement des valeurs de configuration
Codes de fonction Modbus
Type de fonction Nom de la fonction Code de fonction Commenter
Accès aux données Accès au bit Entrées physiques discrètes Lire les entrées discrètes 2
Bits internes ou bobines physiques Lire les bobines 1
Écrire une bobine simple 5
Écrire plusieurs bobines 15
accès 16 bits Registres d'entrée physique Lire les registres d'entrée 4
Registres internes ou registres de sortie physique Lire plusieurs registres d'attente 3
Écrire un seul registre d'exploitation 6
Écrire plusieurs registres d'attente 16
Lire/écrire plusieurs registres 23
Masque d'écriture Registre 22
Lire la file d'attente FIFO 24
Accès aux enregistrements de fichiers Lire l'enregistrement du fichier 20
Écrire un enregistrement de fichier 21
Diagnostique Lire l'état de l'exception 7 série seulement
Diagnostique 8 série seulement
Obtenir le compteur d'événements de communication 11 série seulement
Obtenir le journal des événements de communication 12 série seulement
ID du serveur de rapports 17 série seulement
Lire l'identification de l'appareil 43
Autre Transport d'interface encapsulé 43

Format des données des demandes et des réponses pour les principaux codes de fonction

Les demandes et les réponses suivent les formats de trame décrits ci-dessus. Cette section donne des détails sur les formats de données des codes de fonction les plus utilisés.

Code de fonction 1 (lecture des bobines) et code de fonction 2 (lecture des entrées TOR)

Demande :

  • Adresse de la première bobine/entrée TOR à lire (16 bits)
  • Nombre de bobines/entrées TOR à lire (16 bits)

Réponse normale :

  • Nombre d'octets de bobines/valeurs d'entrée discrètes à suivre (8 bits)
  • Valeurs d'entrée de bobine/discrète (8 bobines/entrées discrètes par octet)

La valeur de chaque bobine/entrée TOR est binaire (0 pour off, 1 pour on). La première entrée de bobine/discrète demandée est stockée en tant que bit le moins significatif du premier octet de réponse.
Si le nombre de bobines/entrées discrètes n'est pas un multiple de 8, le(s) bit(s) de poids fort du dernier octet seront remplis de zéros.
Par exemple, si onze bobines sont demandées, deux octets de valeurs sont nécessaires. Supposons que les états de ces bobines successives soient activés , désactivés, activés, désactivés, désactivés, activés, activés, activés, désactivés, activés, activés , la réponse sera alors 02 E5 06en hexadécimal.

Étant donné que le nombre d'octets renvoyé dans le message de réponse n'a que 8 bits de large et que la surcharge du protocole est de 5 octets, un maximum de 2008 (251 x 8) entrées ou bobines discrètes peuvent être lues à la fois.

Code de fonction 5 (force/écriture simple bobine)

Demande :

  • Adresse de la bobine (16 bits)
  • Valeur à forcer/écrire : 0 pour off et 65 280 (FF00 en hexadécimal) pour on

Réponse normale : identique à la demande.

Code de fonction 15 (forcer/écrire plusieurs bobines)

Demande :

  • Adresse de la première bobine à forcer/écrire (16 bits)
  • Nombre de bobines à forcer/écrire (16 bits)
  • Nombre d'octets de valeurs de bobine à suivre (8 bits)
  • Valeurs de bobine (8 valeurs de bobine par octet)

La valeur de chaque bobine est binaire (0 pour off, 1 pour on). La première bobine demandée est stockée en tant que bit de poids faible du premier octet de la demande.
Si le nombre de bobines n'est pas un multiple de 8, les bits les plus significatifs du dernier octet doivent être remplis de zéros. Voir exemple pour les codes fonction 1 et 2.

Réponse normale :

  • Adresse de la première bobine (16 bits)
  • nombre de bobines (16 bits)

Code de fonction 4 (lecture des registres d'entrée) et code de fonction 3 (lecture des registres de maintien)

Demande :

  • Adresse du premier registre à lire (16 bits)
  • Nombre de registres à lire (16 bits)

Réponse normale :

  • Nombre d'octets de valeurs de registre à suivre (8 bits)
  • Valeurs de registre (16 bits par registre)

Étant donné que la longueur maximale d'un PDU Modbus est de 253 (déduite de la longueur maximale d'APU Modbus de 256 sur RS485), seuls 125 registres maximum peuvent être demandés à la fois.

Code de fonction 6 (présélection/écriture d'un seul registre de maintien)

Demande :

  • Adresse du registre de maintien à prérégler/écrire (16 bits)
  • Nouvelle valeur du registre de maintien (16 bits)

Réponse normale : identique à la demande.

Code de fonction 16 (préréglage/écriture de plusieurs registres de maintien)

Demande :

  • Adresse du premier registre de maintien à prérégler/écrire (16 bits)
  • Nombre de registres de maintien à prérégler/écrire (16 bits)
  • Nombre d'octets de valeurs de registre à suivre (8 bits)
  • Nouvelles valeurs des registres de maintien (16 bits par registre)

Étant donné que les valeurs de registre ont une largeur de 2 octets et que seules 127 octets de valeurs peuvent être envoyées, seuls 63 registres de maintien peuvent être préréglés/écrits à la fois.

Réponse normale :

  • Adresse du premier registre de maintien prédéfini/écrit (16 bits)
  • Nombre de registres de maintien prédéfinis/écrits (16 bits)

Réponses d'exception

Pour une réponse normale, le serveur répète le code de fonction. Si un serveur souhaite signaler une erreur, il répondra avec le code de fonction demandé plus 128 (hex 0x80) (3 devient 131 = hex 0x83), et n'inclura qu'un octet de données, appelé code d'exception .

Principaux codes d'exception Modbus

Code Texte Des détails
1 Fonction illégale Le code de fonction reçu dans la requête n'est pas reconnu ou autorisé par le serveur
2 Adresse de données illégales Les adresses de données de certaines ou de toutes les entités requises ne sont pas autorisées ou n'existent pas sur le serveur
3 Valeur des données illégales La valeur n'est pas acceptée par le serveur
4 Échec du périphérique serveur Une erreur irrécupérable s'est produite pendant que le serveur tentait d'effectuer l'action demandée
5 Accuser réception Le serveur a accepté la demande et la traite, mais une longue durée est requise. Cette réponse est renvoyée pour éviter qu'une erreur de temporisation ne se produise dans le client. le client peut ensuite émettre un message Poll Program Complete pour déterminer si le traitement est terminé
6 Périphérique serveur occupé Le serveur est engagé dans le traitement d'une commande de longue durée. le client doit réessayer plus tard
7 Accusé de réception négatif Le serveur ne peut pas exécuter les fonctions de programmation. Le client doit demander des informations de diagnostic ou d'erreur au serveur
8 Erreur de parité mémoire Le serveur a détecté une erreur de parité dans la mémoire. Le client peut réessayer la demande, mais un service peut être requis sur le périphérique serveur
dix Chemin de passerelle non disponible Spécialisé pour les passerelles Modbus. Indique une passerelle mal configurée
11 Le périphérique cible de la passerelle n'a pas répondu Spécialisé pour les passerelles Modbus. Envoyé lorsque le serveur ne répond pas

Bobine, entrée discrète, registre d'entrée, numéros et adresses de registre de maintien

L'organisation Modbus mentionne ce qui suit dans le protocole d'application Modbus v1.1b :

Le protocole d'application Modbus définit précisément les règles d'adressage des PDU.
Dans un PDU Modbus, chaque donnée est adressée de 0 à 65535.
Il définit également clairement un modèle de données MODBUS composé de 4 blocs qui comprend plusieurs éléments numérotés de 1 à n.
Dans le modèle de données Modbus, chaque élément d'un bloc de données est numéroté de 1 à n

Certaines conventions régissent la manière dont les entités Modbus (bobines, entrées TOR, registres d'entrée, registres de maintien) sont référencées.

Il est important de faire la distinction entre numéro d' entité et adresse d' entité :

  • Les numéros d' entité combinent le type d'entité et l'emplacement de l'entité dans leur tableau de description.
  • L' adresse d' entité est l'adresse de départ, une valeur de 16 bits dans la partie données de la trame Modbus. A ce titre sa plage va de 0 à 65.535 (0000 à FFFF dans les paquets)

Dans la convention traditionnelle, les numéros d' entité commencent par un seul chiffre représentant le type d'entité, suivi de quatre chiffres représentant l'emplacement de l'entité :

  • les numéros de bobines commencent par 0 et s'étendent de 0 0001 à 0 9999,
  • les nombres d' entrées discrètes commencent par 1 et s'étendent de 1 0001 à 1 9999,
  • les numéros de registre d'entrée commencent par 3 et s'étendent de 3 0001 à 3 9999,
  • les numéros de registre de maintien commencent par 4 et s'étendent de 4 0001 à 4 9999.

Pour les communications de données, l' emplacement de l'entité (1 à 9 999) est traduit en une adresse d' entité basée sur 0 (0 à 9 998) en soustrayant 1. Par exemple, afin de lire les registres de maintien commençant au numéro 40001, la trame de données contiendra la fonction code 3 (comme vu ci-dessus) et adresse 0. Pour les registres de maintien commençant au numéro 40100, l' adresse sera 99 etc.

Cela limite le nombre d' adresses à 9 999 pour chaque entité. Un référencement de facto étend cela au maximum de 65.536. Elle consiste simplement à ajouter un chiffre à la liste précédente :

  • les numéros de bobine vont de 0 00001 à 0 65536,
  • les nombres d' entrées discrètes vont de 1 00001 à 1 65536,
  • les numéros de registre d'entrée vont de 3 00001 à 3 65536,
  • les numéros de registre de maintien vont de 4 00001 à 4 65536.

Lors de l'utilisation du référencement étendu, toutes les références numériques doivent avoir exactement 6 chiffres. Cela évite la confusion entre les bobines et d'autres entités. Par exemple, pour connaître la différence entre le registre de maintien #40001 et la bobine #40001, si la bobine #40001 est la cible, elle doit apparaître comme #040001.

Une autre façon de noter les adresses de données est d'utiliser la valeur hexadécimale, ce qui clarifie l'utilisation des 4 chiffres dans la convention traditionnelle mentionnée précédemment.

  • le nombre de bobines va de 0x 0000 à 0x FFFF,
  • les nombres d' entrées discrètes vont de 1x 0000 à 1x FFFF,
  • les numéros de registre d'entrée vont de 3x 0000 à 3x FFFF,
  • les numéros de registre de maintien vont de 4x 0000 à 4x FFFF.

L'avantage de cette notation est que lorsque l'utilisateur a besoin d'analyser les paquets Modbus, l'adresse correspond.

Cartographie JBUS

Un autre protocole de facto étroitement lié à Modbus est apparu après lui, et a été défini par la marque d'automates April Automates, fruit d'une collaboration entre les sociétés françaises Renault Automation et Merlin Gerin et Cie en 1985 : JBUS . Les différences entre Modbus et JBUS à l'époque (nombre d'entités, de stations serveurs) sont désormais sans importance car ce protocole a quasiment disparu avec la série d'automates April qu'AEG Schneider Automation a rachetée en 1994 puis rendu obsolète. Cependant, le nom JBUS a survécu dans une certaine mesure.

JBUS prend en charge les codes de fonction 1, 2, 3, 4, 5, 6, 15 et 16 et donc toutes les entités décrites ci-dessus. Cependant la numérotation est différente avec JBUS :

  • Le nombre et l'adresse coïncident : l'entité # x a l'adresse x dans la trame de données.
  • Par conséquent, le numéro d'entité n'inclut pas le type d'entité. Par exemple, le registre de maintien #40010 dans Modbus contiendra le registre #9, situé à l'adresse 9 dans JBUS.
  • Le numéro 0 (et donc l'adresse 0) n'est pas pris en charge. Le serveur ne doit pas implémenter de données réelles à ce numéro et à cette adresse et il peut renvoyer une valeur nulle ou générer une erreur à la demande.

Implémentations

Presque toutes les implémentations ont des variations par rapport à la norme officielle. Différentes variétés peuvent ne pas communiquer correctement entre les équipements de différents fournisseurs. Certaines des variantes les plus courantes sont :

  • Types de données
    • nombre à virgule flottante IEEE
    • Entier 32 bits
    • Données 8 bits
    • Types de données mixtes
    • Champs de bits en nombres entiers
    • Multiplicateurs pour changer les données vers/depuis un entier. 10, 100, 1000, 256...
  • Extensions de protocole
    • Adresses de serveur 16 bits
    • Taille des données de 32 bits (1 adresse = 32 bits de données renvoyées)
    • Données échangées par mot

Modbus Plus

Malgré son nom, Modbus Plus n'est pas une variante de Modbus. C'est un protocole différent , impliquant le passage de jetons .

Il s'agit d'une spécification propriétaire de Schneider Electric, bien qu'elle ne soit pas publiée plutôt que brevetée. Il est normalement implémenté à l'aide d'un chipset personnalisé disponible uniquement pour les partenaires de Schneider.

Voir également

Les références

Liens externes

spécification
Autre