Vai al contenuto
PLC Forum


Variabili In Merker O Db?


Carlone83

Messaggi consigliati

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


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

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

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

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

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

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

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

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: da JumpMan
Link al commento
Condividi su altri siti

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

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

  • 4 weeks later...

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

  • 1 year later...

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

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