Frank681 Inserito: 22 dicembre 2015 Segnala Share Inserito: 22 dicembre 2015 SalveSul Sito support SIEMENS ho trovato un totalizzatore che volevo usare per avere i totali dei consumi del mio impioanto , tutto funziona bene per un po poi arrivati al valore 1.35...+05 si blocca e non conteggia piu' vi sono anche i sorgenti in awl , ho notato che i numeri sono definiti come real per cui dovrei avere un campo maggiore di totalizzazione se volessi un totalizzatore continuo come posso fare ? I consumi dopo un anno saranno elevati. Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 22 dicembre 2015 Segnala Share Inserita: 22 dicembre 2015 Posti l'esempio. Link al commento Condividi su altri siti More sharing options...
Frank681 Inserita: 22 dicembre 2015 Autore Segnala Share Inserita: 22 dicembre 2015 Ciao acquamanecco il listato awl che mi genera il blocco , da sito siemens FUNCTION_BLOCK FB 100VAR_INPUT VALUE : REAL ; // Measured value per time interval INTERVAL : TIME ; // Time interval unit of measurement CYCLE : TIME ; // Sampling time COM_RST : BOOL ; // Clear accumulated totalEND_VARVAR_OUTPUT TOTAL : REAL ; // Accumulated total valueEND_VARVAR ACCUM : REAL ; // Accumulated total value (static storage)END_VARVAR_TEMP tINTERVAL : REAL ; // Temp. time INTERVAL in REAL format tCYCLE : REAL ; // Temp. CYCLE time in REAL formatEND_VARBEGINNETWORKTITLE =check for a complete reset u #COM_RST; spbn nw2; L 0.000000e+000; T #ACCUM; T #TOTAL; SET ; SAVE ; BEa ; NETWORKTITLE =convert INTERVAL and CYCLE to REAL numbersnw2: NOP 0; L #INTERVAL; DTR ; T #tINTERVAL; L #CYCLE; DTR ; T #tCYCLE;NETWORKTITLE =add incremental value to accumulated and total values L #VALUE; L #tCYCLE; *R ; L #tINTERVAL; /R ;// now that incremental value is calculated,// add this to the accumulated value// and send it to the output TOTAL L #ACCUM; +R ; T #ACCUM; T #TOTAL;NETWORKTITLE =exit SET ; SAVE ; Bea ;END_FUNCTION_BLOCKgrazie dell apazienza Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 22 dicembre 2015 Segnala Share Inserita: 22 dicembre 2015 I numeri reali arrivano a valori molto più elevati, non capisco guardando il listato dove sia il problema. Link al commento Condividi su altri siti More sharing options...
Frank681 Inserita: 22 dicembre 2015 Autore Segnala Share Inserita: 22 dicembre 2015 infatti anche io ma si blocca e non mi prosegue se resetto riparte , oggi ho resettato vediamo quando si blocca di nuovo..grazie mille Link al commento Condividi su altri siti More sharing options...
Reverendo bit Inserita: 23 dicembre 2015 Segnala Share Inserita: 23 dicembre 2015 Ciao,A me è già successo una cosa simile, i numeri real a singola precisione (32 bit) hanno una limitazione, cioè, se tenti di sommare 1 ad un numero real troppo grande non lo somma più perchè c'è una grande differenza tra le mantisse.In realta il real non può rappresentare propio tutti i numeri.Il mio totalizzatore erà una portata e come te la somma si fermava fino ad un certo punto, ho risolto facendo incrementare il real fino ad un milione di m3, al raggiungimento del milione azzero il real ed incremento una variabile DINT di una unità.questa è la discussione se ti può interessare.Somma tra RealSaluti. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 23 dicembre 2015 Segnala Share Inserita: 23 dicembre 2015 Il formato REAL è approssimato. Per questo motivo va bene per i calcoli, ma non per i totalizzatori. L'incremento di una unità si perde quando arrivi a valori intorno ai 16 milioni.Per un totalizzatore, meglio usare un DINT. Link al commento Condividi su altri siti More sharing options...
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