Carlone83 Inserito: 8 aprile 2013 Segnala Share Inserito: 8 aprile 2013 Ciao a tutti, sto scrivendo i miei primi programmi per un PLC S7-1200 (CPU1214C per la precisione) usando Step7 v11 pro. Non mi è ben chiaro un concetto: che differenza c'è tra la memoria di Merker e i DB per memorizzare delle variabili globali di processo? Quando è consigliabile usare un tipo di memorizzazione piuttosto che l'altro? Io in generale mi trovo meglio utilizzando sempre i DB perché mi permette di organizzare meglio le variabili, c'è qualche controindicazione? Grazie, Carlo. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 aprile 2013 Segnala Share Inserita: 8 aprile 2013 Il merker è il nome che Siemens usa per definire il Bit! I DB sono blocchi di dati, ovvero aree di memoria che riservi per i dati. Link al commento Condividi su altri siti More sharing options...
Carlone83 Inserita: 8 aprile 2013 Autore Segnala Share Inserita: 8 aprile 2013 Forse mi sono espresso male, quello che intendevo è la differenza tra definire una variabile con indirizzo "%Mxxx" (di qualsiasi tipo) nella tabella delle variabili e definire la stessa variabile all'interno di un DB. Dalla tua risposta deduco che è la stessa cosa, è corretto? Grazie, Carlo. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 aprile 2013 Segnala Share Inserita: 8 aprile 2013 No. Spiegare esattamente le differnze conivolge l'uso specialistico dei DB. Sarebbe facilissimo se tu conoscessi linguaggi come il "C", ma nel caso presumo non avresti fatto la domanda. per spiegare, partendo da zero, le differenze delle aree di memoria diventa un po' lungo e si andrebbe a ripetere quello che è scritto sul manuale d'istruzione. Hai letto il manuale? L'argomento è trattato diffusamente e abbastanza bene. Prima di iniziare a smanettare qualche cosa che non si conosce, è obbligatorio leggere i manuali di istruzione. Link al commento Condividi su altri siti More sharing options...
Carlone83 Inserita: 8 aprile 2013 Autore Segnala Share Inserita: 8 aprile 2013 Ciao Livio, conosco abbastanza bene il C, ma la cosa non mi ha aiutato molto... Mi sembra di capire che i DB siano blocchi di dati a struttura prefissata (simili a struct), quindi con un utilizzo del tutto simile ad una variabile di tipo standard. A che manuale ti riferisci esattamente? Io ho consultato il "manuale di sistema" dell's7-1200, dove si dice: M (area dei merker): l’area dei merker (memoria M) può essere utilizzata sia per i relè di controllo che per i dati al fine di memorizzare lo stato intermedio di un’operazione o altre informazioni di comando. L'accesso all'area dei merker può essere effettuato a bit, byte, parola e doppia parola. È consentito l'accesso sia in lettura che in scrittura. DB (blocco dati): i DB possono essere utilizzati per memorizzare diversi tipi di dati, tra cui lo stato intermedio di un'operazione o altri parametri delle informazioni di comando per gli FB e strutture di dati per varie istruzioni, quali i temporizzatori e i contatori. È possibile specificare che il blocco dati sia di lettura/scrittura o di sola lettura. L'accesso alla memoria dei blocchi dati può essere effettuato a bit, byte, parola e doppia parola. Per i blocchi dati di lettura/scrittura è consentito l'accesso sia in lettura che in scrittura. Per i blocchi di sola lettura è consentito solo l'accesso in lettura. Da questa descrizione non riesco a capire che differenza ci sia nel memorizzare variabili nell'area M o in un DB... Ho consultato anche il manuale di Step7, ma non ho trovato nulla. Grazie, C. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 aprile 2013 Segnala Share Inserita: 8 aprile 2013 Il manuale è il manuale di riferimento dello step7. Quello in cui si tratta la sintassi del linguaggio e si analizzano le istruzioni. Banalizzando e semplificando. I DB potrebbero essere assimilati, nel "C", alle variabili definite nelle funzioni, mentre l'area di memoria generale "M" può essere assimilata alle variabili globali. Infatti alle variabili "M" accedi con un indirizzo assoluto "M.xxxx, alle variabili definite nei DB accedi sempre specificando a quale DB si fa riferimento, "DBx.yy". Probabilmente ci saràqualcuno che vorrà fare distinguo e precisazioni, però il concetto di base, in condensato, è quello che ho scritto. Link al commento Condividi su altri siti More sharing options...
Carlone83 Inserita: 8 aprile 2013 Autore Segnala Share Inserita: 8 aprile 2013 Ok, una differenza chiara è il modo con cui si fa riferimento alla variabile in fase di programmazione. Ma se devo, ad esempio, salvare un risultato di un'operazione, e il dato deve poi avere una visibilità globale, è meglio dichiarare la variabile nell'area M o in un DB? Io da un punto di vista logico sarei propenso a usare dei DB globali organizzando le variabili secondo una certa semantica. Ci sono motivi tecnici (non "logici") per preferire una cosa o un'altra? Grazie, Carlo. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 8 aprile 2013 Segnala Share Inserita: 8 aprile 2013 Il numero dei merker, specialmente nelle cpu più piccole, è abbastanza limitato (es. 256 MB), mentre per i DB il limite è quello della memoria di lavoro (condivisa con il programma), quindi hai a disposizione, anche nelle cpu più povere, parecchie migliaia di variabili. I merker (salvo quelli appositamente impostati come ritentivi in configurazione hardware) non sono ritentivi, mentre i DB (salvo diversa impostazione), sì. L'accesso (sia in lettura che in scrittura) ad un merker è molto più veloce dell'accesso ad una variabile di un DB. E' abitudine abbastanza diffusa utilizzare i merker (soprattutto come variabili booleane) per cose generali, comuni a tutto il programma, ed usare variabili dei DB in quasi tutti gli altri casi. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 8 aprile 2013 Segnala Share Inserita: 8 aprile 2013 (modificato) L'accesso (sia in lettura che in scrittura) ad un merker è molto più veloce dell'accesso ad una variabile di un DB. Su s7-300 sì, sul 200 i tempi erano uguali per tutti gli operandi tranne gli ingressi e i Local, sul 1200 mi confermi ? Solo per sapere, non per far polemica, ciao. Modificato: 8 aprile 2013 da JumpMan Link al commento Condividi su altri siti More sharing options...
Lucky67 Inserita: 9 aprile 2013 Segnala Share Inserita: 9 aprile 2013 sul 200 i tempi erano uguali per tutti gli operandi tranne gli ingressi e i Local E' una vita che non li uso e non mi ricordo bene, ma il 200 aveva anche la memoria DB? Io ricordo solo le memorie V...però magari ricordo male.. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 9 aprile 2013 Segnala Share Inserita: 9 aprile 2013 I dati V erano nell'unica DB del 200 (DB1). la mia domanda era rivolta al 1200 perchè non trovo informazioni, degli altri 2 ne sono certo. Link al commento Condividi su altri siti More sharing options...
Jacko_ Inserita: 8 maggio 2013 Segnala Share Inserita: 8 maggio 2013 Per la mia breve esperienza si utilizzano le DB quando si vuole strutturare le variabili, per comodità o necessità (DB di istanza di una FB, chiamate di SFC14/15). I Merker sono comodi quando riguardano variabili globali usate frequentemente. Link al commento Condividi su altri siti More sharing options...
PinokkioPLC Inserita: 22 maggio 2014 Segnala Share Inserita: 22 maggio 2014 Grazie per le risposte, proprio oggi mi era sorto lo stesso dubbio di carlone83, la prima cosa trovata su Google è stata questa discussione 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