Uso degli SDO
Introduzione
I telegrammi SDO consentono di accedere in modo aperiodico a qualsiasi oggetto CANopen programmando una richiesta. Il servizio SDO ha un telegramma di richiesta e uno di risposta.
Telegramma SDO di richiesta
Richiesta di informazioni dal client al controller LTMR :
COB-ID |
Byte 0 |
Byte 1 |
Byte 2 |
Byte 3 |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|---|---|---|
0x600 + Node-ID |
Codice di richiesta |
Indice oggetto |
Sottoindice oggetto |
Dati richiesti |
||||
LSB |
MSB |
Bit 7-0 |
Bit 15-8 |
Bit 23-16 |
Bit 31-24 |
Telegramma SDO di risposta
Richiesta di informazioni dal client al controller LTMR :
COB-ID |
Byte 0 |
Byte 1 |
Byte 2 |
Byte 3 |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|---|---|---|
0x580 + Node-ID |
Codice di risposta |
Indice oggetto |
Sottoindice oggetto |
Dati di risposta |
||||
LSB |
MSB |
Bit 7-0 |
Bit 15-8 |
Bit 23-16 |
Bit 31-24 |
Codici di richiesta e risposta
I dati della richiesta e della risposta possono variare nei contenuti in funzione dei codici di richiesta e risposta utilizzati. La tabella seguente mostra i dati relativi ai diversi codici di richiesta:
Codice di risposta |
Descrizione del comando |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|
0x23 |
Scrittura di dati a 4 byte |
Bit 7-0 |
Bit 15-8 |
Bit 23-16 |
Bit 31-24 |
0x2B |
Scrittura di dati a 2 byte |
Bit 7-0 |
Bit 15-8 |
0x00 |
0x00 |
0x2F |
Scrittura di dati a 1 byte |
Bit 7-0 |
0x00 |
0x00 |
0x00 |
0x40 |
Leggi dati |
0x00 |
0x00 |
0x00 |
0x00 |
0x80 |
Annullare il comando SDO corrente* 1 |
Bit 7-0 |
Bit 15-8 |
Bit 23-16 |
Bit 31-24 |
La tabella seguente mostra i dati relativi ai diversi codici di risposta:
Codice di richiesta |
Descrizione del comando |
Byte 4 |
Byte 5 |
Byte 6 |
Byte 7 |
---|---|---|---|---|---|
0x23 |
Dati letti: 4 byte di dati |
Bit 7-0 |
Bit 15-8 |
Bit 23-16 |
Bit 31-24 |
0x2B |
Dati letti: 2 byte di dati |
Bit 7-0 |
Bit 15-8 |
0x00 |
0x00 |
0x2F |
Dati letti: 1 byte di dati |
Bit 7-0 |
0x00 |
0x00 |
0x00 |
0x40 |
Scrivi una risposta con dati a 1/2/4 byte |
0x00 |
0x00 |
0x00 |
0x00 |
0x80 |
Risposta di errore rilevato: codice di interruzione restituito* |
0x00 |
0x00 |
0x00 |
0x00 |
Codici di annullamento SDO
Codici di annullamento supportati:
Codice di annullamento |
Descrizione |
---|---|
0x 0503 0000 |
Trasferimento segmentato: il bit di commutazione non ha cambiato stato |
0x 0504 0000 |
Timeout del protocollo SDO |
0x 0504 0001 |
Codice di richiesta non valido o sconosciuto |
0x 0601 0000 |
Disinnesto durante l'accesso al parametro (ad esempio, una richiesta di scrittura su un parametro in sola lettura) |
0x 0601 0001 |
Tentativo di richiesta di lettura su un parametro con accesso in sola scrittura |
0x 0601 0002 |
Tentativo di richiesta di scrittura su un parametro con accesso in sola lettura |
0x 0602 0000 |
L'indice inviato nella richiesta si riferisce a un oggetto che non esiste nel dizionario |
0x 0604 0041 |
Mappatura oggetto PDO: impossibile mappare il parametro sul PDO; questo errore rilevato si verifica quando si scrive sui parametri 0x1600, 0x1A00, 0x1605 e 0x1A05 (mappature PDO) |
0x 0604 0042 |
Mappatura oggetto PDO: il numero o la lunghezza dei parametri da mappare supera la lunghezza massima del PDO |
0x 0609 0011 |
Il sottoindice inviato nella richiesta non esiste |
0x 0609 0030 |
Superato il range di valori del parametro (solo per l'accesso in scrittura) |
0x 0609 0031 |
Valore del parametro scritto troppo elevato |
0x 0609 0032 |
Valore del parametro scritto troppo basso |
0x 0609 0036 |
Il valore massimo del parametro è inferiore al valore minimo |
0x 0800 0000 |
Si è verificato un errore generale rilevato |