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 4 champs :
Champ |
Définition |
Taille |
Description |
---|---|---|---|
1 |
Numéro du serveur |
1 octet |
Destination de la requête
|
2 |
Code de fonction d'exception |
1 octet |
Code de fonction de requête + 128 (0x80) |
3 |
Code d'exception |
n octets |
Voir paragraphe suivant |
4 |
Contrôle |
2 octets |
CRC16 (pour vérifier les erreurs de transmission) |
Codes d'exception
La trame de la réponse d'exception comprend deux champs qui la différencient d'une trame de réponse normale :
-
Le code de fonction 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 rencontrée par le serveur.
Le tableau suivant décrit les codes d'exception gérés par l’ATSE :
Code d'exception |
Nom |
Description |
---|---|---|
01 (0x01) |
Fonction illégale |
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) |
Adresse de données illégale |
L'adresse de données reçue par le serveur n'est pas une adresse autorisée pour le serveur. |
03 (0x03) |
Valeur de données illégale |
La valeur indiquée 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 demandée à cause d'une erreur irrémédiable. |