onire77 Inserito: 30 novembre 2018 Segnala Share Inserito: 30 novembre 2018 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 More sharing options...
mirko.trevenzoli Inserita: 3 dicembre 2018 Segnala Share Inserita: 3 dicembre 2018 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 More sharing options...
onire77 Inserita: 6 dicembre 2018 Autore Segnala Share Inserita: 6 dicembre 2018 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 More sharing options...
ken Inserita: 6 dicembre 2018 Segnala Share Inserita: 6 dicembre 2018 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 More sharing options...
mirko.trevenzoli Inserita: 6 dicembre 2018 Segnala Share Inserita: 6 dicembre 2018 confermo, la cosa importante è che l'area di origine e di destinazione siano uguali Link al commento Condividi su altri siti More sharing options...
mirko.trevenzoli Inserita: 7 dicembre 2018 Segnala Share Inserita: 7 dicembre 2018 Intendo come dimensione. Link al commento Condividi su altri siti More sharing options...
onire77 Inserita: 7 dicembre 2018 Autore Segnala Share Inserita: 7 dicembre 2018 Grazie ad entrambi, credo di aver capito, appena ho la possibilità di fare qualche test direttamente sul hw reale lo testo 🤩 Link al commento Condividi su altri siti More sharing options...
onire77 Inserita: 7 dicembre 2018 Autore Segnala Share Inserita: 7 dicembre 2018 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 More sharing options...
mirko.trevenzoli Inserita: 7 dicembre 2018 Segnala Share Inserita: 7 dicembre 2018 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 More sharing options...
dimo2474 Inserita: 26 dicembre 2018 Segnala Share Inserita: 26 dicembre 2018 (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 inputsdbNumber_src := 0, //dbNumber of I/O area is equal to 0.byteOffset_src := 0, //read from the first bytearea_dest := 16#84,//Memory area for DBdbNumber_dest := 3,//number of DBbyteOffset_dest := 0, //Write from the first bytecount := #number * 2 //Number of bytes); Modificato: 26 dicembre 2018 da dimo2474 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