gianff Inserito: 9 gennaio 2014 Segnala Share Inserito: 9 gennaio 2014 (modificato) dovrei mettere a monitor hmi ns12 il consumo in kwh di alcune resistenze 200w 500w 1000w con scala in minuti minimo 1 minuto per ora im modo semplice ma con errore causa la virgola esempio ricavo il consumo in minuti 1000w : 60min = 16,66666 ( arrotondo a 17 ) ho fatto a leader /U 1 (minuti) 17 =risultato 17w /U 60 (minuti ) 17 = risultato 1020w ---- ( qui ho un errore di +20w ) ogni ora in pratica come faccio a moltiplicare i minuti per 16,6666 e ottenere 1000w nel caso di resistenza 200w : 60min = 3,33333 ( non seprei come arrotondare ) 60 x 3 = 180w 60 x 4 = 240w avrei troppo errore trascurando la virgola ps. per il calcolo del tempo di funzinamento resistenza incremento un teporizzatore che ogni minuto mi incrementa un conteggio minuti Modificato: 9 gennaio 2014 da gianff Link al commento Condividi su altri siti More sharing options...
Giuseppe Signorella Inserita: 9 gennaio 2014 Segnala Share Inserita: 9 gennaio 2014 (modificato) Scusami, ma per quale motivo non puoi effettuare l'operazione con la virgola? Tronca semplicemente il numero periodico lasciando le prime due cifre dopo la virgola. Mi sembra più razionale. Modificato: 9 gennaio 2014 da Giuseppe Signorella Link al commento Condividi su altri siti More sharing options...
gianff Inserita: 10 gennaio 2014 Autore Segnala Share Inserita: 10 gennaio 2014 il plc lavora in binario quale funzione debbo usare Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 10 gennaio 2014 Segnala Share Inserita: 10 gennaio 2014 Il trucco per arrotondare correttamente i valori in virgola mobile sta nell'aggiungere metà della più piccola cifra voluta (per numeri positivi). Altrimenti i valori sono troncati. Spiego meglio. Supponiamo di avere 1234,56 e voglio arrotondare all'intero. Per le regole di arrotondamento dovrei ottenere 1235, ma il troncamento mi dà 1234. Per ottenere il risultato voluto, basta aggiungere 0,5 al valore (metà dell'unità) e quindi avremo 1235,06 che viene arrotondato a 1235. Stessa cosa la si può fare per i decimali. Se voglio una precisione al secondo decimale, sommo 0,005 (metà del secondo decimale) e ottengo l'arrotondamento voluto. Puoi inserirlo come somma diretta nel PLC o come piccola macro nel displayOvviamente tutto ciò funziona coi valori in virgola mobile. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 10 gennaio 2014 Segnala Share Inserita: 10 gennaio 2014 Se si hanno solo gli interi e si vuole ridurre l'effetto della perdita di precisione dovuta al troncamento del resto delle operazioni sugli interi, ci sono più strade. Innanzi tutto, prima moltiplica e poi dividi. Lavorando con numeri più grandi, perdi meno nel troncamento del resto. Facciamo il tuo esempio dei 1000W per 120min. (per non avere due volte 60...) Invece di fare (1000/60)*120 => 16.66667*120 => 17*120 => 2040W/h (delta +40W/h) fai (1000*120)/60 => 120000/60 => 2000W/h (delta 0W/h !!!!) La cosa a cui fare attenzione è ad usare variabili di capacità giusta, nell'esempio sopra una DINT per il risultato intermedio 120000 che altrimenti sarebbe troncato Pertanto non devi usare funzioni strane, ma solo usare un diverso ordine per le operazioni, magari facendoti una micro FB se è un'operazione da fare in diversi punti del programma... Link al commento Condividi su altri siti More sharing options...
gianff Inserita: 10 gennaio 2014 Autore Segnala Share Inserita: 10 gennaio 2014 ok Ctec questo direi che va bene fai (1000*120)/60 => 120000/60 => 2000W/h (delta 0W/h !!!!) 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