Vai al contenuto
PLC Forum


Utilizzo SFC51


PsycoPLC

Messaggi consigliati

Salve,

premetto che non sono molto esperto, da più o meno 6 mesi ho cominciato a lavorare sui PLC (ho frequentato un corso base e ad oggi lavoro in un'azienda che si occupa di movimentazione industriale in formazione come progettista elettrico)..sono, quindi, quasi totalmente autodidatta.

Come da titolo sto trovando diverse difficoltà nell'uso dell'SFC51 in generale..il mio problema forse sta nel capire come utilizzare il set di dati. Preciso che sono in simulazione con una CPU 319F.

Sono interessato all'identificazione dell'unità per cui a "SZL-ID --> 0111" e "INDEX --> W#16#0001: Identificazione dell'unità"..per cui in ingresso al blocco SFC51 metto questi due numeri in esadecimale e penso di essere apposto.

MI sono poi creato la DB strutturando come da guida Siemens:

 

SZL_HEADER: STRUCT
    LENTHDR:    WORD    (ho impostato come valore iniziale W#16#1C, sempre come da guida)
    N_DR:    WORD           (come valore iniziale ho lasciato W#16#0)
END_STRUCT

 

Per semplicità riporto l'estretto della guida a cui mi sto riferendo:

 

"Intestazione

L'intestazione della SZL con ID SZL W#16#xy11 è strutturata come segue:

 

Contenuto          Significato
SZL_ID              ID SZL dell'estratto della lista parziale W#16#0111: un singolo set di dati di identificazione 
INDEX               Numero di un determinato set di datiW#16#0001: Identificazione dell'unitàW#16#0006: Identificazione dell'hardware di baseW#16#0007: Identificazione del firmware di base
LENTHDR         W#16#001C:un set di dati è lungo 14 parole (28 byte)
N_DR                Numero dei set di dati


Set di dati

Un set di dati della SZL con ID SZL W#16#xy11 ha la seguente struttura:

 

Nome         Lunghezza     Significato
Index          1 parola         Indice di un set di dati di identificazione
MlfB            20 byte          N. di ordinazione dell'unità; stringa di 19 caratteri e uno spazio (20H); ad es. per CPU 314: "6ES7 314-0AE01-0AB0 " Con INDEX W#16#0007: riservato Con INDEXW#16#0001 e  W#16#0006: MLFB dell'unità; stringa di 19 caratteri e uno spazio vuoto (20H); ad es. per CPU 314: "6ES7 314-0AE01-0AB0 "
BGTyp       1  parola         Riservato
Ausbg 1     1 parola         Con INDEX W#16#0001: Versione dell'unità Con INDEX W#16#0006 e W#16#0007: "V" e la prima cifra di identificazione della versione
Ausbg 2     1 parola         Con INDEX W#16#0001: RiservatoCon INDEX W#16#0006 e W#16#0007: cifre rimanenti dell'identificazione della versione"

A questo punto iniziano le mie domande :)..

 

1) Innanzitutto non riesco a capire cosa mettere in "DR"..ho inserito una variabile ANY di 20 caratteri, ma lanciando la simulazione in RET_VAL ottengo l'errore 8081 "Lunghezza del campo DR troppo piccola (non c'è abbastanza spazio per un set di dati)", per cui temo di aver sbagliato qualcosa in DR;

 

2) Come farei in caso a poter leggere quanto riportato nel parametro DR? 

 

Spero di essermi spiegato..in caso chiedete pure per chiarimenti.

 

 

PS: per favore volevo solo chiedervi di non linkarmi guide e/o rimandi a spiegazioni sul sito della Siemens, temo non mi sarebbe di nessun aiuto..preferisco ragionare insieme a voi. Grazie.

Link al commento
Condividi su altri siti


Ok ringrazio pirgroplc per la risposta..smanettando smanettando ho capito dove e come sbagliavo :)..il problema come immaginavo era nella costruzione della variabile ANY e dimenticavo che alcune liste parziali non restituiscono valori se si è in simulazione.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...