Modbus est un protocole de communication non-propriétaire, créé en 1979 par Modicon (absorbée en 1996 par Schneider Electric), de la couche ISO applicatif. Il permet à des composants électroniques industriels de communiquer entre eux, souvent dans le cadre d'un SCADA. Il peut être utilisé dans le cas d'échange via des communications séries ou via un réseau TCP/IP.

Description du protocole Le protocole MODBUS est un protocole de type client/serveur. Par exemple, une Interface Humain-Machine SCADA est connectée à une unité terminale distante (ou RTU) et communique par Modbus. Dans ce cas, l'IHM est cliente et le RTU est serveur.

Il existe trois types de transmission Modbus :

Modbus RTU (Remote Terminal Unit), utilisant des liaisons séries Modbus ASCII, utilisant des liaisons séries Modbus TCP/IP, utilisant des liaisons Ethernet. Le port TCP utilisé est le port 502

Ces trois types de transmission sont incompatibles les uns avec les autres.

Le protocole MODBUS définit un « protocol data unit » (PDU) qui est indépendant de toute couche protocolaire sous-jacente. Le PDU est composé d’un code de fonction, permettant d’indiquer quel type d’actions le client cherche à réaliser, et de données. Pour associer le protocole au bon élément, le protocole définit un « Application Data Unit », qui est composé d’une adresse (pour le protocole par défaut) ou une entête « MBAP » (pour Modbus/TCP), d’un PDU et de code de vérification d'intégrité. L’ADU est formé par le client qui initie la communication.

En résumé :

PDU =Code de fonction + Données

Pour Modbus générique :

ADU = Adresses + PDU + code d’erreur

Pour Modbus/TCP :

ADU = En-tête MBAP + PDU + code d’erreur

où l'entête MBAP est composée de :

Identifiant de transaction ("transaction identifier") : identifie la transaction requête/réponse Identifiant de protocole ("Protocol identifier"): toujours égal à 0 Longueur ("length"): Nombre de bits suivants (à partir de l'identifiant d'unité) Identifiant de l'unité ("Unit Identifier") : identifie le serveur

Modbus définit 3 types de PDU (Protocol Data Unit) disctincts:

Modbus request : Le client initie la requête auprès du server avec un PDU Modbus response : Le serveur arrive à réaliser l'action demandée par le client. Le serveur envoie au client le code de fonction défini par le client et des données de réponses Modbus Exception Response : Le serveur n'arrive pas à réaliser l'action demandée par le client et, dans ce cas, le serveur renvoie un code d'erreur permettant de donner des informations au client

Modèles de données Le protocole MODBUS définit 4 types de données : +ModèlesType d’objetTypeDiscretes inputUn bitLecture uniquementCoilsUn bitLecture-EcritureInput registersMots de 16-bitsLecture uniquementHolding registersMots de 16-bitsLecture-Ecriture

Codes de fonctions Les codes de fonction permettent au client de dire au serveur quels types d’actions réaliser. Il en existe trois types :

Public Défini par les utilisateurs Réservé : utilisé pour des raisons de systèmes hérités

Par exemple, le code "01" signifie que le client demande à lire un registre "Coils" à une adresse donnée.

Function typeFunction nameFunction codeSubcodeCommentData AccessBit accessPhysical Discrete InputsRead Discrete Inputs2Internal Bits or Physical CoilsRead Coils1Write Single Coil5Write Multiple Coils1516-bit accessPhysical Input RegistersRead Input Registers4Internal Registers or Physical Output RegistersRead Multiple Holding Registers3Write Single Holding Register6Write Multiple Holding Registers16Read/Write Multiple Registers23Mask Write Register22Read FIFO Queue24File Record AccessRead File Record20Write File Record21DiagnosticsRead Exception Status7serial onlyDiagnostic800-18, 20serial onlyGet Com Event Counter11serial onlyGet Com Event Log12serial onlyReport Server ID17serial onlyRead Device Identification4314OtherEncapsulated Interface Transport4313, 14CANopen general Reference4313 Couche physique Le protocole Modbus peut être implémenté : sur une liaison série asynchrone de type RS-232, RS-422 ou RS-485 ou TTY (boucle de courant), avec des débits et sur des distances variables ; on parle alors de Modbus over Serial Line; via TCP/IP sur Ethernet ; on parle alors de Modbus over TCP/IP ; le port logiciel 502 est destiné à ce protocole via Modbus Plus. Modbus Plus est un réseau à passage de jetons à 1 Mb/s, pouvant transporter les trames Modbus et d'autres services propres à ce réseau.

Sécurité Modbus n'est pas sécurisé par défaut. Cependant, Modbus Organization a spécifié une version sécurisée de Modbus/TCP, qui se base sur de l'encapsulation TLS : Modbus/TCP Security. Le protocole utilise par défaut le port TCP 802.

Le serveur et le client Modbus s'authentifient mutuellement par TLS. Les autorisations du client sont définis par rôle. Le rôle est écrit dans une extension « RoleOID » du certificat X.509 du client, qui permet au serveur de vérifier si le client est autorisé à réaliser l'action demandée sur la ressource. La base de données associant rôle et droit est spécifique au vendeur et peut-être hébergée localement sur le serveur ou bien sur un serveur distant.

Références

Voir aussi Articles connexes Jbus Ethernet Global Data Système de contrôle et d'acquisition de données

Liens externes modbus.org

Catégorie:Protocole de communication Catégorie:Protocole réseau