Vai al contenuto
PLC Forum


Copiare aree di memoria


Messaggi consigliati

Inserito:

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

 

 


mirko.trevenzoli
Inserita:

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.

 

Inserita:

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?

Inserita:

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.

mirko.trevenzoli
Inserita:

confermo, la cosa importante è che l'area di origine e di destinazione siano uguali

Inserita:

Grazie ad entrambi, credo di aver capito, appena ho la possibilità di fare qualche test direttamente sul hw reale lo testo 🤩

Inserita:

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

mirko.trevenzoli
Inserita:

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.

 

  • 3 weeks later...
Inserita: (modificato)

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

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