Heute eine kleine Erweiterung: Zeitlicher Mittelwert mit Reset-Eingang.
Anmerkung: Ein weiterer Baustein mit automatischem Tages- bzw Monatsmittelwert folgt bald!
Funktion:
Der Baustein berechnet kontinuierlich den Mittelwert aus den Daten am Eingang, zB aktuelle Temperatur die zyklisch auf den Bus gesendet wird.
Mit dem Reset-Eingang wird der Mittelwert auf den aktuellen Eingang zurückgesetzt und der bisherige Mittelwert an einem zusätzlichen Ausgang übertragen.
Hinweis: Persistenz muss aktiviert sein, damit nach einem Reboot o.ä. der Mittelwert korrekt weiter berechnet wird.
Anwendungsbeispiele:
Echter Tagesmittelwert der Temperatur o.ä.
Eingänge:
- Eingang: Messgröße, die gemittelt werden soll zB ein Temperaturwert.
Reset: Mit "True" wird der Mittelwert zurückgesetzt und Reset wieder auf "False" geschaltet (im Doktormodus sieht man das "True" daher nie!)
- Mittelwert Aktuell: Laufender Mittelwert, der aus allen empfangenen Werten seit dem letzten Reset gebildet wird.
- Mittelwert vor Reset: Mittelwert vor dem letzten Reset, wird nur 1x beim Reset gesendet und kann zB zum Abspeichern oder Anzeige in der Visu (zB. Vortag) verwendet werden.
- Counter (optional über + einblendbar): Anzahl der Messwerte, aus der der aktuelle Mittelwert gebildet wird.
Code: Alles auswählen
/**===========================================================
Zeitlicher Mittelwert mit Reset und Möglichkeit zur
Speicherung/Senden des letzten Wertes vor dem Reset
============================================================*/
{
"Input": [
["Eingang","Messgröße","$I_Input","a"],
["Reset","Manueller Reset","$I_Reset","c"]
],
"Output": [
["Mittelwert aktuell","aktueller Mittelwert seit Reset","$Avg","ct"],
["Mittelwert vor Reset","Letzter Mittelwert vor Reset","$Avg_Vortag","t"],
["Counter","Anzahl Werte","$Counter?","c"]
],
"Level": [
["$I_Input","float",0.0],
["$I_Reset","bool",false],
["$Sum","float",0.0],
["$Avg","float",0.0],
["$Avg_Vortag","float",0.0],
["$Counter","integer",0],
["$KonstTrue","bool",true],
["$Konst0","float",0.0],
["$Konst1","float",1.0],
["$KonstFalse","bool",false]
],
"Module": [
// Wert auf Vortag speichern
["Latch","$Avg","$Avg_Vortag","$I_Reset",0],
// Summe und Counter zurücksetzen
["Multiplexer",["$Counter","$Konst0"],"$Counter","$I_Reset"],
["Multiplexer",["$Sum","$Konst0"],"$Sum","$I_Reset"],
// Reset auf 0 setzen
["Multiplexer",["$I_Reset","$KonstFalse"],"$I_Reset","$I_Reset"],
// 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"]
]
}
/** 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. */
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