Wie angekündigt ein weiterer Baustein zur Mittelwertberechnung für die Auswertung klassischer Mittelwerte wie mittlere Tagestemperatur oder mittlere Monatstemperatur.
Funktion:
Der Baustein berechnet kontinuierlich die Mittelwerte aus den Daten am Eingang, zB aktuelle Temperatur die zyklisch auf den Bus gesendet wird.
Der Tagesmittelwert wird um Mitternacht zurückgesetzt, der Monatsmittelwert um Mitternacht am 1. des Monats.
Hinweis: Persistenz muss aktiviert sein, damit nach einem Reboot o.ä. der Mittelwert korrekt weiter berechnet wird.
Anwendungsbeispiele:
Tagesmittelwert verschiedener Temperaturen, o.ä.
Eingänge:
- Eingang: Messgröße, die gemittelt werden soll zB ein Temperaturwert.
- Mittelwert Tag aktuell: Laufender Mittelwert des aktuellen Tages, der aus allen empfangenen Werten seit Mitternacht gebildet wird.
- Mittelwert Vortag: Mittelwert des Vortages, wird nur 1x beim Reset gesetzt und kann zB zum Abspeichern oder Anzeige in der Visu (zB. Vortag) verwendet werden.
- Mittelwert Monat aktuell (optional über + einblendbar): Laufender Mittelwert des aktuellen Monats, der aus allen empfangenen Werten seit Monatswechsel gebildet wird.
- Mittelwert Vormonat (optional über + einblendbar): Mittelwert des Vormonats, wird nur 1x beim Reset gesetzt und kann zB zum Abspeichern oder Anzeige in der Visu (zB. Vormonat) verwendet werden.
- Counter Tag (optional über + einblendbar): Anzahl der Messwerte, aus der der aktuelle Tagesmittelwert gebildet wird.
- Counter Monat (optional über + einblendbar): Anzahl der Messwerte, aus der der aktuelle Monatsmittelwert gebildet wird.
- Reset (optional über + einblendbar): Sendet beim Reset 1, danach wieder 0.
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.
Falls wer einen freiwilligen Beitrag zur Motivation leisten will: Klick
Viel Spaß damit und gerne Rückmeldung, wenn was fehlt oder euch die Sache gefällt.
Robert
Der Baustein:
Minimal:
Mit allen Ausgängen:
Code: Alles auswählen
/**===========================================================
Zeitliche Mittelwerte mit Reset bei Tages und Monatswechsel
und Möglichkeit zur Speicherung/Senden des letzten Wertes
vor dem Reset
============================================================*/
{
"Input": [
["Eingang","Messgröße","$I_Input","a"]
],
"Output": [
["Mittelwert Tag aktuell","aktueller Mittelwert seit Tagesreset","$Avg","ct"],
["Mittelwert Vortag","Mittelwert vor letztem Tagesreset","$Avg_Vortag","ct"],
["Mittelwert Monat aktuell","Mittelwert seit Monatswechsel","$Avg_Monat?","c"],
["Mittelwert Vormonat","Mittelwert vor letztem Monatsreset","$Avg_Vormonat?","c"],
["Counter Tag","Anzahl Werte","$Counter?","c"],
["Counter Monat","Anzahl Werte","$Counter2_?","c"],
["Reset","Reset","$Reset?","c"]
],
"Level": [
["$I_Input","float",0.0],
["$I_Reset","bool",false],
["$Sum","float",0.0],
["$Sum_Monat","float",0.0],
["$Sum_MonatNeu","float",0.0],
["$Avg","float",0.0],
["$Avg_Vortag","float",0.0],
["$Avg_Monat","float",0.0],
["$Avg_Vormonat","float",0.0],
["$Counter","integer",0],
["$Counter2_","integer",0],
["$Counter2Neu","integer",0],
["$Reset","bool",false],
["$ResetTagTrigger","bool",false],
["$ResetMonatTrigger","bool",false],
["$ResetTag","string","30 0 0 2-31 * *"],
["$ResetMonat","string","30 0 0 1 * *"],
["$KonstTrue","bool",true],
["$Konst0","float",0.0],
["$Konst1","float",1.0],
["$KonstFalse","bool",false]
],
"Module": [
// Trigger für Reset
["Cron","$KonstTrue","$ResetTagTrigger",0,"$ResetTag"],
["Cron","$KonstTrue","$ResetMonatTrigger",0,"$ResetMonat"],
["Or" , ["$ResetTagTrigger" , "$ResetMonatTrigger"], "$Reset"],
// Wert auf Vortag speichern
["Latch","$Avg","$Avg_Vortag","$Reset",0],
// Summe und Counter für Tagmittelwert zurücksetzen
["Multiplexer",["$Counter","$Konst0"],"$Counter","$Reset"],
["Multiplexer",["$Sum","$Konst0"],"$Sum","$Reset"],
// Wert auf Vortag speichern
["Latch","$Avg_Monat","$Avg_Vormonat","$ResetMonatTrigger",0],
// Summe und Counter für Monatsmittelwert zurücksetzen
["Multiplexer",["$Counter2_","$Konst0"],"$Counter2_","$ResetMonatTrigger"],
["Multiplexer",["$Sum_Monat","$Konst0"],"$Sum_Monat","$ResetMonatTrigger"],
// Summe um aktuellen Mittelwert erhöhen + Counter+1
["Polynomial","$Konst1","$Sum",["$Sum","$I_Input"]],
["Polynomial","$Konst1","$Counter",["$Counter","$Konst1"]],
// Mittelwert aktualisieren
["Ratio", "$Sum", "$Avg", "$Counter"],
//
// Wert für Monatsmittel addieren, wenn nicht ResetTag getriggert wurde
["Polynomial","$Konst1","$Sum_MonatNeu",["$Sum_Monat","$I_Input"]],
["Polynomial","$Konst1","$Counter2Neu",["$Counter2_","$Konst1"]],
["Multiplexer",["$Sum_Monat","$Sum_MonatNeu"],"$Sum_Monat","-$ResetTagTrigger"],
["Multiplexer",["$Counter2_","$Counter2Neu"],"$Counter2_","-$ResetTagTrigger"],
// Mittelwert aktualisieren
["Ratio", "$Sum_Monat", "$Avg_Monat", "$Counter2_"]
]
}
/** 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. */