Modbus Série (RTU - ASCII)
Function Code
1. Function codes descriptions
➢ 0x01 Read Coils (1 bit)
Exemple d’une requête pour lire les bobines (coils) 20 à 56.
Byte Count N
Adresses
Dans la trame Modbus, l’adresse envoyée est toujours égale à l’adresse affichée moins 1, car le protocole
utilise un adressage basé sur zéro (zero-based addressing).
D’où la règle :
➤ Adresse logique = Address displayed
➤ Adresse physique Modbus = Address displayed − 1
➢ 0x02 Read Discrete Inputs (1 bit)
➢ 0x03 Read Holding Registers (16 bits)
- Chaque registre Modbus est codé sur 16 bits (2 octets)
- Data Register = Data Hi + Data Lo
• Data Hi (High byte) → contient les 8 bits de poids fort (bits 15 à 8)
• Data Lo (Low byte) → contient les 8 bits de poids faible (bits 7 à 0)
- Règle : toujours Big-endian → High byte d’abord, Low byte ensuite.
- Si le registre contient moins de 16 bits utiles, la valeur est alignée à droite (right justified) dans les
octets.
- Exemple : registre = 0x0F (4 bits utiles)
• Data Hi = 0x00
• Data Lo = 0x0F
- Byte count = 2*N = 2*Quantity of Input Registers
➢ 0x04 Read Input Registers
➢ 0x05 Write Single Coil
- L’état ON/OFF demandé est spécifié par une constante dans le champ de données de la requête :
• Une valeur de FF 00 hex demande à la bobine (coil) d’être activée (ON).
• Une valeur de 00 00 demande à la bobine d’être désactivée (OFF).
• Toutes les autres valeurs sont interdites et n’auront aucun effet sur la bobine.
➢ 0x06 Write Single Register
➢ 0x0F Write Multiple Coils
- Ordre des Octets de coils (8 coils) = MSB vers LSB
- Ordre des coils au sein d’un octet = LSB vers MSB
➢ 0x10 Write Multiple registers
Exception Responses
Exception Code Name Meaning
0x01 ILLEGAL FUNCTION La fonction demandée n’est pas supportée ou pas
autorisée par l’esclave
0x02 ILLEGAL DATA ADDRESS L’adresse demandée est invalide ou n’existe pas
dans l’esclave
0x03 ILLEGAL DATA VALUE La valeur envoyée est hors limites ou non
acceptable pour l’esclave
0x04 SERVER DEVICE Erreur interne grave : l’esclave n’a pas pu exécuter
FAILURE l’action
0x05 ACKNOWLEDGE L’esclave a reçu la requête mais il a besoin de plus
de temps pour la traiter
0x06 SERVER DEVICE BUSY L’esclave est occupé : il traite déjà une opération
longue.
→ Le maître doit réessayer plus tard.
0x07 NEGATIVE L’esclave ne peut pas exécuter la fonction de
ACKNOWLEDGE programmation demandée (FC 13 ou 14).
Le maître doit demander un diagnostic.
0x08 MEMORY PARITY ERROR Erreur de parité dans la mémoire interne de
l’esclave.
→ Le maître peut réessayer, mais un service
technique peut être nécessaire
0x0A GATEWAY PATH Le passerelle (Gateway) n’a pas pu établir le chemin
UNAVAILABLE interne entre son port d’entrée et son port de sortie.
→ Gateway est mal configurée ou surchargée.
0x0B GATEWAY TARGET La Gateway n’a reçu aucune réponse de l’appareil
DEVICE cible.
FAILED TO RESPOND → Appareil n’est pas présent ou pas joignable sur
le réseau.