Vai al contenuto
PLC Forum


Totalizzare metricubi passanti


Messaggi consigliati

Inserito:

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


Inserita:

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

Inserita:

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.

Inserita:

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

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.

Inserita:

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.

Inserita:

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.

 

Inserita:

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

Come faccio a mantenerlo?

 

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

Inserita:

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

Inserita:

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

Inserita:

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?
 

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

Inserita:

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

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

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