Codes d'exception Modbus
Réponses d'exception
Les réponses d'exception provenant du client ou d'un serveur peuvent être le résultat d'erreurs de traitement de données. Un des événements suivants peut se produire après l'émission d'une requête par le client:
-
Si le serveur reçoit la requête du client sans erreur de communication et peut la traiter correctement, il renvoie une réponse normale.
-
Si le serveur ne reçoit pas la requête provenant du client à cause d'une erreur de communication, il ne renvoie pas de réponse. Le programme client finit par appliquer une condition de temporisation à la requête.
-
Si le serveur reçoit la requête du client, mais détecte une erreur de communication, il ne renvoie pas de réponse. Le programme client finit par appliquer une condition de temporisation à la requête.
-
Si le serveur reçoit la requête du client sans erreur de communication mais ne peut pas la gérer (par exemple, la requête consiste à lire un registre qui n'existe pas), le serveur renvoie une réponse d'exception pour informer le client de la nature de l'erreur.
Trame d'exception
Le serveur envoie une trame d'exception au client pour signaler une réponse d'exception. Une trame d'exception se compose de 4champs:
|
Champ |
Définition |
Taille |
Description |
|---|---|---|---|
|
1 |
Numéro du serveur |
1octet |
Destination de la requête
|
|
2 |
Code de fonction d'exception |
1octet |
Code de fonction de requête + 128 (0x80) |
|
3 |
Code d'exception |
noctets |
Voir la section Codes d'exception |
|
4 |
Contrôle |
2octets |
CRC16 (pour vérifier les erreurs de transmission) |
Codes d'exception
La trame de la réponse d'exception se compose de deux champs qui la différencient d'une trame de réponse normale:
-
Le code de fonction d'exception de la réponse d'exception est égal au code de fonction de la requête originale plus 128 (0x80).
-
Le code d'exception dépend de l'erreur de communication que détecte le serveur.
Le tableau suivant décrit les codes d'exception gérés par le disjoncteur:
|
Code d'exception |
Nom |
Description |
|---|---|---|
|
01 (0x01) |
Illegal function (Fonction incorrecte) |
Le code fonction reçu dans la requête ne correspond pas à une action autorisée pour le serveur. L'état du serveur est peut-être inapproprié pour traiter une requête spécifique. |
|
02 (0x02) |
Illegal data address (Adresse de données interdite) |
L'adresse de données reçue par le serveur n'est pas une adresse autorisée pour le serveur. |
|
03 (0x03) |
Illegal data value (Valeur de données interdite) |
La valeur dans le champ de données de la requête n'est pas autorisée pour le serveur. |
|
04 (0x04) |
Server device failure (Défaillance du serveur) |
Le serveur ne parvient pas à réaliser une action requise à cause d'une erreur irrémédiable. |
|
05 (0x05) |
Acknowledge (Acquittement) |
Le serveur accepte la requête mais un long délai est nécessaire pour la traiter. |
|
06 (0x06) |
Server device busy (Serveur occupé) |
Le serveur est occupé à traiter une autre commande. Le client doit envoyer la requête une fois que le serveur est disponible. |
|
07 (0x07) |
Negative acknowledgment (Acquittement négatif) |
Le serveur ne peut pas traiter la requête de programmation envoyée par le client. |
|
08 (0x08) |
Memory parity error (Erreur de parité de mémoire) |
Le serveur détecte une erreur de parité dans la mémoire lorsqu'il lit la mémoire étendue. |
|
10 (0x0A) |
Gateway path unavailable (Chemin de passerelle indisponible) |
La passerelle est surchargée ou n'est pas correctement configurée. |
|
11 (0x0B) |
Gateway target device failed to respond (Le périphérique passerelle cible ne répond pas) |
Le serveur n'est pas présent sur le réseau. |