Jump to content
PLC Forum


Sign in to follow this  
TRC

Salvare I Dati Dal Plc Al Progetto

Recommended Posts

TRC

Buon gioro a tutti, devo salvare i dati presenti nella CPU di un S7-300 nel progetto...

- un metodo è copiare i DB online nel mio progetto, così facendo salvo i dati ma perdo il simbolico.

- il secondo metodo è aprire il DB online aprire la colonna visualizza dati attuali e successivamente aggiorna i dati attuali con i dati iniziali, ma

e non riesco a trovare il comando copia da attuali a iniziali... mi potete aiutare, grazie.

Share this post


Link to post
Share on other sites

mubeta

non c'e' tale comando, pero` il simbolico non lo perdi se le due DB sono coerenti. Viceversa lo perdi se da on-line copi in un nuovo progetto off-line. Per questo avevo creato il tool freeware 'S7DataArchiver'.

Share this post


Link to post
Share on other sites
TRC

Scusa non ho capito, su una cpu ho i dati che vengono aggiornati dalla stessa, tipo contatori ecc. + ho le ricette che gli operatori inseriscono, come faccio a salvare i blocchi on line senza perdere il simbolico,

i blocchi coerenti da due progetti off -line o da progetto a cpu?

Qualche anno fa su un plc CPU 313 collegato con una stampante, avevo scritto una serie di stringhe nel plc " in italiano" , al momento della messa in funzione avevo tradotto i messaggi in inglese, ma quando facevo il reset della cpu mi si ripresentavano tutti in italiano, tramite l'hot line siemens ero riuscito a copiare i messaggi in inglese nei dati iniziali della cpu con un comando, ora avendo da poco cambiato posto di lavoro e non volendo fare una nuova registrazione all'hotline, non ho più questo riferimento. Mi potresti dire dov'è S7DataArchiver e come funziona? Grazie.

Share this post


Link to post
Share on other sites
mubeta

Io vedo due soluzioni, quelle che conosco:

1) Una volta che il progetto on-line è in funzione e tarato, se copi le DB dalla "finestra" on-line, verso la finestra off-line, dello stesso progetto, ammesso che le DB siano coerenti (lo riconosce step 7 se lo sono, tramite il confronto blocchi, che farai preventivamente), allora i dati contenuti nelle DB on-line divendano i dati iniziali delle DB off-line, senza perdere il simbolico e commento delle medesime.

2) Se hai paura di perdere il simbolico e commento nelle righe delle DB, perché vari motivi, nello stesso progetto off-line aggiungi uno o più nuovi programmi S7, dove, sempre dalla finestra on-line, farai il copia-incolla verso la finestra off-line del programma nuovo, (opportunamente denominato). Le DB nel programma di riferimento manterranno i valori iniziali, presumibilmente nulli, nel programma di "backup" avrai delle DB, senza commenti, ma con tutti i dati aggiornati, che puoi sempre ricopiare verso la CPU.

Share this post


Link to post
Share on other sites
gaserma

Per salvare i dati di una qualsiasi DB di un progetto, devi aprire la singola DB Online e premere il pulsante "Salva", in questo modo i dati Online vengono salvati in Offline senza alterare i simbolici.

Io lascerei perdere l'aggiornamento dei dati iniziali.

Share this post


Link to post
Share on other sites
mubeta

Scusa gaserma, ma spiegati meglio.

- Se si è on-line su una DB il comando Salva è disabilitato;

- Se si è off-line, il comando è attivo, ma la colonna "Valore attuale" non corrisponde al contenuto della DB on-line. Facendo "Salva" in questo modo, alla dB off-line non succede nulla.

TRC ha il problema di salvare in off-line i dati contenuti nelle DB, dopo lo start-up impianto, per non doversi ricercar etutte le volte ca capita qualcosa i valori di regolazione. (Se ad esempio si lascia la CPU spenta a lungo, all'accensione viene ricvaricato tutto dalla flash e le DB avranno, per necessità di cose, i valori "iniziali".

In parecchi anni non ho mai trovato nulla che permetta di salvare le DB, se non il copia - incolla da on-line ad off-line.

Share this post


Link to post
Share on other sites
TRC

Scusate ma tengo acceso l'argomento...

faccio DB1 con variabile PIPPO = INT (dato iniziale =0)

carico il DB nel plc

scrivo PIPPO=10 nel plc

- ora con l'off line aperto mi collego on-line e il blocco mi diventa con l'intestazione azzurra e vedo dati iniziali in grigio e dati attuali bianchi e PIPPO con valore 10, da qui dovrebbe esserci il comando di

scrivere i dati attuali in quelli iniziali.

- oppure da off-line faccio il confronto e mi compaiono i 2 blocchi (che sono coerenti tra loro) e poi ?

- oppure copio il DB on-line (coerente con l'off-line) nel mio progetto ma quando lo apro trovo la variabile STAT1 anzichè PIPPO, oltretutto a volte trovo comunque i dati iniziali a 0 e non capisco quando

riesco a salvare i dati attuali e quando i dati iniziali.

Share this post


Link to post
Share on other sites
mubeta

- Apri contemporaneamente il progetto off-line ed on-line

- Selezioni la o le DB on-line (titolo finestra evidenziato), che ti interessa salvare

- CTRL+C, o tasto sinistro mouse -> copia

- Passi alla parte off-line, (finestra col titolo non evidenziato)

- CTRL+V, o tasto sinistro mouse -> incolla

I valori della colonna dati attuali della DB off-line vengono aggiornati. Funziona sia con DB globali che con DB di istanza; lo uso spesso e non sparisce il simbolico se le DB sono coerenti. I vari blocchi hanno dei dati di intestazione e delle date di creazione e modifica dati ed interfacce. Credo che la coerenza dipenda da queste informazioni. Probabilmente se in off-line la stessa DB ha subito delle variazioni, e dico probabilmente, le DB non sono più coerenti e quindi con questo metodo i simboli vengono sostituiti

Share this post


Link to post
Share on other sites
gaserma
- Apri contemporaneamente il progetto off-line ed on-line

- Selezioni la o le DB on-line (titolo finestra evidenziato), che ti interessa salvare

- CTRL+C, o tasto sinistro mouse -> copia

- Passi alla parte off-line, (finestra col titolo non evidenziato)

- CTRL+V, o tasto sinistro mouse -> incolla

Probabilmente funziona anche così, ma ti assicuro che se tu hai una DB aperta in Offline e passi in Online, ti si evidenzia il tasto "Salva" e salvi la DB, ti si aggiornano i dati attuali nella DB Offline (che è quello che si richiede) senza intaccare assolutamente il simbolico, Questa operazione può essere fatta anche se compare il messaggio che c'è una incoerenza in qualche dato, d'altra parte se stai lavorando con dei dati dinamici, è chiaro che ci può essere qualche differenza tra la DB Offline e quella Online; salvando la DB Online non fai altro che aggiornare i dati Offline da quelli Online.

Quando devo salvare i dati attuali delle DB di un progetto ho sempre fatto così e ti assicuro che le DB Offline si aggiornano ai dati Online, per quanto riguarda invece i dati iniziali, non ho mai provato ad aggiornarli ai dati attuali, ma se hai già un backup valido, credo che caricare dei dati validi sia più che sufficiente.

Share this post


Link to post
Share on other sites
TRC

grazie delle risposte... domani proverò ancora... comunque se non ho i dati iniziali uguali a quelli attuali ma bensì tutti a zero, in caso di inizializzazione del plc (perchè si rompe la cpu) o perchè viene spedita una MMC con modifiche.... senza un pc che trasferisca i dati attuali salvati off-line nel progetto la cpu riparte azzerata (con i dati iniziali) o va a copiarsi i dati attuali del progetto? Se dovessero

azzerarsi i dati ai valori iniziali, probablimente mi si potrebbe rompere la macchina, questo è il motivo di tanta insistenza.

Share this post


Link to post
Share on other sites
mubeta

- La macchina NON si deve rompere perché una o più DB sono andate a zero. Semmai non funziona.

- Prova ad aprire una chiamata all'hot-line, magari scopri una via possibile.

Share this post


Link to post
Share on other sites
aude

Io utilizzo per copiare i dati attuali presenti nella DB del PLC al progetto OffLine utilizzo il metodo di mubeta , plc online , seleziono le Db , Ctrl C , passo al progetto Offline , Ctrl V.

Funziona benissimo. ovviamente le DD devono corrispondere nelle strutture.

Per quanto riguarda la MMC , se possibile , metto il PLC in STOP e poi dal menu Sistema di destinazione - Salva ram in rom , il PLC fa una fotografia dello stato attuale della RAM , e quindi anche delle DB , e lo salva sulla MMC. Se si inserisce su un PLC vergine la MMC si ha lo stesso identico funzionamento del PLC utilizzato per la coppia.

Spero di essere stato chiaro

Share this post


Link to post
Share on other sites
TRC

si aude sei stato chiaro grazie... in effetti il comando è salva ram in rom, anche se non sono quelli iniziali la CPU allo start doo cancellazione carica comunque gli attuali nella MMC quindi in realta gli iniziali

non servono a molto, comunque ho trovato un paio di metodi per copiare gli attuali negli iniziali, anche se non credo che li usero' (erchè basta ram in rom) uno è attraverso la generazione di un file sorgente del DB con la copia di dati (uno a uno) dal valore corrente nella struttura del blocco screata nel sorgente e l'altro è attraverso l'esportazione del sorgente, passaggio in excel e reimporrtazione...

Sconsiglio l'utilizzo dopo aver provato a farlo... ripeto uso SALVA RAM in ROM e va tutto bene

L'articolo che spiega come fare è in Service &Support di Siemens e ha come ID 37001

per aude, io se faccio il tuo (e di mubeta) metodo perdo il simbolico delle DB, sbaglio qualcosa?

Share this post


Link to post
Share on other sites
aude

Se perdi il simbolico delle DB , vuol dire che la DB Offline e quella OnLine non hanno la stessa struttura dati.

Questo può succedere ad esempio se si fa una modifica OffLine ( esempio aggiungo una word ) e poi si esegue la lettura della Db dall'OnLine con copia e incolla.

Io prima di fare una modifica sulle DB , leggo la Db OnLine , faccio la modifica OffLine e poi la riscarico nel PLC.

In questo modo non rischio di perdere i dati attuali presenti nel plc (salvo nel caso in cui nel tempo in cui sto facendo la modifica questi possano variare e sia assolutamente necessario non sovrascriverli) e ho la certezza di avere le Db sempre allineate come strutture dati.

Per la mia esperienza , con Step 7 è meglio non lavorare mai OnLine come si faceva in S5 o con altri PLC. Prima o poi si incappa in perdite del simbolico.

Giusto o sbagliato che sia , la filosofia di S7 è quella di lavorare OffLine e usare l'OnLine per il debug.

Spero di essere stato d'aiuto.

Se hai ancora problemi fatti sentire.

Edited by aude

Share this post


Link to post
Share on other sites
svsoftware

APPROVO AL 98%..........

CERTO E' CHE, SE LA CPU POTESSE CONTENERE ALMENO IL SIMBOLICO DEI DB, ALMENO SI POTREBBE VERIFICARE DOVE è LA INCOERENZA.

E' pur vero però che , coi tempi che corrono si cerca di risparmiare, quindi si cerca di spendere il meno possibile ( quella suddetta non è sicuramente una cosa economica

inquanto prevede una capacità di memoria molto elevata ).

Quindi dico LAVORATE OFF LINE E SE NON SIETE SICURI, SALVATE SEMPRE I DB COMMENTATI POI FATE UN UPLOAD DALLA CPU.

In merito a questo argomento vorrei ****e un altro : QUANDO USATE UNA DB CON UDT cosa succede se modificate l'udt (intendo le variabili e non il simbolico) ???

QUESTO CREDO SIA UN ARGOMENTO SU CUI TUTTI VOI MI POTETE AIUTARE

GRAZIE

Share this post


Link to post
Share on other sites
aude

Buon giorno , dopo aver modificato un UDT riaprendo la DB che ne contiene uno o più la trovi con le vecchie dichiarazioni rosse. Devi ridigitare i simboli che richiamano la struttura dati dell'UDT. Ovviamente se le dimensioni dell'UDT sono cambiate (es. Una word è diventata una DoubleWord) anche i simboli che seguono quello formato dal tuo UDT hanno cambiato l'indirizzo assoluto all'interno della DB. Devi fare attenzione a questo fatto , specialmente se accedi tramite puntatori.

Ti consiglio di lasciare sempre un po di scorta all'interno di un UDT , cosi in caso di modifiche è più probabile che non debba "correre dietro" ai vari accessi fatti in modo assoluto.

Spero di essere stato chiaro.

Edited by aude

Share this post


Link to post
Share on other sites
TRC

Scusate continuo a non capire, faccio un blocco dati DB1 con 1 variabile sola PIPPO (dato iniziiale=0)

- download DB1

- scrivo nel software PIPPO=1

- mi scollego col pc

- mi ricollego e vado online

- copio DB1 nel mio progetto offline

- apro il DB1 e trovo STAT1 valore iniziale =0 , valore attuale =1

- i DB online e offline sono coerenti, perchè perdo il simbolico ?

Un'altra cosa, come si fa a lavorare online con siemens se al primo tentativo di modifica di un blocco si passa in modalità offline con successiva domanda se si voglia caricare il blocco o meno ?

Share this post


Link to post
Share on other sites
TRC

Scusate continuo a non capire, faccio un blocco dati DB1 con 1 variabile sola PIPPO (dato iniziiale=0)

- download DB1

- scrivo nel software PIPPO=1

- mi scollego col pc

- mi ricollego e vado online

- copio DB1 nel mio progetto offline

- apro il DB1 e trovo STAT1 valore iniziale =0 , valore attuale =1

- i DB online e offline sono coerenti, perchè perdo il simbolico ?

Un'altra cosa, come si fa a lavorare online con siemens se al primo tentativo di modifica di un blocco si passa in modalità offline con successiva domanda se si voglia caricare il blocco o meno ?

Share this post


Link to post
Share on other sites
mubeta

Ho fatto un pò di prove:

1) DB di tipo globale:

- Effettivamente in vista dati, e non dichiarazione, aprendola dalla finestra on-line e non off-line, col comando "Salva" del menù a tendina, si salva il valore attuale anche in off-line. (Non bisogna avere il controllo attivo, altrimenti il comando Salva è disattivo). Col comando Aggiorna, o tasto F5, si aggiorna la visualizzazione dei valori attuali.

- La Vista dati può essere seledionata come default. Nell'edito KOP/FUP/AWL, andando nelle Impostazioni dal menù a tendina, scheda Rappresentazione, al fondo, nel riquadro Dei tipi di blocchi, visualizza ...; Blocchi dati; Vista di dati.

2) DB di tipo istanza:

- Indipendentemente dal tipo di rappresentazione: Vista dichiarazione o Vista dati, dalla finestra on-line, all'apertuta la colonna Valore attuale viene aggiornata. Il medesimo comando Salva salva i valori anche off-line. Il pulsante controlla attivo o disattivo non aggiorna più tale valore; che si aggiorna invece col comando Aggiorna, o tasto F5.

3) Il Copia/Incolla, su diversi progetti, con diverse lingue di commenti, delle DB da on-line verso off-line ha sempre aggiornato i Valori attuali anche off-line, senza mai perdere i nomi simbolici delle variabili di quelle DB che non erano derivate da UDT od FB non presenti nel progetto off-line. Il simbolo STAT... è comparso solo in quelle DB incollate in off-line, che erano dichiarate come UDT non più presenti off-line, o istanze di FB non più presenti off-line. (Come giustamente dove essere. Non ho trovato altre ragioni che facciano perdere i somboli delle variabili).

Ho usato: STEP7 V5.4 + SP5; CPU 314 collegata in MPI 187,5 (non c'entra nulla), per le prove.

Share this post


Link to post
Share on other sites
aude

Per TRC , cosa intendi per "- scrivo nel software PIPPO=1" ?

Inserisci in un blocco di programma le seguenti istruzioni ?

L 1

T DBXX.PIPPO

PIPPO cos'è un Byte , Word , ecc ?

Se riesco oggi faccio qualche prova , ma mi torna assolutamente quello che dice mubeta.

Share this post


Link to post
Share on other sites
TRC

PIPPO è un numero INT..

Share this post


Link to post
Share on other sites
djx84

Salve

dalla mia esperienza posso affermare con quasi assoluta certezza che l'unico modo per salvare i dati delle db online su quelle offline è copiarle dalla cpu online.

L'importante per far si che non ci venga scritto "stat stat stat" è che la struttura del db online sia identica a quella offline.

mi spiego meglio:

- il nome della variabile nel db, il commento o il valore di essa non è importante.

- la cosa che conta è che se il db online contiene in sequenza 10 word int e 10 bit anche quello offline deve essere uguale se no perdi i commenti.

- attenti perchè anche il tipo hex-bin-int di una word conta quindi deve essere uguale sia offline che online

- la cpu al suo interno non contiene ne commenti ne nomi quindi solo la struttura conta.

esempio db online-offline

db10

int-int

int-int

int-int

int-int

bool-bool

bool-bool

hex-hex

ok

db10

int-bool

int-int

int-int

int-int

bool-bool

bool-bool

hex-hex

errato

db10

int-hex

int-int

int-int

int-int

bool-bool

bool-bool

hex-hex

errato

se hai bisogno di copiare i dati contenuti nelle db sulla mmc in automatico (cada settimana il plc salva i dati dei db nella mmc) usa:

SFC82: Crea la DB nella memoria di caricamento (MMC)

SFC83: Legge la DB nella memoria di caricamento (MMC)

SFC84: Scrive la DB nella memoria di caricamento (MMC)

Edited by djx84

Share this post


Link to post
Share on other sites
nveronesi

Per salvare i valori attuali di un DB nei valori iniziali senza intaccare il simbolico, procedere come segue:

Aprire la finestra dei blocchi ONLINE

Selezionare tutti i blocchi DB che si vogliono aggiornare nel progetto OFFLINE (tenendo premuto CTRL o SHIFT posso effettuare una selez. multipla)

Cliccare con il tasto destro del mouse sulla selezione e scegliere il comando SISTEMA DI DESTINAZIONE --> CARICA NEL PG

Share this post


Link to post
Share on other sites
cdc

Ma non equivale a fare un copia-incolla?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...