Vai al contenuto
PLC Forum


Salvare in un DB, allo spegnimento, i valori della scheda contatori veloci FM 350-2


vergalabs

Messaggi consigliati

buongiorno a tutti

 

come da titolo avrei bisogno di "salvare" o meglio spostare una db tramite sfc20 allo spegnimento del plc, volevo utilizzare ob81 ma nel 300 non è disponbile, l'unico che mi rimane a disposizione è ob100 che però se non ho capito male viene eseguito al riavvio.

avete qualche suggerimento

 

grazie

 

Link al commento
Condividi su altri siti


Ciao

 

l'OB100 viene ciclato una solo volta all'avvio della CPU, se hai una periferia profibuss o profinet potresti provare con OB122 "MOD_ERR".

Altrimenti postresti provare con un ingresso PLC di interupt se ne hai a disposizione, nel OB40

 

Saluti

Link al commento
Condividi su altri siti

Per effettuare questi salvataggi è necessario riconoscere immediatamente la mancanza rete e sfruttare la carica del condensatore dell'alimentatore.

Ci sono dispositivi che hanno questo riconoscimento per il back up automatico ma, dai miei ricordi, non credo ci sia su S7-300, però magari qualcuno più aggiornato di me potrà smetntirmi.

I dati che si voglio conservare anche in caso di spegnimento si devono appoggiare all'area di memoria ritentiva.

Link al commento
Condividi su altri siti

Grazie a tutti 

Era quello che avrebbe dovuto fare ob81 ma aimè non è presente nel 300.

Mi sa che dovrò arrendermi ed usare un metodo meno elegante e cioè salvare i dati ogni tot tempo per poi ripristinarli al riavvio con ob 100 ma essendo dei contatori dovrò necessariamente perdermi per strada qualche lattina. 

Visto che i problemi vengono da due schede fm350-2 configurate come contatori veloci apro un nuovo post magari c'è un'altra strada per risolvere il mio problema. 

Ma mi piacerebbe procedere su questa strada 

Link al commento
Condividi su altri siti

 

Premetto che non conosco le suddette schede ma ho letto un po' le loro istruzioni, il problema principale è che come specificato nel manuale il valore del conteggio riparte da zero ad ogni nuovo avviamento (bella fregatura). Non è che qualcuno si è già fatto venire un bel mal di testa e trovato un modo per arginare il problema? 

Il quadro è già tamponato da UPS per evitare gli spegnimenti ma quando l'ups fa i capricci tanti auguri ai contatori

Screenshot_20181008-183856.jpg

Link al commento
Condividi su altri siti

Memorizzi il valore corrente in una variabile ritentiva.

Al riavvio, inizializzi il contatore col valore memorizzato.

Link al commento
Condividi su altri siti

purtroppo il contatore sembra non si possa inizializzare, quindi dovrò si memorizzare il valore precedente per poi andare a sommarlo al valore del contatore che ripartirà da zero per ottenere il valore reale, la variabile di appoggio si resetterà con il segnale di reset del contatore principale, da qui nasce la domanda di un mio altro post, come faccio a salvare una db allo spegnimento del plc ?

Link al commento
Condividi su altri siti

Se trovi o realizzi il dispositivo che scatta sulla mancanza rete puoi, collegandolo ad un ingresso veloce legato ad interrupt, eseguire la funzione.

Link al commento
Condividi su altri siti

Il contatore che devi verificare NON è il valore in arrivo dalla scheda di conteggio veloce bensì un appoggio che è la somma fra il valore del contatore e il suo appoggio memorizzato ad ogni ciclo macchina su una db ritentiva. La condizione di criticità è lo spegnimento improvviso della macchina con il movimento in corso, in tal caso potrebbe sfalsarsi il conteggio a plc col conteggio reale.

 

Link al commento
Condividi su altri siti

Quote

