Connecteur Modbus

Principes généraux de Modbus

Modbus est un protocole de communication utilisé pour des réseaux d’automates. Historiquement, il a été conçu en pour des communications sur un interface série (RS232, RS422, RS485) et supporte depuis le mode TCP.

OIBus propose un connecteur Modbus en mode TCP uniquement.

Dans ce mode TCP, Modbus met en place une connexion client-serveur : le serveur met à disposition des données référencées par des adresses mais reste passif. C’est le client Modbus qui va chercher les valeurs des données. Le connecteur Sud Modbus d’OIBus est un client Modbus. Il faut donc indiquer au connecteur :

  • L’hôte (host, soit l’adresse IP de la machine serveur Modbus)
  • Le port (502 par défaut)
  • Le slave id pour identifier la machine source Modbus si nécessaire.
principes généraux de modbus

Selon les automates, plusieurs paramétrages sont possibles sur la manière d’accéder aux données. Ces paramétrages sont communs à l’ensemble de l’automate. Il s’agit des paramètres suivants :

  • Address offset : Pour la plupart des automates, il n’y a pas d’offset (option Modbus). Certains automates commencent la plage d’adresse à 1 au lieu de 0, il s’agit de l’option JBus
  • Endianness : Indique le type d’encodage des bits (Big Endian ou LittleEndian)
  • Swap Bytes : Indique si les octets au sein d’un groupe de 16 bits (unword) doivent être inversés ou non
  • Swap Words : Indique si les words (groupe de 16 bits) doivent être inversés ou non au sein d’un groupe de 32 bits.

Le Mode d’Adressage

Les adresses de données Modbus suivent la convention Modicon Convention Notation (MCN) :

  • Coil = [0x00001 - 0x09999] De 1 à 39 321
  • Discrete Input = [0x10001 - 0x19999] De 65 537 à 104 857
  • Input Register = [0x30001 - 0x39999] De 196 609 à 235 929
  • Holding Register = [0x40001 - 0x49999] De 262 145 à 301 465

Une version étendue de MCN permet à l’utilisateur de spécifier des espaces d’adresses plus large :

  • Coil = [0x000001 - 0x065535]
  • Discrete Input = [0x100001 - 0x165535]
  • Input Register = [0x300001 - 0x365535]
  • Holding Register = [0x400001 - 0x465535]

Lors de l’ajout d’un point dans OIBus, il est nécessaire de spécifier plusieurs informations :

  • Le point id correspond à la référence de la donnée pour l’application cible (endpoint destinataire).
  • L’address correspond à l’adresse de la variable dans l’automate, en hexadécimal sans le chiffre de type de donnée. Par exemple :
    • Pour la donnée Holding Register 0x40001, il faut entrer l’adresse 0x0001 et spécifier le Modbus type holdingRegister.
    • Pour la donnée Coil 0x009C, il faut entrer 0x009C et spécifier le Modbus type coil.
  • Le scan mode indique l’intervalle de temps entre deux requêtes au serveur.
  • Le data type est utilisé dans le cas des Holding Registers et Input Registers (le champ est ignoré sinon). Ce paramètre indique le type de la donnée récupérée sur le registre.
le mode d'adressage

Pour aller plus loin

Vous pouvez consulter le site web de la Modbus Organization et plus particulièrement le document Modicon Modbus Protocol Reference Guide.