Oggetti PKW
Panoramica
Il controller CANopen supporta gli oggetti PKW (Periodically Kept in acyclic Words). La funzionalità PKW consiste di 4 oggetti specifici del produttore: da 0x3000:0x01 a 0x3000:0x04.
Questi oggetti consentono a un client CANopen di leggere o scrivere qualsiasi registro usando i PDO. Gli oggetti sono mappati per default nel PDO4 di trasmissione e di ricezione.
A seconda del codice funzione, è possibile scegliere se indirizzare un registro in base al suo numero o in base a indice e sottoindice CANopen.
Indirizzamento dei dati PKW OUT in base al numero di registro
La richiesta dati PKW OUT (
) è mappata per impostazione predefinita nel PDO4 di ricezione.Per accedere a un registro utilizzando l’indirizzamento in base al numero è necessario selezionare uno dei seguenti codici funzione:
-
R_REG_16 = 0x25 per leggere un registro
-
R_REG_32 = 0x26 per leggere due registri
-
W_REG_16 = 0x2A per scrivere un registro
-
W_REG_32 = 0x2B per scrivere due registri.
0x3000:0x01 |
0x3000:0x02 |
||||
---|---|---|---|---|---|
Parola 1 |
Parola 2 |
Parola 3 |
Parola 4 |
||
MSB |
LSB |
||||
Indirizzo del registro |
Bit di commutazione (bit 15) |
Bit di funzione (bit da 8 a 14) |
Non usata (bit da 0 a 7) |
Dati da scrivere |
|
Numero registro |
0/1 |
R_REG_16 Codice 0x25 |
0x00 |
_ |
_ |
R_REG_32 Codice 0x26 |
_ |
_ |
|||
W_REG_16 Codice 0x2A |
Dati da scrivere nel registro |
_ |
|||
W_REG_32 Codice 0x2B |
Dati da scrivere nel registro 1 |
Dati da scrivere nel registro 2 |
Indirizzamento CANopen dei dati PKW OUT
Per accedere a un registro utilizzando l’indirizzamento CANopen in base al numero è necessario selezionare uno dei seguenti codici funzione:
-
R_CO_16 = 0x35 per leggere un registro
-
R_CO_32 = 0x36 per leggere due registri
-
W_CO_16 = 0x3A per scrivere un registro
-
W_CO_32 = 0x3B per scrivere due registri.
0x3000:0x01 |
0x3000:0x02 |
||||
---|---|---|---|---|---|
Parola 1 |
Parola 2 |
Parola 3 |
Parola 4 |
||
MSB |
LSB |
||||
Indirizzo del registro |
Bit di commutazione (bit 15) |
Bit di funzione (bit da 8 a 14) |
Indirizzo del registro |
Dati da scrivere |
|
Indice CANopen |
0/1 |
R_CO_16 Codice 0x35 |
Sottoindice CANopen |
_ |
_ |
R_CO_32 Codice 0x36 |
_ |
_ |
|||
W_CO_16 Codice 0x3A |
Dati da scrivere nel registro |
_ |
|||
W_CO_32 Codice 0x3B |
Dati da scrivere nel registro 1 |
Dati da scrivere nel registro 2 |
Qualsiasi modifica di questo codice funzione attiva il trattamento della richiesta (salvo quando codice funzione [b8...b14] = 0x00).
Questo meccanismo consente all'elemento di attivazione della richiesta di rilevare che una risposta è pronta interrogando il bit 15 del codice funzione nell'oggetto 30000x:03. La risposta è pronta quando questo bit nel progetto OUT corrisponde al bit di commutazione emesso nella risposta nei dati IN (quando si avvia la risposta).
Indirizzamento dei dati PKW IN in base al numero di registro
La risposta dati PKW IN (LTMR propaga lo stesso indirizzo di registro e codice funzione o eventualmente un codice di errore rilevato:
) è mappata per impostazione predefinita nel PDO4 di trasmissione. L'unità
0x3000:0x03 |
0x3000:0x04 |
||||
---|---|---|---|---|---|
Parola 1 |
Parola 2 |
Parola 3 |
Parola 4 |
||
MSB |
LSB |
||||
Indirizzo del registro |
Bit di commutazione (bit 15) |
Bit di funzione (bit da 8 a 14) |
Non usata (bit da 0 a 7) |
Dati da scrivere |
|
Stesso numero di registro della richiesta |
Uguale a richiesta |
ERRORE RILEVATO Codice 0x4E |
0x00 |
Codice di errore rilevato |
|
R_REG_16 Codice 0x25 |
Dati letti nel registro |
_ |
|||
R_REG_32 Codice 0x26 |
Dati letti nel registro 1 |
Dati letti nel registro 2 |
|||
W_REG_16 Codice 0x2A |
_ |
_ |
|||
W_REG_32 Codice 0x2B |
_ |
_ |
Indirizzamento CANopen dei dati PKW IN
L'unità LTMR propaga lo stesso indirizzo di registro e codice funzione o eventualmente un codice di errore rilevato:
0x3000:0x03 |
0x3000:0x04 |
||||
---|---|---|---|---|---|
Parola 1 |
Parola 2 |
Parola 3 |
Parola 4 |
||
MSB |
LSB |
||||
Indirizzo del registro |
Bit di commutazione (bit 15) |
Bit di funzione (bit da 8 a 14) |
Indirizzo del registro |
Dati da scrivere |
|
Stesso indirizzo CANopen della richiesta |
Uguale a richiesta |
ERRORE RILEVATO Codice 0x4E |
Sottoindice CANopen |
Codice di errore rilevato |
|
R_REG_16 Codice 0x55 |
Dati letti nel registro |
_ |
|||
R_REG_32 Codice 0x36 |
Dati letti nel registro 1 |
Dati letti nel registro 2 |
|||
W_REG_16 Codice 0x3A |
_ |
_ |
|||
W_REG_32 Codice 0x3B |
_ |
_ |
Se l'elemento di attivazione cerca di scrivere un oggetto o registro TeSys T su un valore illegale o cerca di accedere a un registro non raggiungibile, il sistema restituisce un codice di errore rilevato (codice funzione = bit di commutazione + 0x4E). Il codice di esatto si trova nelle parole 3 e 4.
Questi codici sono identici ai codici di annullamento SDO Codici di annullamento SDO.
La richiesta è rifiutata e l'oggetto/registro mantiene il valore originale.
Per riattivare lo stesso comando:
-
riportare il codice funzione a 0x00,
-
attendere il frame di risposta con il codice funzione uguale a 0x00,
-
riportarlo al valore precedente.
Questa procedura è utile per i client limitati come HMI.
In alternativa, per attivare nuovamente lo stesso comando è possibile invertire il bit di commutazione nel byte del codice funzione.
La risposta è valida quando il suo bit di commutazione corrisponde a quello scritto nella richiesta (metodo più efficiente, che tuttavia richiede maggiori capacità di programmazione).