purtroppo il contatore sembra non si possa inizializzare, quindi dovrò si memorizzare il valore precedente per poi andare a sommarlo al valore del contatore che ripartirà da zero per ottenere il valore reale, la variabile di appoggio si resetterà con il segnale di reset del contatore principale, da qui nasce la domanda di un mio altro post, come faccio a salvare una db allo spegnimento del plc ?

È da parecchio tempo che non uso quella scheda, e mi potrei anche sbagliare, ma sei proprio sicuro che il contatore non si possa inizializzare? Hai letto tutto il manuale? Ci deve essere una FB o SFB che ti permette di gestire ogni funzione del modulo.
Comunque, specialmente se utilizzi il modulo con conteggio continuo, l'altra possibilità è appunto quella di gestire un offset.
Per memorizzare questo offset, non devi fare praticamente nulla, ti basta scriverlo, ad ogni ciclo, in una variabile di un DB. Nel 300 i DB, di default, sono ritentivi.
Alla riaccensione, ti troverai l'ultimo valore scritto.
Il problema, casomai, come già scritto da Pigroplc, è che, nel caso di spegnimento improvviso con macchina in funzione, potresti salvare un valore non esatto, essendo la memorizzazione del valore fatta con una frequenza più bassa del reale aggiornamento del valore del contatore.
Se si tratta di contare le lattine, penso che un errore di qualche lattina nel caso di spegnimento improvviso sia accettabile.

Link al commento
Condividi su altri siti

2 ore fa, pigroplc scrisse:

La condizione di criticità è lo spegnimento improvviso della macchina con il movimento in corso, in tal caso potrebbe sfalsarsi il conteggio a plc col conteggio reale. 

 

è vero anche questo ma non mi crea troppi problemi il problema è che al riavio del plc il valore del conteggio scritto nella db di appoggio della fm350 si azzera

2 ore fa, batta scrisse:

È da parecchio tempo che non uso quella scheda, e mi potrei anche sbagliare, ma sei proprio sicuro che il contatore non si possa inizializzare? Hai letto tutto il manuale? Ci deve essere una FB o SFB che ti permette di gestire ogni funzione del modulo.

nel manuale trovo dei valori che si riferiscono a "carica limite inferiore" e "carica limite superiore" ma non è specificato se si tratta dei limiti dei comparatori, di preset contatori non trovo niente, devo fae delle prove ma devo mettere insieme una stazione uguale a quella che sta lavorando su cui poter fare dei test

 

2 ore fa, batta scrisse:

Per memorizzare questo offset, non devi fare praticamente nulla, ti basta scriverlo, ad ogni ciclo, in una variabile di un DB. Nel 300 i DB, di default, sono ritentivi.
Alla riaccensione, ti troverai l'ultimo valore scritto.

vero ma se lo faccio ad ogni ciclo (L contatore T offset per intenderci) al riavvio mi troverei l'offset a zero è per questo che pensavo di mettere via i valori allo spegnimento del plc, per adesso faccio un backup a tempo in una db dei valori dei contatori, al riavvio scrivo i valori di backup su delle MD che poi vado a sommare al valore del contatore che sarà partito da zero così da avere una continuità di conteggio, così facendo però inevitabilmente perdo dei conteggi ma meglio che partire da zero.

 

comunque grazie a tutti per l'aiuto

Link al commento
Condividi su altri siti

Le seguenti istruzioni le esegui ad ogni ciclo:
L cntVal

L offset

+D

T nrLattine

 

In OB100 invece dovresti mettere queste:

L nrLattine

L cntVal

-D

T offset

 

Ma, siccome il contatore riparte da zero, in OB 100 puoi anche scrivere semplicemente:

L nrLattine

T offset

Link al commento
Condividi su altri siti

AlrOjM8.png

 

Dovresti avere in libreria tutti questi fc

kXAa8uU.png

 

la 350-2 non ho mai avuto occasione di usarla, ma avendo installato il pacchetto per la 350 ho a disposizione il pacchetto completo.

Non so quindi se possa esserti utile, ci provo :D

Link al commento
Condividi su altri siti

38 minuti fa, batta scrisse:

