Vai al contenuto
PLC Forum


Calcolo Di Kw.........


VINZENT

Messaggi consigliati

Salve,

S7 224 con pannello TP177 Micro.

Ho collegato un contatore di kWh per avere sul mio pannello il totale dei kw consumati.

fin qui' tutto ok....

ma ora vorrei fare un'altra cosa,vorrei avere il consumo istantaneo cioe' un puro e vero wattametro.

Avendo il mio contatore di kW (abb) dove mi tira fuori un'impulso ogni kw consumato e volendo un vedede i vat al momento,pensavo di dividere 1000 (watt ora) per 60 minuti = 16,6 wat al minuto.

I watt al minuto dividerli per 60 secondi = 0,27watt al secondo.

Sapendo quanti watt consumo al secondo,basterebbe moltiplicare 0,27 watt al secondo per il tempo intercorso tra impulso ed impulso? :blink:

si ma come? :unsure:

e se vorrei fare una cosa piu' immediata? cioe' su decimi'

grazie :)

Link al commento
Condividi su altri siti


Un solo impulso per ogni kW mi sembra poco per il tuo scopo, immagina di consumare 1kW/h, avresti un impulso all'ora e quindi una variazione della cifra visualizzata sul display ogni ora, se comsumi 10kW/h va un po meglio, ma non troppo... la variazione ce l'hai ogni 6 minuti.

Comunque per calcolare i watt istantanei (con aggiornamento della cifra ogni volta che arriva un impulso) puoi usare le funzioni BGN_ITIME e CAL_ITIME che funzionano grossomodo come un cronometro (con i millesimi di secondo), quando arriva il fronte dell'impulso calcoli i watt istantanei così:

W=3600000000/tempo_trascorso

Naturalmente usi tutte variabili DWORD. ;)

Link al commento
Condividi su altri siti

Ringrazio anticipatamente per la tua collaborazione.

Prendendo il manualetto del contatore di kwh ho letto che lo strumentino puo' essere settato per 1,10,100,1000 impulsi/kwh.

Quindi siamo a cavallo (credo)

Se setto lo strumentino per 1000 impulsi/kwh il risultato dovrebbe essere molto piu' preciso.

Ma non ho capito come dovrei gestire questo calcolo e non ho capito cose' 3600000000

Tenendo presente che la l'unghezza dell'impulso dato dallo strumento e' di 100 ms

saluti.

Link al commento
Condividi su altri siti

Forse ci sono,provo:

- 1 watt ogni x decimi di secondo in base al consumo energetico.

-100 decimi per 60 secondi= 6000 milli per 60 minuti= 360000 millisecondi per avere un'ora

-supponiamo che io abbia 1 watt ogni 10 secondi quanti watt istantanei sto' consumando?

-10 secondi e' uguale a 1000 millisecondi

-basterebbe dividere i 360000 millisecondi per il tempo intercorso tra watt e watt e quindi 1000 millisecondi = 360 watt

:blink::unsure:;):huh:

Link al commento
Condividi su altri siti

Non sono riuscito a seguire bene il tuo ragionamento, ma stai confondendo i millisecondo con i centesimi di secondo.

1 secondo = 1000 ms

1 minuto = 60 secondi = 60000 ms

1 ora = 60 minuti = 3600 secondi = 3600000 ms

A parte questa precisazione (sicuramente si è trattato di una piccola svista), io direi che potresti risolvere il problema in due modi:

1) contare il numero di impulsi ad intervalli di tempo fisso

2) misurare il tempo trascorso tra due impulsi

Se utilizzi il primo metodo più impulsi hai meglio è. Attenzione però a non superare la frequenza di impulsi leggibile da un normale ingresso del plc, altrimenti devi gestire anche un contatore veloce. Penso, inoltre, che l'uscita del contatore non possa arrivare a frequenze troppo elevate.

Se utilizzi il secondo metodo devi configurare il contatore in modo che il tempo tra due impulsi non sia né troppo lungo (pena un aggiornamento troppo lento della lettura), né troppo breve (pena una lettura imprecisa).

