Vai al contenuto
PLC Forum


Dati Retentivi Cpu 1200


wlucciola

Messaggi consigliati

Ciao ragazzi

eccomi di nuovo con un nuovo quesito.

In un'applicazione con s7 1200 ho da immagazzinare un dato di energia prodotta, quindi nel mio caso una MD256 che è una uscita di una FB.

ho settato come ritentiva l'uscita in questione e provando a togliere tensione alla cpu il dato non permane.

non riesco a capire come fare a mantenere in memoria questa MD anche spegnendo la cpu

Grazie in anticipo

Link al commento
Condividi su altri siti


>>>Ciao, io proverei ad appoggiarmi ad una double in una db globale, dichiarata come ritentiva<<<

scusa potresti essere piu chiaro, non sono molto nelle db, in genere programmo automazioni dove non c'è bisogno di avere dati ritentivi .

grazie

Link al commento
Condividi su altri siti

zazzamatteofabio

Intendo che, puoi aggiungere un blocco dati (sull'albero a sx), nel quale crei una variabile double, ad esempio DB1.DBD0. E spunti il flag ritenzione.

Puoi salvare il tuo MD, con il comando move in DB1.DBD0 Qui è sicuro che restino in memoria.

Move md256, DB1.DBD0

Poi configuri sull'Hw della cpu i merker di sistema (Mb0 ad esempio) in modo che tu possa usare uno dei bit collegati al comportamento della cpu. Se non ricordo male se usi MB0, M0.5 sarà "On primo ciclo"

Su OB1 usi questo comendo

U M0.5

Move DB1.DBD0, MD256

E restituisci al primo avvio della cpu il valore com'era prima dello spegnimento.

Soluzione "casalinga" ma dovrebbe andare..

Ciao

Link al commento
Condividi su altri siti

Giuseppe Signorella

Se hai necessità di rendere retentivi delle aree di memoria di tipo Merker, puoi selezionare l'apposita opzione nella finestra ove dichiari le tue variabili, senza la necesità di usare dei DB (se ovviamente non ne hai bisogno).

Apri la finestre delle dichiarazioni delle variabili, in alto a sinistra trovi l'icona di una chiavetta inglese, se ci passi di sopra il mouse, ti viene visualizzata la scritta ritenzione. Da li, selezione il numero di byte che vuoi rendere retentivi.

Ciao

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

grazie per le risposte, ho solo un dubbio sul metodo di Giuseppe, con il metodo della chiave inglese io posso decidere quanti byte a partire dal mb0 devo ritenere. adesso mi chiedo se devo ritenere l' md 256 allora tutti i bit da 0 a 260.0 saranno ritenuti e questo non mi va.

ho capito bene?

Link al commento
Condividi su altri siti

Credo che l unica soluzione sia decidere preventivamente quali merker dovranno essere ritentivi e quali no,cosi da poter poi "creare" due aree di lavoro distinte

Es i primi 200 byte li lascio non ritentivi e quindi tutti i dati che voglio non ritentivii li metto li,dal 2centesimo in poi so che andró a mettere quello che voglio resti salvato. Anch io cercavo il sistema per scegliere singolarmente,ma a meno di smentite non dovrebbe essere possibile

Link al commento
Condividi su altri siti

In Siemens quando si lavora con variabili si usano i DB.

Consiglio vivamente a "wlucciola" di approfondire l'argomendo DB.

Non è possibile programmare Siemens senza sapere cosa sono e come si usano i DB.

Mi pare poi strano che, senza conoscere i DB, si programmino dei blocchi FB, che hanno bisogno di un DB di istanza.

O forse è stata utilizzata una FB quando invece andava benissimo una FC?

Per la ritenzione dei merker, si può solo decidere quanti byte di merker si possono rendere ritentivi a partire da MB0.

Per rendere ritentiva la MD256 si dovrebbero quindi rendere ritentivi anche tutti i merker precedenti.

Nelle dichiarazioni delle variabili nei DB invece, è possibile decidere variabile per variabile quali debbano essere ritentive e quali no.

Nel caso specifico però, visto che si parla di un dato in uscita da una FB, rendere ritentiva MD256 o usare una variabile di un DB (dichiarata come ritentiva), non servirebbe a nulla, perché sarebbe l'FB a riscrivere il valore.

Quello che si deve fare quindi è impostare "A ritenzione" la variabile in uscita nell'interfaccia delle variabili della FB.

A meno ché invece che di un parametro "Output" non si tratti di un parametro "InOut". In questo caso, è fondamentale rendere ritentivo il dato collegato alla FB.

Link al commento
Condividi su altri siti

  • 1 month later...
elettrificato

ciao a tutti, rispolvero questa discussione per fare una domanda sulla ritentività dei dati nella CPU in oggetto, non ho grandissima esperienza sui sistemi Siemens e sto lavorando su una S7-1200 alternando la mia attività tra lavoro sul pezzo per il collaudo e lavoro in ufficio per lo sviluppo di alcune parti di programma, ora io ho impostato 7000 parole come dati ritentivi, se spengo e riaccendo la CPU non ho problemi i dati vengono conservati ma se trasferisco il software al PLC perdo tutti i dati, al momento non ne ho ancora molti e li reinserisco manualmente da HMI, in alternativa stavo pensando di crearmi una tabella di controllo con i parametri di default e poi caricarli tutti dopo che ho fatto il trasferimento, così facendo però rischio di perdere eventuali modifiche che faccio durante i collaudi. Non esiste modo di fare un salvataggio dati anche su file esterno al PLC da ricaricare in modo da ripristinare la tabella dati?

grazie per l'attenzione

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