Ma, siccome il contatore riparte da zero, in OB 100 puoi anche scrivere semplicemente:

L nrLattine

T offset 

giusto mi piace

ma secondo te ob100 viene eseguito prima della reinizializzazione dei valori dei contatori oppure corro il rischio di trovare comunque zero visto che i valori vengono reinizializzati dalle fm350 prima dell'esecuzione di ob100 ?

Link al commento
Condividi su altri siti

Al riavvio, il valore del contatore non è zero "perché viene reinizializzato", ma è zero "perché non è ritentivo".

 

Fai una prova, ma vedrai che funziona.
Oppure, usa le funzioni indicate da DesmoGiec, e reinizializza il contatore col valore memorizzato.

 

Il fatto poi di perdere i valori nei moduli di conteggio allo spegnimento, non è una prerogativa Siemens, ma è comune, se non a tutti, alla stragrande maggioranza dei PLC.
 

Link al commento
Condividi su altri siti

L'OB 100 viene eseguito prima dell'OB1 all'accensione, siccome la FM la interroghi in OB1 il valore che hai in OB100 è quello dello spegnimento.

 

Questa tecnica la usiamo da molto tempo sulle nostre macchine dotate di FB350, e sino ad ora non ha mail sbagliato un colpo.

 

Link al commento
Condividi su altri siti

devo giustamente fare delle prove, ti dico che viene reinizializzato perchè il valore è contenuto nella db generata da una delle funzioni descritte da desmogiec quindi visto che tutte le db sono ritentive sarà l'elettronica della fm350 che resetta il tutto

 

Link al commento
Condividi su altri siti

Grazie proverò a fare come dite sfruttando ob 100 per salvare i dati. 

Ve ne dico un'altra ho messo insieme a banco per fare delle prove una stazione identica a quella in produzione ma con firmware diversi per fare delle prove ho caricato il programma e indovinate un po' ?

I conteggi al riavvio non si resettano!!

Proverò a copiare le db della FM dalla cpu e caricarle nel plc di prova per vedere se è un problema di firmware o di configurazione nelle db

Link al commento
Condividi su altri siti

Usavo le FM350 nel neolitico, più o meno 🙂 :  non erano FM350-2 come nel tuo caso, ma mi sembra impossibile che non si possa forzare il contatore ad un dato valore, con un bit. Con le FM350 lo si faceva scrivendo il valore in una word della DB di appoggio e impostando un bit chiamato "gate software". In alternativa c'era anche il "gate hardware", che faceva la stessa cosa ma a fronte di un segnale +24V in un ingresso della scheda.
 

FM350 gate.png

Link al commento
Condividi su altri siti

Grazie nicola

Il progetto non è mio, la gestione delle FM è più articolata non come hai scritto tu proverò a guardare meglio ma non vorrei stravolgerlo troppo. 

Sabato a impianti fermi farò le mie prove 

Pensavo di aggiornare il firmware alla versione più recente ma con le mie FM che probabilmente provengono dalla preistoria come le tue non è possibile 

Link al commento
Condividi su altri siti

Devi utilizzare i job.

Per azzerare il canale zero il job è 10, la scheda si inizializza con il valore contenuto in  LOAD_VAL0 del DB di canale.

Link al commento
Condividi su altri siti

grazie mario

Ci sono due schede che gestiscono 16 contatori mettere in pista 16 richieste di job e 16 doppi trasferimenti era troppo lungo, ti dico doppi trasferimenti perchè il job 10 è stato utilizzato per resettare i contatori.

Alla fine ho optato per la soluzione che avevo in mente fin dall'inizio,

utilizzando sfc20 nell ob100 ad ogni riavvio (come fa travelmen) sposto i valori dei contatori in una db di "backup" questi valori li vado a sommare al valore LOAD_VAL** di ogni singolo canale così da avere la continuità del conteggio (come diceva anche batta),alla richiesta di reset del contatore azzero anche il relativo valore di backup.

GRazie a tutti per il supporto e suggerimenti ci sentiamo alla prossima

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