cobe72 Inserito: 2 aprile 2019 Segnala Share Inserito: 2 aprile 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 Link al commento Condividi su altri siti More sharing options...
mrsk1000 Inserita: 3 luglio 2019 Segnala Share Inserita: 3 luglio 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. 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