Comment pouvons-nous aider ?
Adressage Modbus / Chaîne d’adresse de données Modbus standard / Codes de fonction Modbus

En quelques mots
- 0x01 Lire les bobines : lire l’état des relais ou des sorties numériques
- 0x02 Lecture des entrées discrètes : lecture des signaux d’entrée numériques tels que les boutons-poussoirs
- 0x03 Lecture des registres de maintien : lecture des paramètres de processus ou des points de consigne stockés dans les registres de maintien
- 0x04 Lecture des registres d’entrée : lecture des valeurs d’entrée analogiques, telles que les lectures des capteurs d’un PLC
- 0x05 Écriture d’une bobine unique : définit l’état d’une sortie numérique unique (ON/OFF), telle que l’activation d’un relais
- 0x0F Écriture de plusieurs bobines : définir les états de plusieurs sorties numériques (ON/OFF) dans une seule requête
- 0x06 Écriture d’un registre de maintien unique : écriture d’une valeur 16 bits unique dans un registre de maintien, par exemple pour définir un paramètre ou une commande
- 0x10 Écriture de plusieurs registres de maintien : écriture de plusieurs valeurs 16 bits dans des registres de maintien consécutifs, par exemple plusieurs points de consigne à la fois ou mise à jour d’une chaîne
0x, 1x, 3x, 4x et FC01, FC02, FCxx,… Je suis perdu !
0x 1x 3x 4x ne définissent pas le code de fonction Modbus. Ils indiquent uniquement le type de zone de données : bobines, entrées discrètes, registre de maintien,…
Le code de fonction (FCxx) définit l’opération effectuée sur cette zone de données.
Correspondance logique courante entre 0x, 1x,.. et FC01, FC02,..
0x Bobines
Lecture avec FC01
Écriture avec FC05 ou FC15
1x Entrées discrètes
Lecture avec FC02
3x Registres d’entrée
Lecture avec FC04
4x Registres de maintien
Lecture avec FC03
Écriture avec FC06 ou FC16
Point important : dans une trame Modbus, il n’y a jamais de 0x, 1x, 3x ou 4x. La trame contient uniquement le code de fonction, l’adresse de départ et la quantité.
Les préfixes 0x, 1x, 3x et 4x sont une convention de documentation et de logiciel, et non une règle de protocole.
Détails
Bobines = sorties numériques équivalentes à une bobine dans un schéma de relais.
Le type de données Modbus est 0.
Il est souvent noté 0x, ce qui facilite l’adressage.
Le type de données 0x est disponible pour la lecture et l’écriture.
Pour la lecture, le code de fonction 1 (FC01 et 01h en hexadécimal) est utilisé.
Pour écrire ces données, on utilise le code de fonction 5 (FC05 et 05h).
Pour écrire plusieurs données consécutives, on utilise le code de fonction 15 (0Fh).
Ce type de données est noté de différentes manières :
%M1, 00001, 000001 (pour la première variable)…
Selon l’interprétation de la norme, la notation doit être 0x0000 (jusqu’à 0xFFFF), en hexadécimal.
État d’entrée = entrées numériques équivalentes à un contact dans un schéma de relais.
Le type de données Modbus est 1.
Il est souvent appelé 1x, ce qui facilite l’adressage.
Le type de données 1x est disponible en lecture seule.
Pour la lecture, le code de fonction 2 (FC02 et 02h) est utilisé.
Ce type de données est noté de différentes manières :
%i1, 10001, 100001..,
La notation doit être 1×0000 (jusqu’à 1xFFFF).
Registres d’entrée = entrées numériques équivalentes à un registre (d’où le nom), ou une valeur non binaire (un mot de 16 bits).
À l’époque, le choix n’était pas le même qu’aujourd’hui…
Le type de données Modbus est 3.
Il est souvent appelé 3x, ce qui facilite l’adressage.
Le type de données 3x est disponible en lecture seule.
Pour la lecture, le code de fonction 4 (FC04 et 04h) est utilisé.
Ce type de données est noté de différentes manières :
%IW1, 30001, 300001..,
La notation doit être 3×0000 (jusqu’à 3xFFFF).
Registres de maintien = sorties numériques équivalentes à un registre (d’où le nom), ou une valeur non binaire (un mot de 16 bits).
Le type de données Modbus est 4.
Il est souvent appelé 4x, ce qui facilite l’adressage.
Le type de données 4x est disponible en lecture et en écriture.
Pour la lecture, le code de fonction 3 (FC03 et 03h) est utilisé.
Pour écrire des données de ce type, on utilise le code de fonction 6 (FC06 et 06h).
Pour écrire plusieurs données consécutives, on utilise le code de fonction 16 (10h).
Ce type de données est noté de différentes manières :
%MW1, 40001, 400001..,
La notation doit être 4×0000 (jusqu’à 4xFFFF).
Il y a souvent confusion entre la notation (qui est virtuelle) et l’adresse.
Le fait d’utiliser l’adresse en hexadécimal permet de se débarrasser des différentes notations décrites ci-dessus.
En effet, pour les petites applications, il n’y aura pas de problème, la valeur décimale de l’adresse n’est pas supérieure à 9999.
Mais lorsque vous passez à des bases de données plus importantes, c’est le chaos
49999 correspond par exemple au 10000e mot de type 4, que se passe-t-il si le 10001e mot doit être utilisé ? En général, on note 410000 (mais cela change l’échelle, ce qui n’est pas pratique), on écrit souvent 50000 (mais ce n’est pas très logique, le type est 4, pas 5).
Certaines personnes l’écrivent également sous la forme 4×9999, puis 4×10000…
En écrivant en hexadécimal, vous pouvez utiliser toutes les adresses disponibles et la notation est plus lisible.
Le 10 000e mot est 4×2710, le suivant sera 4×2711… La conversion est facile avec la calculatrice Windows ou dans le PLC lui-même.