gfabrizio Inserito: 6 marzo 2010 Segnala Inserito: 6 marzo 2010 Scusate la mia ignoranza ma non riesco a gestire i puntatori per quello che dovrei fare.Ho usato la funzione cerca ma non ho trovato la soluzione.Spiego meglio il mio problema:Ho una variabili (MW0) che può assumere il valore da 1 a 10A seconda del valore di (MW0) devo prendere 10 BYTE da una DB che contengono un testoe trasferirli su una altra DB.Per questa funzione pensavo di usare la funzione BLOCK MOVE (SFC20) che conoscoavendola già utilizzata ma solo con idirizzi costanti.Esempio : Prendo 10 BYTE da DB1.DBX12.0 Trasferisco in DB41.DBX12.0 Il DB da dove prelevo i dati dovrebbe essere puntato da MW2 mentre il DB di arrivo e fisso.Spero che qualcuno possa aiutarmi e ringrazio tutti quanti vorranno farlo.G.FABRIZIO
gluca2 Inserita: 6 marzo 2010 Segnala Inserita: 6 marzo 2010 Ciao,scusa non ho capito cosa non riesci a fare e non conosco bene SFC20. Comunque prova a dirti quacosa io, per utilizzare i puntatori con un blocco dati, non si puo utilizzare l'indirizzo completo come hai riportato tu, ma bisogna prima aprire il DB con l'istruzione AUF e dopo leggere la variabile. EsempioL 1 T MW100 AUF DB [MW100] L DBW 12 T DB41.DBW12 Ricordati solo che quando apri il DB41, chiudi il DB aperto con il puntatore, quindi per leggerlo nuovamente devi riaprirlo. In alternativa puoi aprire il DB puntato come DB di istanza. Esempio: AUF DI [MW100]In questo modo puoi aprire una sola volta il Db puntato. Questo sistema non funziona se lo utilizzi all'interno di un FB che ha già il suo blocco dati di istanza.Spero di essere stato chiaroCiaoGianluca
gfabrizio Inserita: 6 marzo 2010 Autore Segnala Inserita: 6 marzo 2010 (modificato) Per gluca2.Ti ringrazio della risposta, ma l' esempio che mi hai suggerito funziona solo se devo trasferiredelle word, cioè 2 byte o anche delle dword cioè 4 byte.Io devo trasferire 10 BYTE che trovo ad esempio in DB1 a partire dal byte 12.Utilizzando la funzione SC20 BLOCK_MOVE con l' indirizzamento con costanti scrivouna cosa di questo genere e funziona:CALL SFC20SRCBLK: P#DB1.DBX12.0 BYTE 10 (sorgente)DSTBLK: P#DB41.DBX12.0 BYTE 10 (destinazione)Io vorrei che l' indirizzo sorgente fosse puntato da MW0 che contiene un numero da 1 a 10Una cosa così : P#(MW0).DBX12.0 BYTE 10Non so come fare e spero in un aiuto.Grazie, gfabrizio Modificato: 6 marzo 2010 da gfabrizio
gfabrizio Inserita: 6 marzo 2010 Autore Segnala Inserita: 6 marzo 2010 Per tutti.EUREKA !!!!!Ho proprio voluto urlarlo. Sono riuscito ad ottenere quello che volevo grazie ad un suggerimentodi PIGROPLC del 28/10/2003 che ho trovato con la funzione cerca.Il tutto funziona splendidamente.Ringrazio ancora tutti ed in particolare pigroplc che ha messo a disposizione il suggerimento.Forum a dir poco eccezionaleSaluto tutti.
gfabrizio Inserita: 7 marzo 2010 Autore Segnala Inserita: 7 marzo 2010 Grazie STEUSpiegazione molto chiara e completa.Ne farò buon uso.gfabrizio
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