cobe72 Report Share Posted April 2, 2019 Buongiorno, Ho convertito un sw da step5 a step7 e mi trovo un errore legato al fatto che l'OB182 in step 7 no esiste più. Il blocco deve leggere da un DB il cui indirizzo si trova nella parte alta della word di ingresso #FRDW e iniziando dalla W indicata nella parte bassa di #FRDW per una quantità di word dato all'ingresso #N_DW, da copiare poi in un DB il cui indirizzo si trova nella parte alta della word di ingresso #TODW e iniziando dalla W indicata nella parte bassa di #TODW. L'OB182 dovrò sostituirlo credo con SFC20... Mi aiutate ad adattare il codice per ottenere la stessa funzionalità? Grazie... L W#16#0 // Azzera variabili T MD 110 T MD 114 T MW 118 //; L 1 T MB 110 // trasferimento tra "DB" T MB 114 //; L #FRDW T MB 113 // prima DW sorgente SRW 8 T MB 111 // DB sorgente //; L #TODW T MB 117 // prima DW destinazione SRW 8 T MB 115 // DB destinazione //; L #N_DW T MW 118 // n-DW da trasferire L 0 <=I BEB //; L B#(3, 0) // indica che i dati sono in L 110 // SW10 a SW20 // CALL OB 182; // trasferisce i dati // *** Errore alla riga 435 (FB 60): Il blocco non esiste. *** //; // Errori Quote Link to post Share on other sites
mrsk1000 Report Share Posted July 3, 2019 La funzione è l'SFC20 ed il funzionamento è abbastanza semplice. Richiami SFC20 nel punto del programma dove vuoi eseguire la funzione, in "SRCBLK" scrivi in formato puntatore l'indirizzo e la lunghezza dei dati da trasferire, in "DSTBLK" scrivi in formato puntatore l'indirizzo e la lunghezza della destinazione. "RET_VAL" restituisce un valore in esadecimale che corrisponde allo stato di funzionamento della funzione (codice errore o eseguita con successo) Ti riporto un esempio che: legge 10 byte da DB1.DBX0.0 e li trasferisce nella DB2 dal byte 10.0 CALL "SFC20" //RICHIAMO DEL SFC20 SRCBLK :=P#DB1.DBX0.0 BYTE 10 //AREA DI ORIGINE DEI DATI: DB1, DALL'INDIRIZZO DBX0.0 PER 10 BYTE RET_VAL:=MW0 DSTBLK :=P#DB2.DBX 10.0 BYTE 10 //AREA DI DESTINAZIONE DEI DATI: DB2, DALL'INDIRIZZO DBX10.0 PER 10 BYTE I possibili valori in uscita da ret_val sono riportati nella guida Siemens, per visualizzarli è sufficiente che da step7 ti posizioni sul punto in cui richiami sfc20 e premi F1 da tastiera. Quote Link to post Share on other sites