NEU! UPGRADE IP 10 verfügbar!
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

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: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1171 Mal
Danksagung erhalten: 2076 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
Reactions:
Beiträge: 9771
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4878 Mal
Danksagung erhalten: 7805 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: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1171 Mal
Danksagung erhalten: 2076 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
Reactions:
Beiträge: 9771
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4878 Mal
Danksagung erhalten: 7805 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“