Seite 1 von 1

Leistungberechnung aus Impulszähler mit Telegrammratenbegrenzung

Verfasst: Fr Nov 08, 2019 8:02 am
von Robert_Mini
Hallo zusammen!

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.
Ein-/Ausgänge:
  • 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).
Umrechnungsfaktor:
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.

Impuls_Leistung.png

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

Re: Leistungberechnung aus Impulszähler mit Telegrammratenbegrenzung

Verfasst: Fr Nov 08, 2019 8:22 am
von StefanW
Wow Robert,

das ist sehr gut! Gute Idee eine Abschätzung zu machen gemäß dem Abstand zwischen zwei Impulsen, das führ zu sehr aktuellen Werten und auch die Telegrammratenbegrenzung! Bin begeistert. Wir haben bei uns so ein Impulszählermodul, das müssen wir gleich mal einbauen..

lg

Stefan

Re: Leistungberechnung aus Impulszähler mit Telegrammratenbegrenzung

Verfasst: Fr Nov 08, 2019 8:37 am
von Robert_Mini
Danke!
Wobei Abschätzung fast eine Untertreibung ist.
Wenn ich die Werte mit der Anzeige des geeichten Zählers vergleiche, dann ist das max. 1% oder weniger.
Warum auch ? Ein paar ms bei ein paar sec. Messdauer sind <1%.

Lg
Robert

Re: Leistungberechnung aus Impulszähler mit Telegrammratenbegrenzung

Verfasst: Fr Nov 08, 2019 8:47 am
von StefanW
Yeah, sehr gut, dachte der Jitter wäre größer.

==> Ersetze "Abschätzung" durch "präzise Berechnung" :clap: :clap: :clap:

Stefan