Convertisseur d’adresses Modbus

Convertissez une adresse Modbus telle qu’elle figure dans une notice (40001, 400001, numéro commençant à 1 ou décalage commençant à 0) vers les autres conventions, y compris le décalage transmis dans la requête.

Modbus et liaisons série Mis à jour Gratuit, sans inscription

40001Référence à 5 chiffres
400001Référence à 6 chiffres
1Numéro commençant à 1
0À partir de 0, transmis

Registre de maintien, décalage 0 (0x0000).

Les registres voisins

Décalage à partir de 0dans la notice
  1. 040001
  2. 140002un au-dessus
  3. 240003
  4. 340004
  5. 440005
  6. 540006
  7. 640007

Vous lisez le registre voisin ? La notice et le logiciel ne comptent peut-être pas tous deux à partir de 0 ou de 1 : essayez le registre adjacent.

Les quatre tables

  • 0xBobinesbits individuelslecture 01, écriture 05 et 15
  • 1xEntrées discrètesbits individuels, lecture seulelecture 02
  • 3xRegistres d’entréemots de 16 bits, lecture seulelecture 04
  • 4xRegistres de maintienmots de 16 bitslecture 03, écriture 06 et 16

Requête de lecture de ce registre

  1. 03fonction
  2. 00adresse, octet fort
  3. 00adresse, octet faible
  4. 00quantité, octet fort
  5. 01quantité, octet faible

Le chiffre initial d’une référence (4) n’est jamais transmis : la fonction 03 choisit la table et 0x0000 est l’adresse.

Compléter la trame RTU de l’unité 1 avec son CRC
Valeurs d’exemple
Adresse indiquée dans la notice
Notation utilisée
Table de données
Table

Décalage transmis, à partir de 0

0

Décalage en hexadécimal
0x0000
Numéro commençant à 1
1
Référence à 5 chiffres
40001
Référence à 6 chiffres
400001
Code fonction de lecture
03

Registre de maintien, d’après le 4 initial de la référence. Le code fonction choisit la table ; ce chiffre n’est jamais transmis.

Méthode de calcul
  1. Décalage = adresse − 40001=40001 − 40001=0
  2. Hexadécimal = décalage en base 16=0=0x0000

Registre de maintien 40001 correspond à l’adresse 0 (0x0000) dans la requête Modbus.

Conseil : Si chaque valeur lue semble provenir du registre voisin, le logiciel et la notice n’utilisent probablement pas la même numérotation (à partir de 0 ou de 1). Décalez l’adresse d’une unité.

Convertir une référence Modbus en adresse de registre

Les notices utilisent plusieurs notations pour les adresses Modbus : 40001, 400001, registre 1 ou adresse 0 peuvent désigner le même registre de maintien. Une requête Modbus transmet l’adresse commençant à 0, de 0 à 65535 ; le code fonction choisit la table. Pour convertir une référence comme 40001, soustrayez la première référence de sa table : 40001 − 40001 = 0. Saisissez une référence à cinq ou six chiffres exactement comme dans la notice : le calculateur déduit la table du premier chiffre. Pour un numéro commençant à 1 ou à 0, choisissez la table.

Référence à 5 chiffres (40001)

adresse = référence − 40001

Le premier chiffre désigne la table : 0 pour les bobines, 1 pour les entrées discrètes, 3 pour les registres d’entrée et 4 pour les registres de maintien. Soustrayez 00001, 10001, 30001 ou 40001. Cette notation ne couvre que 9 999 éléments par table.

Référence à 6 chiffres (400001)

adresse = référence − 400001

Même principe, mais avec une capacité de 65 536 éléments par table. Soustrayez 000001, 100001, 300001 ou 400001.

Numéro de registre commençant à 1

adresse = numéro − 1

Certaines tables numérotent les registres à partir de 1 sans chiffre indiquant la table. Le registre 1 correspond à l’adresse 0.

Adresse commençant à 0

adresse = numéro

Les tables destinées aux développeurs donnent souvent l’adresse telle qu’elle figure dans la requête, fréquemment en hexadécimal.

Le code fonction, et non l’adresse, choisit la table : 01 lit les bobines, 02 les entrées discrètes, 03 les registres de maintien et 04 les registres d’entrée. Le 4 de 40001 indique d’utiliser la fonction 03 ; il n’est jamais transmis.

Exemples : adresses des registres Modbus

Une tension de compteur à 30001

La notice d’un compteur place la tension de phase à 30001. C’est le premier registre d’entrée : lisez-le avec la fonction 04 à l’adresse 0.

Décalage transmis, à partir de 0 0 Ouvrir dans le calculateur

Une lecture décalée d’un registre à partir de 40108

La table place une consigne à 40108 : la requête utilise donc la fonction 03 à l’adresse 107 (0x006B). Saisir 108 lit le registre suivant ; cette erreur peut produire une valeur plausible mais fausse. Vérifiez d’abord un registre dont vous connaissez la valeur.

Décalage transmis, à partir de 0 107 Ouvrir dans le calculateur

Une référence à 6 chiffres au-delà de 9999

Les grandes tables utilisent des références à six chiffres, car la notation à cinq chiffres s’arrête à 49999 pour les registres de maintien. La référence 412001 correspond à l’adresse 12000 (0x2EE0) d’un registre de maintien.

Décalage transmis, à partir de 0 12000 Ouvrir dans le calculateur

Plages de références Modbus par table

Première et dernière références à cinq chiffres de chaque table, et début de la notation à six chiffres. Chaque plage commence à l’adresse 0 dans la requête.

TablePremière à 5 chiffresDernière à 5 chiffresPremière à 6 chiffres
Bobines0000109999000001
Entrées discrètes1000119999100001
Registres d’entrée3000139999300001
Registres de maintien4000149999400001

Télécharger ce tableau (CSV)

Questions sur adresses des registres Modbus

40001 désigne-t-il le registre 40001 ?

Non. Il désigne le premier registre de maintien, à l’adresse 0 dans la requête. Le 4 initial indique la table ; le reste compte à partir de 1.

Pourquoi ma lecture Modbus est-elle décalée d’un registre ?

La cause habituelle est une confusion entre numérotation à partir de 0 et à partir de 1 : la table compte à partir de 1 et le logiciel à partir de 0, ou l’inverse. Si une valeur semble provenir du registre voisin, décalez l’adresse d’une unité et comparez.

Quel code fonction lit les registres de maintien ?

La fonction 03 lit les registres de maintien et 04 les registres d’entrée. La fonction 06 écrit un seul registre de maintien et 16 (0x10) en écrit plusieurs.

Quelle est l’adresse Modbus la plus élevée ?

65535 (0xFFFF) dans chaque table, car le champ d’adresse de la requête fait 16 bits. Les références à cinq chiffres ne dépassent pas 9999 éléments par table ; d’où l’existence des références à six chiffres.

Limites de ce résultat

  • Vérifiez les données source, la notice de l’appareil et les conditions d’installation avant de vous fier au résultat.

Mesurer en continu

Un ZMB relie un appareil Modbus RS-485 au réseau sans fil. Les entrées discrètes et les registres d’entrée sont en lecture seule ; les bobines et les registres de maintien peuvent être écrits si l’appareil le permet. Le Gateway peut aussi lire directement les appareils Modbus.

Guides associés

Sources

  1. MODBUS Application Protocol Specification V1.1b3 (s’ouvre dans un nouvel onglet) (PDF) Modbus Organization, 2012-04-26
  2. An Introduction to Modbus (s’ouvre dans un nouvel onglet) Modbus Organization, accessed 2026-09-14