Vai al contenuto
PLC Forum


Copiare aree di memoria


onire77

Messaggi consigliati

Salve a tutti,

devo collegare uno strumento multifuzione NEMO della IME tramite profibus ad un S7-1500. Ho installato il file gsd ed ho visto che lo strumento mi mette a disposizione un'area di memoria da PED0 a PED124. Vorrei copiare questi valori in una DB con 32 DWord consecutive, mi chiedevo se ci fosse un comando per copiare l'intero blocco in una volta sola, senza dover ricorrere a 32 istruzioni MOVE.

Ho provato con MOVE_BLK ma non accetta come parametro di ingresso PED0.

 

Grazie

 

 

Link al commento
Condividi su altri siti


mirko.trevenzoli

Per leggere un'area  (es. tutta la comunicazione da un azionamento verso il plc) uso il dprd_dat, mentre per inviargli tutta la parte in scrittura uso il dpwr_dat.

 

Link al commento
Condividi su altri siti

Ciao Mirko, ti ringrazio per la risposta, però non ho capito come si fa con dprd_dat ad indicargli il numero di byte da recuperare.

Tra le funzioni legacy ho trovato BLKMOV, come parametro gli devo passare il primo indirizzo ed il numero di byte es. P#I100.0 BYTE 128 mi sembra semplice da usare, ma essendo una funziona ereditata dal S7 300 forse non è il modo ottimale, o sbaglio?

Link al commento
Condividi su altri siti

tramite hw_id.

premi f1 sul blocco e ti appaiono le istruzioni. nel 1500 da una versione di tia in poi non si usano più gli indirizzi fisici ma si usa l'hardware id che è un numero assegnato a quella periferia. l'harware id viene assegnato in configurazione hardware e lo trovi anche nei simboli. drag and drop e lo porti nel blocco.

Link al commento
Condividi su altri siti

Ho visto che c'è anche l'istruzione RD_REC, che differenza c'è con DPRD_DAT? Ovvero quando usare l'una e quando l'altra?

 

Inoltre DPRD_DA legge i dati coerenti, ovvero?

Lo so sono tante domande, ho letto un po' di documentazione, ma mi ha solo confuso le idee.

 

Grazie

Link al commento
Condividi su altri siti

mirko.trevenzoli

Per farti un esempio, supponi di dover comunicare con un dispositivo profinet remoto.

Di tale dispositivo dovrai installare il GSDML file . Supponi ora che come comunicazione di proponga es 20 byte, dove i primi 2 byte possono essere lo stato , e gli altri 18 byte dei valori divisi come meglio credi.

Andrai a stendere la tua DB rispettando tale divisione , perciò a fine stesura la tua db rispecchierà in pieno quanto hai letto da manuale, quindi 20 byte etc etc.

Ora , in un passaggio solo , col DPRD_DAT sposti tutti i 20 byte proveniente da tale dispositivo alla db.

Probabilmente leggendo il manuale , troverai degli altri parametri che non sono contemplati nella comunicazione sopra descritta, e che di solito sono indicati in una tabella dove una delle voci è "profinet index"

Se vorrai cambiare tali parametri ( e probabilmente il costruttore del dispositivo non ha inserito tali parametri nella comunicazione standard o ciclica sopra descritta, perché tali parametri vanno cambiati con meno frequenza o sono di minor uso comune) dovrai usare il WR_REC per scriverli e il RD_REC se li vorrai leggere.

Tale comunicazione , che chiameremo "aciclica" , sarà eseguita solo su tua richiesta, e non ad ogni ciclo plc come quella ciclica.
Spero di essermi spiegato.

 

Link al commento
Condividi su altri siti

  • 3 weeks later...

Ciao 

usa Poke_BLK

Cerca la funzione nell’aiuto con F1  ci sono i codici per 

cambiare l’area sorgente e destinazione

se l’area di destinazione è una Db non deve essere ad accesso ottimizzato altrimenti non funziona .

 

Count nel tuo caso 4x32

 

 

POKE_BLK(area_src := 16#81, //Memory area for inputs
dbNumber_src := 0, //dbNumber of I/O area is equal to 0.
byteOffset_src := 0, //read from the first byte
area_dest := 16#84,//Memory area for DB
dbNumber_dest := 3,//number of DB
byteOffset_dest := 0, //Write from the first byte
count := #number * 2  //Number of bytes
);

Modificato: da dimo2474
Link al commento
Condividi su altri siti

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