Utilisation des SDO
Introduction
Les télégrammes SDO permettent d’accéder à un objet CANopen de façon non périodique grâce à la programmation de requêtes. Le service SDO se compose d’un télégramme de requête et d’un télégramme de réponse.
Télégramme de requête SDO
Informations de requête émises depuis le client vers le contrôleur LTMR :
COB-ID |
Octet 0 |
Octet 1 |
Octet 2 |
Octet 3 |
Octet 4 |
Octet 5 |
Octet 6 |
Octet 7 |
---|---|---|---|---|---|---|---|---|
0x600 + ID du nœud |
Code de requête |
Index d’objet |
Sous-index d’objet |
Données de requête |
||||
LSB |
MSB |
Bits 7 à 0 |
Bits 15 à 8 |
Bits 23 à 16 |
Bits 31 à 24 |
Télégramme de réponse SDO
Informations de requête émises depuis le client vers le contrôleur LTMR :
COB-ID |
Octet 0 |
Octet 1 |
Octet 2 |
Octet 3 |
Octet 4 |
Octet 5 |
Octet 6 |
Octet 7 |
---|---|---|---|---|---|---|---|---|
0x580 + ID du nœud |
Code de réponse |
Index d’objet |
Sous-index d’objet |
Données de réponse |
||||
LSB |
MSB |
Bits 7 à 0 |
Bits 15 à 8 |
Bits 23 à 16 |
Bits 31 à 24 |
Codes de requête et de réponse
Le contenu des données de requête et de réponse peut varier selon le code de requête et le code de réponse. Le tableau suivant présente les données de requête correspondant à chacun des codes de requête :
Code de réponse |
Description de la commande |
Octet 4 |
Octet 5 |
Octet 6 |
Octet 7 |
---|---|---|---|---|---|
0x23 |
Données d’écriture 4 octets |
Bits 7 à 0 |
Bits 15 à 8 |
Bits 23 à 16 |
Bits 31 à 24 |
0x2B |
Données d’écriture 2 octets |
Bits 7 à 0 |
Bits 15 à 8 |
0x00 |
0x00 |
0x2F |
Données d’écriture 1 octet |
Bits 7 à 0 |
0x00 |
0x00 |
0x00 |
0x40 |
Données de lecture |
0x00 |
0x00 |
0x00 |
0x00 |
0x80 |
Abandonner la commande SDO en cours* 1 |
Bits 7 à 0 |
Bits 15 à 8 |
Bits 23 à 16 |
Bits 31 à 24 |
Le tableau suivant présente les données de réponse correspondant à chacun des codes de réponse :
Code de requête |
Description de la commande |
Octet 4 |
Octet 5 |
Octet 6 |
Octet 7 |
---|---|---|---|---|---|
0x23 |
Lecture de données : données de 4 octets |
Bits 7 à 0 |
Bits 15 à 8 |
Bits 23 à 16 |
Bits 31 à 24 |
0x2B |
Lecture de données : données de 2 octets |
Bits 7 à 0 |
Bits 15 à 8 |
0x00 |
0x00 |
0x2F |
Lecture de données : données de 1 octet |
Bits 7 à 0 |
0x00 |
0x00 |
0x00 |
0x40 |
Ecriture d’une réponse de 1/2/4 octets |
0x00 |
0x00 |
0x00 |
0x00 |
0x80 |
Réponse à une erreur détectée : code d’abandon renvoyé* |
0x00 |
0x00 |
0x00 |
0x00 |
Codes d’abandon SDO
Les codes d’abandon suivants sont pris en charge :
Code d’abandon |
Description |
---|---|
0x 0503 0000 |
Transfert segmenté : le bit de basculement n’a pas été inversé |
0x 0504 0000 |
Le délai du protocole des SDO a expiré. |
0x 0504 0001 |
Le code de requête n’est pas valide ou est inconnu. |
0x 0601 0000 |
Un déclenchement s’est produit lors de l’accès au paramètre (par exemple, lors d’une requête d’écriture sur un paramètre en lecture seule). |
0x 0601 0001 |
Une tentative de requête de lecture a été réalisée sur un paramètre en écriture seule. |
0x 0601 0002 |
Une tentative de requête d’écriture a été réalisée sur un paramètre en lecture seule. |
0x 0602 0000 |
L’index envoyé dans la requête se rapporte à un objet inexistant du dictionnaire d’objets. |
0x 0604 0041 |
Mappage d’objets PDO : le paramètre ne peut pas être mappé au PDO ; cette erreur détectée se produit lors de l’écriture sur les paramètres 0x1600, 0x1A00, 0x1605 et 0x1A05 (mappages des PDO). |
0x 0604 0042 |
Mappage d’objets PDO : le nombre ou la longueur des paramètres à mapper dépasse la longueur maximale des PDO. |
0x 0609 0011 |
Le sous-index envoyé dans la requête n’existe pas. |
0x 0609 0030 |
La plage de valeurs du paramètre est dépassée (uniquement pour l’accès en écriture). |
0x 0609 0031 |
La valeur du paramètre indiquée est trop élevée. |
0x 0609 0032 |
La valeur du paramètre indiquée est trop faible. |
0x 0609 0036 |
La valeur maximale du paramètre est inférieure à sa valeur minimale. |
0x 0800 0000 |
Une erreur générale détectée s’est produite |