giomony Inserito: 7 giugno 2017 Segnala Inserito: 7 giugno 2017 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
84paolo Inserita: 7 giugno 2017 Segnala Inserita: 7 giugno 2017 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
giomony Inserita: 8 giugno 2017 Autore Segnala Inserita: 8 giugno 2017 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.
Livio Orsini Inserita: 8 giugno 2017 Segnala Inserita: 8 giugno 2017 I casi sono 2: La variabile non è nell'area a ritenzione perchè hai fatto qualche errore di programmazione La variabile viene azzerata alla partenza perchè viene scritta in una funzione che esegui ad ogni ripartenza del programma.
84paolo Inserita: 8 giugno 2017 Segnala Inserita: 8 giugno 2017 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.
giomony Inserita: 8 giugno 2017 Autore Segnala Inserita: 8 giugno 2017 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.
batta Inserita: 8 giugno 2017 Segnala Inserita: 8 giugno 2017 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.
giomony Inserita: 8 giugno 2017 Autore Segnala Inserita: 8 giugno 2017 La portata istantanea moltiplicata per il tempo passante incrementa ma quando riparte il valore scritto in precedenza ritorna a zero. Come faccio a mantenerlo?
Livio Orsini Inserita: 8 giugno 2017 Segnala Inserita: 8 giugno 2017 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.
carlodi Inserita: 9 giugno 2017 Segnala Inserita: 9 giugno 2017 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
giomony Inserita: 10 giugno 2017 Autore Segnala Inserita: 10 giugno 2017 Eppure ogni volta che riparte,un attimo prima rimane memorizzata e poi risommando la rigenera minore.
batta Inserita: 10 giugno 2017 Segnala Inserita: 10 giugno 2017 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?
Livio Orsini Inserita: 10 giugno 2017 Segnala Inserita: 10 giugno 2017 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.
NoNickName Inserita: 10 giugno 2017 Segnala Inserita: 10 giugno 2017 Invece usare un contatore volumetrico con lancia impulsi e contare gli impulsi?
batta Inserita: 10 giugno 2017 Segnala Inserita: 10 giugno 2017 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.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora