Vai al contenuto
PLC Forum


Calcolo Kwh Cp1L


gianff

Messaggi consigliati

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: da gianff
Link al commento
Condividi su altri siti


Giuseppe Signorella

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: da Giuseppe Signorella
Link al commento
Condividi su altri siti

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 display


Ovviamente tutto ciò funziona coi valori in virgola mobile.

Link al commento
Condividi su altri siti

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

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