Vai al contenuto
PLC Forum


Copia Di Un Intero Db In Un Nuovo Db.


Messaggi consigliati

Giacomo Grassi
Inserito:

Salve a tutti vorrei sottoporvi una domanda:

Ho un db composto da circa 50 dati (tutti in formato intero). Devo copiare l'intero db in un altro sempre composto da 50 dati in formato intero.

Devo ripetere questa operazione circa una decina di volte nel mio programma e voi capite che copiare ogni singolo dato per volta con delle Move diventerebbe ingestibile.

Premetto che programmo l'S7-1200 in Kop e non conosco Scl.

Ringrazio chi gentilmente mi può aiutare.

Giacomo.


Inserita: (modificato)

In tia portal...il fantastico....esiste ancora sfc20 alias

b7e05184617479d18e3f511de3bbc070.JPG

f046852aa0d7b545c790dc28885b048f.JPG

c360fa44afc8a6ebfaf71898066be0ca.JPG

b911f9098d473992a48d7a5a4f7fbc48.JPG

Modificato: da dott.cicala
Inserita:

Se la struttura sorgente e quella di destinazione sono uguali, basta utilizzare l'istruzione MOVE.

Giacomo Grassi
Inserita:

Grazie per le risposte.

Batta non posso usare MOVE altrimenti riempirei tutto il programma (50x10=500 move); pensavo di usare degli array e poi usare l'istruzione MOVE_BLK. Creo il mio array di 50 word e poi con l'istruzione MOVE_BLK copi questo array in un'altro sempre composto da 50 word; in questo modo con 10 MOVE_BLK dovrei cavarmela..voi cosa ne dite?

Domanda inerente al problema: in questo array di 50 word posso mettere anche alcuni dati di tipo stringa?
Questi dati di tipo stringa non devo elaborarli ma solo passarli da un db all'altro; uso 10 word del mio db per caricare un dato stringa...è corretto o sto solo sognando?

Dott.Cicala grazie anche a te ma fatico a comprendere; l'istruzione BLKMOV contiene la sintassi riportata sopra ed è scritta da te?

Giacomo.

Inserita:

Batta non posso usare MOVE altrimenti riempirei tutto il programma (50x10=500 move)

Non hai capito.

Se hai due strutture di dati identiche (oppure array, o strutture contenenti altre strutture, array, variabili e tutto quello che vuoi) con un solo MOVE fai la copia di tutta la struttura.

Se hai due DB identici, con un solo MOVE fai la copia di tutto il DB.

Inserita: (modificato)

Se usi l'indirizzamento simbolico va bene anche 1 solo move.

....è scritta da te?

No da Siemens. Ho dichiarato solo la temp assegnata a RET_VAL

I primi 3 sono in awl, l'ultimo in kop.

Vai sul tuo segmento, inserisci la funzione e digiti BLKMOV....e apri l'.h e l p.....poi fai la stessa cosa col MOVE....e apri l' h e l p

Troverai tutte le info che ti servono

Modificato: da dott.cicala
Giacomo Grassi
Inserita:

Grazie ad entrambi. Effettivamente con 2 db identici (contenenti anche dati diversi word,uint,string ecc) mi consente di inserire la MOVE e di compilarlo senza errore.
Lunedì mattina lo voglio testare direttamente sull'impianto e se funziona mi avete dato davvero una grossissima mano.

Vi faccio sapere.

Grazie davvero.

Giacomo.

Giacomo Grassi
Inserita:

Ciao confermo (e ringrazio) quello detto da batta e dott.cicala. Usando MOVE si può copiare un db su un'altro db. Per esigenze di programma sono stato costretto a non trasferire l'intero db ma solo una parte; per fare ciò ho utilizzato POKE BLK che da la possibilità di scegliere quanti byte, all'interno di un db, spostare in un'altro db. L'istruzione è parametrizzabile solo in SCL.

Grazie ancora per l'aiuto.

Giacomo.

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...