
- •Indications à suivre absolument
- •Sommaire
- •Sommaire Chapitre 2
- •WAGO I/O SYSTEM
- •Coupleur de Bus - Modbus/JBus
- •Alimentation de la partie électronique interne
- •Alimentation des capteurs actionneurs
- •Raccordement du bus et adresse de la station
- •Boîtier et données techniques
- •Modbus
- •Configuration
- •Baudrate - Vitesse de transmission
- •Format
- •Type de transmission
- •Exemple d’application
- •Code des fonctions supportées
- •Fonction Watchdog
- •Information sur le Firmware
- •Registres généraux
- •Mise en service et diagnostic
- •Informations techniques générales
- •Transport et stockage
- •Conditions mécaniques et climatiques d’installation
- •7.3 Classe et degré de protection
- •Compatibilité électromagnétique
- •Alimentation en courant

5.5Code des fonctions supportées
Le tableau ci-dessous indique les fonctions supportées par le coupleur MODBUS
Code fonction |
Fonction |
|
|
1 |
Lecture de n bits |
|
|
2 |
Lecture de n bits |
|
interne |
|
|
3 |
Lecture de n mots |
|
|
4 |
Lecture de n mots |
|
interne |
|
|
5 |
Ecriture d’un bit |
|
|
6 |
Ecriture d’un mot |
|
|
(8) |
(Diagnostics) |
|
|
11 |
Lecture compteur |
|
d’événement |
|
|
15 |
Ecriture de n bits |
|
|
16 |
Ecriture de n mots |
|
|
Description
Lecture de n bits .
Lecture de n bits (identique à fonction 1).
Lecture de n mots.
Lecture de n mots (identique à fonction 3).
Ecriture d’un bit de sortie.
Ecriture d’un mot
non supportée
Lecture du compteur d’événement.
Ecriture de n bits.
Ecriture de n mots.
Modbus / Configuration |
22 |
:$*2Ç, 2Ç6<67(0

Lecture de n bits (Code fonction 0x01)/ Lecture de n bits interne (Code fonction 0x02):
Cette fonction permet de lire dans les zones bits d’entrée ou de sortie de l’esclave. Le Broadcast ou diffusion n’est pas supporté avec cette fonction, et le nombre de données est limitée pour une requête à 256 bits.
Requête:
La requête contient l’adresse de départ de la zone de bit ainsi que le nombre de bits que l’on désire lire. La première entrée commence à l’adresse 0.
Le tableau suivant donne un exemple de requête de lecture des Bits 0 à 7 sur l’esclave 11:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x01 |
0x01 |
„01“ |
0x30, 0x31 |
Adresse début Pforts (High) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Adresse début Pfaibles (Low) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de données Pforts |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
(High) |
|
|
|
|
Nbre de données Pfaibles |
0x08 |
0x08 |
„08“ |
0x30, 0x38 |
(Low) |
|
|
|
|
Error Check (LRC / CRC) |
- |
0x3D |
„EC“ |
0x45, 0x43 |
|
|
0x66 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
La valeur des Bits se trouve dans le champ des Data. Un 1 signifie que l’état est ON, un 0 signifie que l’état est OFF. Le bit de poids faible du premier octet des Data correspond au premier Bit de la Requête. Les bits suivants sont rangés dans l’ordre croissant. Si le nombre des entrées n’est pas un multiple de 8, le Bits restants du dernier octet de Data seront mis à zéro. Si on demande plus de bits d’entrée ou de sortie que d’entrées ou de sorties connectées sur le coupleur, les bits d’entrée en trop seront mis à zéro, et les bits de sorties en trop garderont leur dernière valeur.
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3A |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x01 |
0x01 |
„01“ |
0x30, 0x31 |
Nbre d’octets (Byte) |
0x01 |
0x01 |
„01“ |
0x30, 0x31 |
Data (point 8...0) |
0x12 |
0x12 |
„12“ |
0x31, 0x32 |
Error Check (LRC / |
- |
0xD2 |
„E1“ |
0x45, 0x31 |
CRC) |
|
0x5D |
|
|
End of frame-Fin de |
- |
t1-t2-t3 |
- |
0xD, 0xA |
trame |
|
|
|
|
L’état des entrées 7 à 0 est exprimé sous la forme d’un octet 12 en hexadécimal ou 0001 0010 en binaire. L’entrée 7 se trouve sur le bit de poids fort de l’octet et l’entrée 0 se trouve sur le bit de poids faible. Etat des bits 7 à 0 Off-Off-Off-On-Off-Off-On-Off
|
Bit: |
0 |
0 |
0 |
1 |
|
0 |
0 |
1 |
|
0 |
|
N° de |
7 |
6 |
5 |
4 |
|
3 |
2 |
1 |
|
0 |
|
bit: |
|
|
|
|
|
|
|
|
|
|
Modbus / Configuration |
|
|
|
|
|
|
|
|
23 |
:$*2Ç, 2Ç6<67(0

Lecture de N mots (Code fonction 0x03)/Lecture de N mots interne (Code fonction 0x04):
Cette fonction sert à lire un certain nombre de mots d’entrée ou de sortie ou des registres. Le Broadcast ou diffusion n’est pas supporté avec cette fonction, et le nombre de données est limitée pour une requête à 128 mots (word) par requête.
Requête:
La requête contient l’adresse du mot de départ ainsi que le nombre de mots consécutifs que l’on désire lire. Le premier mot d’entrée commence à l’adresse 0.
Le tableau suivant donne un exemple de requête de lecture des mots 0 et 1 sur l’esclave 11:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x03 |
0x03 |
„03“ |
0x30, 0x33 |
Adresse début Pforts (High) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Adresse début Pfaibles (Low) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de données Pforts |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
(High) |
|
|
|
|
Nbre de données Pfaibles |
0x02 |
0x02 |
„02“ |
0x30, 0x32 |
(Low) |
|
|
|
|
Error Check (LRC / CRC) |
- |
0xC4 |
„F0“ |
0x46, 0x30 |
|
|
0xA1 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
Les registres de données se composent de 2 octets par ‘ register ‘ ou mot, le premier octet contient les poids forts (High ou MSB) du mot et le deuxième octet les poids faibles (Low ou LSB) La réponse aura la structure suivante:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3A |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x03 |
0x03 |
„03“ |
0x30, 0x33 |
Nbre d’octets (Byte) |
0x04 |
0x04 |
„04“ |
0x30, 0x34 |
Data Hi (Register 0) |
0x3F |
0x3F |
„3F“ |
0x33, 0x46 |
Data Lo (Register 0) |
0xFB |
0xFB |
„FB“ |
0x46, 0x42 |
Data Hi (Register 1) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Data Lo (Register 1) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Error Check (LRC / |
- |
0x2D |
„B4“ |
0x42, 0x34 |
CRC) |
|
0x61 |
|
|
End of frame-Fin de |
- |
t1-t2-t3 |
- |
0xD, 0xA |
trame |
|
|
|
|
Modbus / Configuration |
24 |
:$*2Ç, 2Ç6<67(0

Ecriture d’un bit (Code fonction 0x05):
Cette fonction permet d’écrire un bit de sortie. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que le même bit prendra la même valeur sur tous les esclaves.
Requête:
L’état On ou Off se fait par une constante, la valeur 0xFF00 hex. met le bit de sortie à 1, la valeur 0x0000 hex. met le bit de sortie à 0. Les autres valeurs ne sont pas spécifiées et ne seront pas prises en compte par le bit de sortie. Le tableau suivant donne un exemple de requête d’écriture à 1 du bit 0 de l’esclave 11:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x05 |
0x05 |
„05“ |
0x30, 0x35 |
adresse du bit high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
adresse du bit low |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Force data high |
0xFF |
0xFF |
„FF“ |
0x46, 0x46 |
Force data low |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Error Check (LRC / |
- |
0x8C |
„F1“ |
0x46, 0x31 |
CRC) |
|
0x90 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
La réponse à la trame est un écho de la requête. Elle sera envoyée si le bit est écrit.
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x05 |
0x05 |
„05“ |
0x30, 0x35 |
adresse du bit high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
adresse du bit low |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Force data high |
0xFF |
0xFF |
„FF“ |
0x46, 0x46 |
Force data low |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Error Check (LRC / |
- |
0x8C |
„F1“ |
0x46, 0x31 |
CRC) |
|
0x90 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Modbus / Configuration |
25 |
:$*2Ç, 2Ç6<67(0

Ecriture d’un mot (Code fonction 0x06):
Cette fonction permet d’écrire un mot. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que le même mot prendra la même valeur sur tous les esclaves.
Requête:
Cette fonction nécessite l’adresse du mot à écrire ainsi que la valeur sur deux octets. Le tableau suivant donne un exemple de requête d’écriture de la valeur (data) 0x1234 sur le mot d’adresse 0 de l’esclave 11.
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x06 |
0x06 |
„06“ |
0x30, 0x36 |
adresse du mot high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
adresse du mot low |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
data high |
0x12 |
0x12 |
„12“ |
0x31, 0x32 |
data low |
0x34 |
0x34 |
„34“ |
0x33, 0x34 |
Error Check (LRC / CRC) |
- |
0x8C |
„A9“ |
0x41, 0x39 |
|
|
0x17 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
La réponse à la trame est un écho de la requête. Elle sera envoyée si le mot est écrit.
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x06 |
0x06 |
„06“ |
0x30, 0x36 |
adresse du mot high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
adresse du mot low |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
data high |
0x12 |
0x12 |
„12“ |
0x31, 0x32 |
data low |
0x34 |
0x34 |
„34“ |
0x33, 0x34 |
Error Check (LRC / CRC) |
- |
0x8C |
„A9“ |
0x41, 0x39 |
|
|
0x17 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Modbus / Configuration |
26 |
:$*2Ç, 2Ç6<67(0

Lecture du compteur d’événement (Code fonction 0x0B):
Cette fonction permet de remonter un mot de status, ainsi qu’un compteur d’événement qui s’incrémente à chaque fois qu’une trame a été reçue correctement par l’esclave et bien traitée et que cette demande a engendrée une trame de réponse (hormis fonction 0x0B, et réponse sur erreur). La finalité de cette fonction est de savoir si la communication fonctionne correctement. En effet le maître peut compter les trames qu’il envoie à chaque esclave et ainsi comparer ses compteurs avec les compteurs d’événement.
Le compteur est remis à zéro à l’aide de la fonction de diagnostic (fonction 0x08) et de la sous fonction effacer le compteur (Code 00 01) ou la sous fonction effacer le compteur et le registre de diagnostic (Code 00 0A).
Requête:
Le tableau suivant donne un exemple de requête de lecture du compteur d’événement de l’esclave 11:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Error Check (LRC / |
- |
0x47 |
„EA“ |
0x45, 0x41 |
CRC) |
|
0x47 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
La réponse normale contient 2 octets de status et 2 octets représentants la valeur du compteur. Les 2 octets de status sont toujours à zéro.
Le tableau suivant donne un exemple de requête de lecture du compteur d’événement de l’esclave:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Status high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Status low |
0x00 |
0x00 |
„00“ |
0x31, 0x33 |
Event count high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Event count low |
0x03 |
0x03 |
„03“ |
0x30, 0x33 |
Error Check (LRC / |
- |
0xE4 |
„E7“ |
0x45, 0x37 |
CRC) |
|
0xA0 |
|
|
End of frame-Fin de |
|
t1-t2-t3 |
- |
0xD, 0xA |
trame |
|
|
|
|
Le compteur d’événement est à 3 (00 03 hex.).
Modbus / Configuration |
27 |
:$*2Ç, 2Ç6<67(0

Ecriture N Bits (Code fonction 0x0F):
Cette fonction permet d’écrire à 1 ou à 0 N bits de sortie. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que les mêmes bits prendront les mêmes valeurs sur tous les esclaves. Le nombre max. de bits sur une trame N=256.
Requête:
La requête spécifie l’adresse de début des bits qui devront être mis à 1 ou à 0, le nombre de bits à écrire, le nombre d’octets qui vont être nécessaires pour transmettre les valeurs, ainsi que les valeurs des bits.
Le tableau suivant donne un exemple de requête d’écriture de 16 bits à partir de l’adresse 0 sur l’esclave 11. La requête contient 2 octets avec la valeur A5 F0 hex. soit 1010 0101 1111 0000 binaire:
Valeur: |
1 |
0 |
1 |
0 |
|
0 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
|
0 |
0 |
0 |
0 |
Bit N° : |
7 |
6 |
5 |
4 |
|
3 |
2 |
1 |
0 |
|
15 |
14 |
13 |
12 |
|
11 |
10 |
9 |
8 |
Le premier octet contient la valeur A5 hex. sur les adresse 7 à 0, où 0 représente le bit de poids faibles. Le deuxième octet contient la valeur F0 hex. sur les adresse 15 à 8, où 8 représente le bit de poids faibles.
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x0F |
0x0F |
„0F“ |
0x30, 0x46 |
Adresse début Pforts (High) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Adresse début Pfaibles (Low) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de bits Pforts (High) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de bits Pfaibles (Low) |
0x10 |
0x10 |
„10“ |
0x31, 0x30 |
Nbre d’octets de valeur |
0x02 |
0x02 |
„02“ |
0x30, 0x32 |
valeur high (coils 7 ... 0) |
0xA5 |
0xA5 |
„A5“ |
0x41, 0x35 |
valeur low (coils 15 ... 8) |
0xF0 |
0xF0 |
„F0“ |
0x46, 0x30 |
Error Check (LRC / CRC) |
- |
0xE7 |
„3F“ |
0x33, 0x46 |
|
|
0x94 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
La réponse contient l’adresse de l’esclave, avec le code fonction, l’adresse de départ et le nombre de bits écrits.
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x0F |
0x0F |
„0F“ |
0x30, 0x46 |
Adresse début Pforts (High) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Adresse début Pfaibles (Low) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de bits Pforts (High) |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de bits Pfaibles (Low) |
0x10 |
0x10 |
„10“ |
0x31, 0x30 |
Error Check (LRC / CRC) |
- |
0x54 |
„D6“ |
0x44, 0x36 |
|
|
0xAD |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Modbus / Configuration |
28 |
:$*2Ç, 2Ç6<67(0

Ecriture de N mots (Code fonction 0x10):
Cette fonction permet d’écrire N mots de sortie. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que les mêmes mots prendront les mêmes valeurs sur tous les esclaves. Le nombre max. de mots sur une trame N=128.
Requête:
La requête spécifie l’adresse de début des mots qui devront être mis écrits, le nombre de mots à écrire, le nombre d’octets qui vont être nécessaires pour transmettre les valeurs, ainsi que les valeurs des mots. A chaque adresse de mot correspond deux octets de données.
Le tableau suivant donne un exemple de requête d’écriture de deux mots à partir de l’adresse 0 sur l’esclave 11:
Champs |
Exemple |
RTU |
ASCII |
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
Code fonction |
0x10 |
0x10 |
„10“ |
0x31, 0x30 |
Adresse début Pforts |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
(High) |
|
|
|
|
Adresse début Pfaibles |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
(Low) |
|
|
|
|
Nbre de mots high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
Nbre de mots low |
0x02 |
0x02 |
„02“ |
0x30, 0x32 |
Nbre d’octets |
0x04 |
0x04 |
„04“ |
0x30, 0x34 |
Data high (mot 0) |
0x12 |
0x12 |
„12“ |
0x31, 0x32 |
Data low (mot 0) |
0x34 |
0x34 |
„34“ |
0x33, 0x34 |
Data high (mot 1) |
0x56 |
0x56 |
„56“ |
0x35, 0x36 |
Data low (mot 1) |
0x78 |
0x78 |
„78“ |
0x37, 0x38 |
Error Check (LRC / |
- |
0xA9 |
„CB“ |
0x43, 0x42 |
CRC) |
|
0x43 |
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Réponse:
La réponse contient l’adresse de l’esclave, avec le code fonction, l’adresse de départ et le nombre de mots écrits.
|
Champs |
Exemple |
RTU |
ASCII |
|
|
Entête |
- |
t1-t2-t3 |
„:“ |
0x3a |
|
N° d’esclave |
0x0B |
0x0B |
„0B“ |
0x30, 0x42 |
|
Code fonction |
0x10 |
0x10 |
„10“ |
0x31, 0x30 |
|
Adresse début Pforts |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
|
(High) |
|
|
|
|
|
Adresse début Pfaibles |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
|
(Low) |
|
|
|
|
|
Nbre de mots Pforts high |
0x00 |
0x00 |
„00“ |
0x30, 0x30 |
|
Nbre de mots Pforts low |
0x02 |
0x02 |
„02“ |
0x30, 0x32 |
|
Error Check (LRC / |
- |
0x41 |
„E3“ |
0x45, 0x33 |
|
CRC) |
|
0x62 |
|
|
|
End of frame-Fin de trame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Modbus / Configuration |
|
29 |
|
|
:$*2Ç, 2Ç6<67(0