PKW: Accessi aciclici incapsulati in DP V0
Panoramica
Alcuni principali (master) PROFIBUS DP non forniscono servizi DP V1. La funzione PKW consente l'accesso aciclico in lettura o scrittura aDP V0.
Questa funzione viene attivata nello strumento di configurazione PROFIBUS DP selezionando il modulo appropriato. Per ciascun modulo esiste una seconda voce con PKW.
I dati PKW vengono aggiunti ai dati ciclici.
Registri di lettura/scrittura
Con i dati PKW è possibile leggere o scrivere qualsiasi registro. Gli 8 byte vengono interpretati come telegramma di richiesta o risposta incapsulato nei dati IN e OUT.
Dati PKW OUT
Le richieste dati PKW OUT (→ PROFIBUS DP principale LTMR) vengono mappate in moduli che supportano PKW.
Per accedere a un registro è 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.
I numeri di registro vengono indicati in Register Map (Organization of Communication Variables).
Parola 1 |
Parola 2 |
Parola 3 |
Parola 4 |
||
---|---|---|---|---|---|
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 |
A seconda della piattaforma PLC utilizzata, fare riferimento alle tabelle che illustrano PKW OUT nei formati Little e Big endian nella sezione Descrizione dei dati ciclici per conoscere il posizionamento di ciascun campo all'interno di ogni parola.
Qualsiasi modifica nel campo funzione avvia la gestione della richiesta (salvo quando il codice funzione è=0x00).
Il bit di commutazione deve cambiare a ogni richiesta consecutiva. Questo meccanismo consente a chi attiva la richiesta di sapere che la risposta è pronta interrogando il bit di commutazione in risposta. La risposta è pronta quando questo bit nei dati OUT corrisponde al bit di commutazione emesso in risposta nei dati IN.
Dati PKW IN
La risposta dati PKW IN (LTMR → PROFIBUS DP principale) viene mappata in moduli che supportano PKW. LTMR ritrasmette lo stesso indirizzo di registro e codice funzione o eventualmente un codice di errore rilevato:
Parola 1 |
Parola 2 |
Parola 3 |
Parola 4 |
||
---|---|---|---|---|---|
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 |
_ |
_ |
A seconda della piattaforma PLC utilizzata, fare riferimento alle tabelle che illustrano PKW IN nei formati Little e Big endian nella sezione Descrizione dei dati ciclici per conoscere il posizionamento di ciascun campo all'interno di ogni parola.
Se l'elemento di attivazione cerca di scrivere un oggetto o registro TeSys T su un valore non autorizzato o di accedere a un registro non accessibile, il sistema risponde con un codice di errore rilevato (codice funzione = bit di commutazione + 0x4E). L'esatto codice di errore rilevato è riportato nelle parole 3 e 4. La richiesta è rifiutata e l'oggetto o il 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, quindi
-
Riportarlo al valore precedente.
Ciò è utile per un principale (master) limitato, come un HMI.
In alternativa, per attivare 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).
Codici di errore rilevati PKW
Errori di scrittura rilevati
Codice di errore rilevato |
Nome errore rilevato |
Descrizione |
---|---|---|
1 |
FGP_ERR_REQ_STACK_FULL |
richiesta esterna: restituisce un frame di errore rilevato |
3 |
FGP_ERR_REGISTER_NOT_FOUND |
registro non gestito (o la richiesta esige diritti di accesso da superutente) |
4 |
FGP_ERR_ANSWER_DELAYED |
richiesta esterna: risposta posticipata |
7 |
FGP_ERR_NOT_ALL_REGISTER_FOUND |
impossibile trovare uno o entrambi i registri |
8 |
FGP_ERR_READ_ONLY |
registro non autorizzato alla scrittura |
10 |
FGP_ERR_VAL_1WORD_TOOHIGH |
valore scritto fuori dal range del registro (valore parola troppo alto) |
11 |
FGP_ERR_VAL_1WORD_TOOLOW |
valore scritto fuori dal range del registro (valore parola troppo basso) |
12 |
FGP_ERR_VAL_2BYTES_INF_TOOHIGH |
valore scritto fuori dal range del registro (valore MSB troppo alto) |
13 |
FGP_ERR_VAL_2BYTES_INF_TOOLOW |
valore scritto fuori dal range del registro (valore MSB troppo basso) |
16 |
FGP_ERR_VAL_INVALID |
valore scritto non valido |
20 |
FGP_ERR_BAD_ANSWER |
Richiesta esterna: restituisce un frame di errore rilevato |
Errori di lettura rilevati
Codice di errore rilevato |
Nome errore rilevato |
Descrizione |
---|---|---|
1 |
FGP_ERR_REQ_STACK_FULL |
richiesta esterna: restituisce un frame di errore rilevato |
3 |
FGP_ERR_REGISTER_NOT_FOUND |
registro non gestito (o la richiesta esige diritti di accesso da superutente) |
4 |
FGP_ERR_ANSWER_DELAYED |
richiesta esterna: risposta posticipata |
7 |
FGP_ERR_NOT_ALL_REGISTER_FOUND |
impossibile trovare uno o entrambi i registri |