Vai al contenuto
PLC Forum


Totalizzare metricubi passanti


giomony

Messaggi consigliati

Buongiorno a tutti

Qualcuno può aiutarmi a risolvere il mio problema con un programma che sto realizzando con cpu 1215C?

Praticamente ho un segnale in ingresso 4-20mma il quale convertito riesco a capire i metricubi passanti di acqua,e fin tutto ok.

Il problema nasce nel momento in cui vorrei totalizzare i miei metri cubi passanti giornalier,perchè fino a quando il sistema è in funzione totalizza,ma poi quando si ferma e riparte non mi tiene in memoria il dato totalizzato ma riparte da 0.

Ho fatto diventare nella mia db la variabile di lettura totalizzante ritenuta,ma non funziona.

Grazie

Link al commento
Condividi su altri siti


Devi spiegare meglio come realizzi il totalizzatore.

Se leggi quello del massico o lo realizzi tu con qualche calcolo.

Se lo realizzi tu e sommi un valore ad una variabile non può azzerarsi, a meno che non lo azzeri tu. Spiega meglio come realizzi il tutto

Link al commento
Condividi su altri siti

Si scusami...praticamente il mio ingresso analogico ( 4-20 ma ) faccio la conversione matematica per ottenere i metricubi passanti/h,poi prendo il valore ottenuto e lo divido per 3600 ottenendo i metricubi/s poi moltiplico questo valore ottenuto per il tempo passante nel momento in cui inizia a leggere il passaggio dell'acqua e man mano che legge il valore giustamente incrementa fino a x valore.

Se poi faccio ripartire il tutto il mio valore viene di nuovo azzerato e nonostante questa variabile l'ho trasformata in ritentiva non funziona.

Praticamente vorrei che i metricubi totali passati rimangano invariati e alla prossima lettura incrementano nuovamente,anche se ci fosse uno spegnimento totale.

Link al commento
Condividi su altri siti

I casi sono 2:

  1. La variabile non è nell'area a ritenzione perchè hai fatto qualche errore di programmazione
  2. La variabile viene azzerata alla partenza perchè viene scritta in una funzione che esegui ad ogni ripartenza del programma.
Link al commento
Condividi su altri siti

Per fare il conteggio dovresti fare in una scansione a tempo di un secondo il seguente calcolo.

Prendi la tua word ( o real ) di riferimento e ogni secondo gli sommi il tuo valore di ( portata/3600 ) e quindi ti trovi il totale dei metri cubi.

Link al commento
Condividi su altri siti

Rispondo a Livio

Ma nella mia db dati posso mettere la spunta su ritenzione.La mia variabile è una Lreal.

Rispondo a Paolo

Già fatto ma quando riparte con una nuova lettura riscrive il dato da 0 e quello che non capisco è come fagli mantenere quello vecchio sommando il nuovo.

Link al commento
Condividi su altri siti

Una variabile non va a zero da sola.

 

Quote

poi prendo il valore ottenuto e lo divido per 3600 ottenendo i metricubi/s poi moltiplico questo valore ottenuto per il tempo passante nel momento in cui inizia a leggere il passaggio dell'acqua e man mano che legge il valore giustamente incrementa fino a x valore.

O hai descritto male quello che stai facendo, o si tratta di una cosa completamente diversa da quanto scritto da "84paolo".

Da quanto capisco, tu moltiplichi la portata istantanea per il tempo. Se la portata va a zero, anche il risultato diventa zero.

 

Link al commento
Condividi su altri siti

La portata istantanea moltiplicata per il tempo passante incrementa ma quando riparte il valore scritto in precedenza ritorna a zero.

Come faccio a mantenerlo?

 

Link al commento
Condividi su altri siti

Quote

Già fatto ma quando riparte con una nuova lettura riscrive il dato da 0 ...

 

Forse riesco ad indovinare cosa fai: riscrivi a zero la variabile senza renderte conto.

 

Tu sei arrivato ad ottenere la portata in m3/1"

Ammettiamo che tu faccia la lettura ogni 10".

Moltiplichi il valore letto per 10 ed ottieni i metr cubi fluiti negli ultimi 10; per comidità questo valore lo memorizziamo in una variabile chiamata "deltaportata".

Hai il "Totale_portata" memorizzato in una LREAL.

Devi fare Totale_totale portata = (Totale_portata + deltaportata).

Se hai assegnato Totale_portata in un'area di memoria a ritenzione avrai memorizzato sempre l'ultimo valore scritto.

Link al commento
Condividi su altri siti

Ciao giomony,

Considerando che, da quello che capisco , tu moltiplichi i metricubi/s per il tempo passato, potrebbe essere che azzeri (nella programmazione) in qualche modo il tempo a 0 

io proverei a fare cosi. (lasciando perdere la moltiplicazione)

una volta che determini ma portata in metri cubi/secondo (che presuppongo possa essere variabile)... ogni secondo sommerei ciclicamente quel valore ad una variabile "totalizzatore"....in questo modo e' difficle che quella variabile vada a zero.

 

Ciao

Link al commento
Condividi su altri siti

Continuiamo a girarci intorno ma, fino a quando non capiremo cosa hai fatto, è difficile individuare l'errore.
Perché non posti un'immagine con la parte di programma interessata?
 

Link al commento
Condividi su altri siti

Quote

Eppure ogni volta che r Eppure ogni volta che riparte,un attimo prima rimane memorizzata e poi risommando la rigenera minore.

 

Cosa significa minore?

Nella variabile si trova l'ultimo valore scritto.

Escludendo l'intrvento di alieni, folletti dispettosi, o altre potenze sovra naturali rimane solo il programma che può scrivere in quella locazione di memoria.

Quindi esamina il programma e fai come suggerisce Batta.

Link al commento
Condividi su altri siti

Quote

Invece usare un contatore volumetrico con lancia impulsi e contare gli impulsi?

È praticamente la stessa cosa.

Il fatto è che, da quanto scrive "giomony", sembra che moltiplichi il tempo per il flusso, e non che sommi ad intervalli di tempo regolari il flusso moltiplicato per l'intervallo di tempo.

Ma fino a quando non pubblicherà il suo programma, possiamo solo fare supposizioni.

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