PsycoPLC Inserito: 6 luglio 2016 Segnala Share Inserito: 6 luglio 2016 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 More sharing options...
pigroplc Inserita: 6 luglio 2016 Segnala Share Inserita: 6 luglio 2016 Guarda quanti esempi qui: http://www.plcforum.it/f/search/?type=all&q=sfc51 (non è il sito Siemens ma discussioni precedenti) Link al commento Condividi su altri siti More sharing options...
PsycoPLC Inserita: 7 luglio 2016 Autore Segnala Share Inserita: 7 luglio 2016 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 More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora