Hallo Zusammen,
ich möchte die Zählimpulse eines Stromzählers (oder Wasseruhr) im EibPC auswerten und visualisieren.
Zur Berechnung des Momentanverbrauchs (bzw. Leistung) ist prinzipiell ja nur der Zeitraum zwischen zwei Zählimpulsen auszuwerten.
Dazu gibt es aber bisher zwei unterschiedliche Ansätze.
Bei meinem Ansatz messe ich über cycle(0,1) die Zeit zwischen zwei Zählimpulsen und setze die Zeitmessung anschließend auf Null zurück.
Beim Enertex kwH Makro wird etwas aufwendiger auf Basis eines durchlaufenden Timers die Anfangszeit t1 bei einem Zählimpuls festgehalten und beim nächsten Zählimpuls die Endzeit t2.
Mir ist bisher nicht klar, ob der etwas aufwendigere Weg Vorteile in der EibPC Abarbeitung hat.
Beide Ansätze führen aber zu dem Problem, dass zwischen einem sehr geringen Verbrauch (lange Zeit zwischen zwei Impulsen) und keinem Verbrauch (unendliche Zeit zwischen zwei Impulsen) nicht unterschieden werden kann.
Brick hat dazu bereits einen interessanten Ansatz mit einem zeitlich befristeten Timer zu arbeiten. Dieser läuft z.B. immer 30s hoch und fängt dann bei 0 an. Damit ist alles nach 30s kein Verbrauch. Nachteil ist, dass kleine Leistungen nicht zu sehen sind.
Hier mein aktueller Code:
[highlight=epc]
// Berechnung des Momentanverbrauchs in W aus den Impulsen des Stromzählers
// Der Umrechnungsfaktor ist auf dem Stromzähler abzulesen (z.B. Ferraris Stromzähler = 1/75kWh)
// Das heißt, bei 75 Umdrehungen in einer Stunde ist der Momentanverbrauch = 1kW.
// Momentanverbrauch = Umrechnungsfaktor * (Anzahl Umdrehungen / Zeit)
// P = UF * (n/t) [n in Anzahl, t in h]
// P = UF * n * 3600 / t [n in Anzahl, t in s]
// P = 1/75kW * n * 3600 / t [n in Anzahl, t in s]
// P = 48kW * n / t [n in Anzahl, t in s]
Stromzaehler_WP_Umdrehungszeit = 0u32
Stromzaehler_WP_Zaehlimpuls = convert("Stromzaehler Waermepumpe-8/0/2" * UF_Impulszaehler, 0u32)
Stromzaehler_WP_Momentanverbrauch = 0u32
if cycle(0,1) then \\
Stromzaehler_WP_Umdrehungszeit = Stromzaehler_WP_Umdrehungszeit + 1u32 \\
endif
if change(Stromzaehler_WP_Zaehlimpuls) then \\
Stromzaehler_WP_Momentanverbrauch = 48000u32 / Stromzaehler_WP_Umdrehungszeit; \\
Stromzaehler_WP_Umdrehungszeit = 0u32; \\
endif
[/highlight]
In dem dazugehörigem Chart wundern mich die relativ hohen Leistungen meiner Wärmepumpe (25.000W Peak Verbrauch bei einer 10kW Wärmepumpe ?!?).
Freue mich über jede Idee oder Anregung zu diesem Thema.
Viele Grüße
Michael
ich möchte die Zählimpulse eines Stromzählers (oder Wasseruhr) im EibPC auswerten und visualisieren.
Zur Berechnung des Momentanverbrauchs (bzw. Leistung) ist prinzipiell ja nur der Zeitraum zwischen zwei Zählimpulsen auszuwerten.
Dazu gibt es aber bisher zwei unterschiedliche Ansätze.
Bei meinem Ansatz messe ich über cycle(0,1) die Zeit zwischen zwei Zählimpulsen und setze die Zeitmessung anschließend auf Null zurück.
Beim Enertex kwH Makro wird etwas aufwendiger auf Basis eines durchlaufenden Timers die Anfangszeit t1 bei einem Zählimpuls festgehalten und beim nächsten Zählimpuls die Endzeit t2.
Mir ist bisher nicht klar, ob der etwas aufwendigere Weg Vorteile in der EibPC Abarbeitung hat.
Beide Ansätze führen aber zu dem Problem, dass zwischen einem sehr geringen Verbrauch (lange Zeit zwischen zwei Impulsen) und keinem Verbrauch (unendliche Zeit zwischen zwei Impulsen) nicht unterschieden werden kann.
Brick hat dazu bereits einen interessanten Ansatz mit einem zeitlich befristeten Timer zu arbeiten. Dieser läuft z.B. immer 30s hoch und fängt dann bei 0 an. Damit ist alles nach 30s kein Verbrauch. Nachteil ist, dass kleine Leistungen nicht zu sehen sind.
Hier mein aktueller Code:
[highlight=epc]
// Berechnung des Momentanverbrauchs in W aus den Impulsen des Stromzählers
// Der Umrechnungsfaktor ist auf dem Stromzähler abzulesen (z.B. Ferraris Stromzähler = 1/75kWh)
// Das heißt, bei 75 Umdrehungen in einer Stunde ist der Momentanverbrauch = 1kW.
// Momentanverbrauch = Umrechnungsfaktor * (Anzahl Umdrehungen / Zeit)
// P = UF * (n/t) [n in Anzahl, t in h]
// P = UF * n * 3600 / t [n in Anzahl, t in s]
// P = 1/75kW * n * 3600 / t [n in Anzahl, t in s]
// P = 48kW * n / t [n in Anzahl, t in s]
Stromzaehler_WP_Umdrehungszeit = 0u32
Stromzaehler_WP_Zaehlimpuls = convert("Stromzaehler Waermepumpe-8/0/2" * UF_Impulszaehler, 0u32)
Stromzaehler_WP_Momentanverbrauch = 0u32
if cycle(0,1) then \\
Stromzaehler_WP_Umdrehungszeit = Stromzaehler_WP_Umdrehungszeit + 1u32 \\
endif
if change(Stromzaehler_WP_Zaehlimpuls) then \\
Stromzaehler_WP_Momentanverbrauch = 48000u32 / Stromzaehler_WP_Umdrehungszeit; \\
Stromzaehler_WP_Umdrehungszeit = 0u32; \\
endif
[/highlight]
In dem dazugehörigem Chart wundern mich die relativ hohen Leistungen meiner Wärmepumpe (25.000W Peak Verbrauch bei einer 10kW Wärmepumpe ?!?).
Freue mich über jede Idee oder Anregung zu diesem Thema.
Viele Grüße
Michael
Kommentar