Per decidere, prima di tutto, come configurare il contatore, si dovrebbe sapere quali sono le potenze in gioco. Se si parla di utenza casalinga (quindi limite massimo dell'ordine di alcuni kW) potresti configurare il contatore per darti 1000 impulsi/kWh, ovvero 1 impulso ogni Wh. Per ragionare con i numeri, in caso di assorbimento di potenza di 2kW in un'ora ti troveresti ad avere 2000 impulsi, ovvero 1 impulso ogni 1,8 secondi.

Se l'assorbimento scende a 200W avresti invece un impulso ogni 18 secondi.

Con potenze di quest'ordine per utilizzare questo sistema dovresti fare il calcolo della potenza ad intervalli relativamente lunghi, diciamo dell'ordine dei 5 minuti. Come alternativa potresti fare i calcoli ad intervalli più brevi ma dovresti fare una media di un certo numero di valori per rendere la lettura più stabile.

Questo metodo quindi lo vedrei adatto se le potenze in gioco sono dell'ordine delle decine di kW.

Con questo sistema per calcolare la potenza dovresti applicare la seguente formula:

        N_Impulsi * 3600
P = ------------------------
           K * Tempo
Dove: P = potenza in kW N_Impulsi = numero di impulsi contati K = impulsi per kWh (configurati nel contatore) Tempo = tempo in secondi nel quale sono stati contati gli impulsi Diamo ora un'occhiata al secondo metodo (misura del tempo tra due impulsi). Rimanendo sempre nel campo di potenze di ordine casalingo e configurando il contatore sempre per 1000 impulsi/kWh con assorbimenti elevati (per questo tipo di utenza), avresti circa 1 impulso al secondo (potenza 4kW = 1 impulso ogni 0,9 secondi), mentre con basse potenze impegnate avresti impulsi piuttosto distanziati (potenza 200W = 1 impulso ogni 18 secondi. Tempo questo che comunque io considero ancora breve per il tipo di impiego). Con questo sistema per calcolare la potenza dovresti applicare la seguente formula:
         3600
P = --------------
      K * Tempo

La formula è uguale a quella di prima, solo che il numero di impulsi è 1.

Dove:

P = potenza in kW

K = impulsi per kWh (configurati nel contatore)

Tempo = tempo misurato tra due impulsi in secondi

Link al commento
Condividi su altri siti

Io ho optato per la seconda.

Solo che utilizzando BGN_ITIME e CAL_ITIME che lavorano come cronometro ho un problema:

mi contano la lunghezza del singolo impulso del contatore di kw cioe' i 100ms.

cosa dovrei fare?

Link al commento
Condividi su altri siti

Un sistema molto semplice per calcolare il tempo intercorso tra due impulsi è il seguente:

//Questo segmento deve essere tassativamente scritto in OB1.
L #OB1_PREV_CYCLE            // Tempo in millisecondi ultima scansione
T TempoUltimaScansione       // Variabile di appoggio (INT)

//Questo segmento può essere scritto dove ti fa più comodo, per esempio in una FC dedicata al calcolo della potenza
L TempoDaUltimoImpulso       // Tempo trascorso da precedente impulso (DINT)
L TempoUltimaScansione
ITD
+D
T TempoDaUltimoImpulso

U IN_Impulso        // Impulso dal contatore
FP XFP_Impulso     // Ausiliario per fronte positivo impulso
SPBN
M000

L 3600.0                // Costante in formato REAL valida nel caso di 1000 impulsi per kWh e che tiene già conto del fatto
                            // che il tempo trascorso dal precedente impulso è in millisecondi
L TempoDaUltimoImpulso
DTR
/R
T Potenza            // Potenza calcolata in kW (formato REAL)

L L#0
T TempoDaUltimoImpulso       // Azzero tempo trascorso
M000: NOP 0

Ho avuto occasione più volte di utilizzare questo sistema per calcolare il tempo trascorso da un certo evento, e ti posso assicurare che è piuttosto preciso.

Modificato: da batta
Link al commento
Condividi su altri siti

jump:

il tuo non capisco alcune cose:

il primo segmento la transazione positiva non va' e "m_fronte 1" e' un marker?

secondo e terzo segmento tutto chiaro

il quarto

-"AC1" cose' un'area di memoria?

-rImpulsi-kwh? quindi dovrei moltiplicare 1000 impulsi per il tempo?

-3.6E+009 a quanto corrisponde?

mi scuso per la mia poca esperienza

saluti.

Link al commento
Condividi su altri siti

"m_fronte 1" e' un marker

AC1 e AC2 sono due registri accumulatori, sono etichette riconosciute dal compilatore, puoi usare una qualsiasi DWORD al loro posto, anche se è più comodo usare i registri

3.6E+009 ==> 3.600.000.000 (tre miliardi e seicento milioni)

livio ci ho provato....ma non viene

Se non funziona la conversione ti dice dove c'è l'istruzione non riconosciuta, verifica perchè non viene riconosciuta e correggi l'errore. Le variabili simboliche usate, per esempio, le hai assegnate?

Link al commento
Condividi su altri siti

Mi sa che l'esempio di Bata è scritto in AWL per S7-300 :rolleyes:

Per quanto riguarda il mio esempio ti ha risposto Livio, ho scritto volutamente i simboli così per capire il tipo di variabili, se iniziano per m sono Merker, se iniziano per vd sono doppie word della DB1, se iniziano per r sono real.

Ulteriori spiegazioni:

1) Il fronte positivo del tuo ingresso (I0.0) genera un impulso sul Merker mFronte1

