KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

Leistungberechnung aus Impulszähler mit Telegrammratenbegrenzung

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

Leistungberechnung aus Impulszähler mit Telegrammratenbegrenzung

#1

Beitrag 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. */
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Robert_Mini am So Feb 09, 2020 5:13 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

StefanW
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 10704
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5303 Mal
Danksagung erhalten: 8685 Mal
Kontaktdaten:

#2

Beitrag 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
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Ersteller
Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#3

Beitrag 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
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

StefanW
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 10704
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5303 Mal
Danksagung erhalten: 8685 Mal
Kontaktdaten:

#4

Beitrag von StefanW »

Yeah, sehr gut, dachte der Jitter wäre größer.

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

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Antworten

Zurück zu „Zusätzliche Logikbausteine“