Seite 1 von 1

Zeitlicher Mittelwert mit manuellem Reset

Verfasst: Sa Feb 08, 2020 11:10 am
von Robert_Mini
Hallo zusammen!

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!)
Ausgänge:
  • 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.
Der Baustein:

Bild

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

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