Habe gestern wieder einen netten Bautein gebastelt, der sicher auch für andere interessant ist.
Funktion:
- Aus einem Impulssignal (1-0-1-0... zB von einem Stromzähler) wird über dt zwischen 2 Impulsen auf die aktuelle Leistung (oder Regenintensität, etc.) umgerechnet und ausgegeben
- Mit einem weiteren Parameter Min-Interval werden kürzere Impulse nur gezählt und die Zeit zwischengespeichert und erst beim nächsten Impuls nach Überschreiten von dt_min der Mittelwert dieser Impulse gesendet.
- Impulssignal: Hier muss das Impulssignal verbunden werden.
- Min. Interval: Mindest Interval, bevor ein neuer Wert am Ausgang Leistung2 ausgegeben wird.
- Umrechnungsfaktor: Gibt an wie 2 Impuls in den Ausgang umgerechnet werden sollen, siehe unten.
- Leistung1: bibt die Berechnete Leistung auf Basis der letzten 2 Impulse aus (unabhängig von Min. Interval)
- Leistung2: Wird nur ausgegeben, wenn die Zeit seit dem letzten Senden "Min. Interval" überschritten hat (Impulse werden seit dem letzten Senden korrekt gemittelt).
Im Beispiel unten 3600 - warum? Die Impulse sind 0,001kWh/Impuls. Daher würde bei Faktor 1 die Leistung in [Wh/sec] angegeben werden.
Daher wir mit 3600 [sec/h] multipliziert und man erhält die Leistung in [W] Watt.
Nutzungsrechte:
Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
Code: Alles auswählen
/**=====================================================================
Umrechnung von Impulsen in Leistung.
Ausgang 1 wird mit jedem Impuls aktualisiert
Ausgang 2: wird nur nach Überschreitung von Min. Intervall neu
berechnet, kürzere Impulse werden gemessen/gezählt und gemittelt.
======================================================================*/
{
"Level": [
["$In","bool",false],
["$Output","bool",false],
["$TimeHigh","float",0.0],
["$TimeLow","float",0.0],
["$Time","float",0.0],
["$TimeLast","float",0.0],
["$Umrechnung","float",3600.0],
["$dt_min","float",5.0],
["$Leistung1","float",0.0],
["$Leistung2","float",0.0],
["$Leistung2A","float",0.0],
["$Zaehler","integer",0.0],
["$Konst1","float",1.0],
["$Konst0","float",0.0]
],
"Module": [
["Stopwatch","$In","$TimeHigh"],
["Stopwatch","-$In","$TimeLow"],
// Letztes dt übernehmen
["Multiplexer",["$TimeHigh","$TimeLow"],"$Time","$In"],
// Leistung1 berechnen
["Ratio", "$Umrechnung", "$Leistung1", "$Time"],
// Anzahl Impuls erhöhen und Impulsdauer zum gespeicherten Wert addieren
["Polynomial","$Konst1","$Zaehler",["$Zaehler", "$Konst1"]],
["Polynomial","$Konst1","$TimeLast",["$Time", "$TimeLast"]],
// Prüfen, ob dt > dt_min
["Comparator","$TimeLast" ,"$Output" , "$dt_min"],
// Leistung2 berechnen
["Ratio", "$Umrechnung", "$Leistung2A", "$TimeLast"],
["Polynomial","$Zaehler","$Leistung2A",["$Konst0", "$Leistung2A"]],
// Leistung 2 nur übernehmen, wenn dt > dt_min
["Multiplexer",["$Leistung2","$Leistung2A"],"$Leistung2","$Output"],
// Zaehler = 0; Summe Impulsdauer = 0
["Multiplexer",["$Zaehler","$Konst0"],"$Zaehler","$Output"],
["Multiplexer",["$TimeLast","$Konst0"],"$TimeLast","$Output"]
],
"Output": [
["Leistung1","Leistung","$Leistung1","c"],
["Leistung2","Leistung","$Leistung2","c"]
// ["TimeHigh","Zeit Zustand EIN","$TimeHigh","c"],
// ["TimeLow","Zeit Zustand AUS","$TimeLow","c"],
// ["Time","Time","$Time","c"],
// ["TimeLast","Time","$TimeLast","c"],
// ["Zaehler","Zaehler","$Zaehler","c"]
],
"Input": [
["Impulssignal","Eingang Impulssignal alternierend 1-0-1-0","$In","c"],
["Min. Interval","Minimaler Impulsabstand für Leistungsauswertung und Senden","$dt_min","c"],
["Umrechnungs- Faktor","tbd","$Umrechnung","c"]
]
}
/**Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht. */