2) Questo impulso viene usato per calcolare vdTempo_ms (il tempo trascorso dall'impulso precedente), la prima lettura non indicherà un valore corretto ma il segmento è stato messo qui apposta altrimenti non può calcolare il tempo tra un impulso e il successivo.

3) Con l'impulso viene inizializzato il "cronometro" (scrivo cronometro per semplificare)

4) Sempre con l'impulso vengono calcolat i Watt con la formula riportata da batta nei post precedenti : P= 3600/(K* Tempo)

Al posto di K ho messo rImpulsi_kWh (qui devi inserire il valore impulsi/kWh, quindi se il tuo contatore ti fornisce 10 impulsi ogni kW inserirai 10.0)

Al posto di 3600 ho messo 3.600.000.000 perchè il cronometro lavora con i millisecondi (e non con i secondi) e per avere il risultato in W (come richiesto) anzichè in kW.

Ciao ;)

Modificato: da JumpMan
Link al commento
Condividi su altri siti

BATA il tuo non riesco a scriverlo in S7 200 perche perche' io scrivo in KOP

Scusa, solo ora mi sono accorto che tu parlavi di S7-200.

Il mio codice, come precisato da JumpMan, è per S7-300.

Link al commento
Condividi su altri siti

Ho provato ad eseguire quello di jump,mi sembra molto piu' alla portata per le mie capacita'.

non va' ila transazione positiva e non solo,anche se la togliessi il calcolo finale di watt mi tira fuori 3.600.000.000.0 diviso 1000.0 =3.600.000 ma questa e' fissa.

:huh:

Link al commento
Condividi su altri siti

Mi pare che ci siano vincoli sull'estensione del file da allegare. Comprimilo ed allegalo come .zip.

Puoi anche postare la parte del codice che interessa visualizzandolo in awl e facendo un semplice copia/incolla.

Link al commento
Condividi su altri siti

l'ho convertito in AWL

segmento 1

LDN I0.0

EU

BITIM VD100

segmento 2

LDN I0.0

CITIM VD100, VD104

segmento 3

LDN I0.0

DTR VD104, VD110

AENO

MOVR 3600000.0, VD114

/R VD110, VD114

segmento 4

LD I0.0

MOVR VD120, VD124

Link al commento
Condividi su altri siti

Il segmento 2 e 3 non sono elaborati sul fronte ma ciclicamente, questo non va bene perchè vedresti in VD114 un valore che parte da 0 e aumenta fino al valore corretto, o meglio quasi corretto perchè perde una parte del conteggio (tutto il tempo in cui l'ingresso rimane ON non viene conteggiato).

Il segmento 4 non si capisce bene a cosa serva... forse al posto di VD120 volevi mettere VD114 per avere la lettura "stabile" su VD124 ?

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