Seite 1 von 3

Sommer / Winterumschaltung nach DIN

Verfasst: Do Feb 06, 2020 10:47 pm
von Robert_Mini
Hallo zusammen!

Ein paar neue Bausteine sind fertig!

Funktion:
Der Baustein berechnet laufend auf Basis der Außentemperatur von 3 Zeitpunkten (T1 um 7:00, T2 um 14:00 und T3 um 22:00) einen Mittelwert, bei dem 22:00 doppelt gewichtet wird, d.h. T_avg = (T1+T2+2xT3)/4.
Liegt der Mittelwert unter T_Winter (Default 14°C), wird der Heizungsmodus=0 geschaltet, oberhalb T_Sommer (Default 16°C), wird auf Heizungsmodus=1 geschaltet. Die Funktion ist ähnlich dem HS-Baustein 19830.

Hinweis: Die Logik wird nur um 7:00, 14:00 und 22:00 getriggert und ausgewertet. Eine Umschaltung Sommer/Winter erfolgt somit ebenfalls nur zu diesen Zeiten.

Anwendungsbeispiele:
Umschaltung zwischen Sommer und Winterbetrieb der Heizung oder Beschattung.

Eingänge:
  • Außentemperatur: aktuelle Außentemperatur (muss zyklisch gesendet sein).
    Temp_Sommer: Temperatur, oberhalb der auf Sommerbetrieb geschaltet werden soll
    Temp_Winter: Temperatur, unterhalb der auf Winterbetrieb geschaltet werden soll
Ausgänge:
  • Heizungsmodus Sommer/Winter: Ausgabe 1 für Sommerbedtrieb, 0 für Winterbetrieb.
  • Temperatur Tag gleitend: Hier wird jeweils um 7:00, 14:00 und 22:00 der Mittelwert T_avg gesendet
  • Temperatur Mittelwert Monat: Mittelwert seit Monatsbeginn. Es wird kontinuierlich der letzte Mittelwert aufsummiert und mit T3 um 22:00 gesendet, am Monatsanfang wird zurückgesetzt. Ich verwende diesen Wert, um am Monatsanfang den Mittelwert des Vormonats in ein csv-File zu speichern.
  • Counter: Aktuelle Anzahl von Werten zur Mittelwertbildung (optional aktivierbar).
  • Temp1 / 7:00 etc.: Letzter Temperaturwert um 7:00, 14:00 bzw. 22:00 (optional aktivierbar).
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

Der Baustein:

Bild

Code: Alles auswählen

/**===========================================================
Temperaturmittel und Sommer/Winter Umschaltung nach DIN 
============================================================*/
{
  "Input": [
        ["Außentemperatur","Gemessene Außentemperatur","$I_Temperature","u"], 
		["Temp. Sommer","Außentemperatur bei der auf Sommer umgeschaltet wird","$I_TempSommer","c"], 
		["Temp. Winter","Außentemperatur bei der auf Winter umgeschaltet wird","$I_TempWinter","c"]
  ],
  "Output": [
		["Heizungsmodus Sommer/Winter","Ausgabe ob Sommer oder Winter","$Output","ct"],
		["Temperatur Tag gleitend","(T1+T2+T3*T3)/4","$Temperature_avg","ct"],
		["Temperatur Mittelwert Monat","Mittelwert seit Monatswechsel","$Temperature_avg_Monat","c"],
		["Counter","Anzahl Werte","$Counter?","c"],
		["Temp1 / 7:00","Anzahl Werte","$Temp1_?","c"],
		["Temp2 / 14:00","Anzahl Werte","$Temp2_?","c"],
		["Temp3 / 22:00","Anzahl Werte","$Temp3_?","c"]
  ],
  "Level": [
		["$I_Temperature","float",0.0],
		["$I_TempSommer","float",0.0],
		["$I_TempWinter","float",0.0],
		["$I_Totzone","float",0.0],
		["$Output","bool",false],
		["$Temperature_sum","float",0.0],
		["$Temperature_avg","float",0.0],
		["$Temperature_sum_Monat","float",0.0],
		["$Temperature_sum_temp","float",0.0],
		["$Temperature_avg_Monat","float",0.0],
		["$Temperature_avg_MonatLast","float",0.0],
		["$Counter","integer",0],
		["$Counter_temp","integer",1],
		["$Counter_Lim","integer",0],
		["$Val_ok","bool",false],
		["$Temp1_","float",0.0],
		["$Temp2_","float",0.0],
		["$Temp3_","float",0.0],
		["$Reset1","bool",false],
		["$Reset2","bool",false],
		["$Reset3","bool",false],
		["$ResetMonatTrigger","bool",false],
		["$KonstTrue","bool",true],
		["$Konst0","float",0.0],
		//["$Konst0int","int",0],
		["$Konst1","float",1.0],
		["$Konst4","float",4.0],
		["$KonstFalse","bool",false],
		["$I_Interval_Enable","bool",true],
		["$I_Interval","float",300.0],
		["$Zeitpunkt1","string","0 0 7 * * *"],
		["$Zeitpunkt2","string","0 0 14 * * *"],
		["$Zeitpunkt3","string","0 0 22 * * *"],
		["$ResetMonat","string","20 2 0 1 * *"]
  ],
  "Module": [
		 // Trigger für 7 / 14 und 22 Uhr
		["Cron","$KonstTrue","$Reset1",0,"$Zeitpunkt1"],
		["Cron","$KonstTrue","$Reset2",0,"$Zeitpunkt2"],
		["Cron","$KonstTrue","$Reset3",0,"$Zeitpunkt3"],
		["Cron","$KonstTrue","$ResetMonatTrigger",0,"$ResetMonat"],
		// Temperatur speichern
		["Multiplexer",["$Temp1_","$I_Temperature"],"$Temp1_","$Reset1"],
		["Multiplexer",["$Temp2_","$I_Temperature"],"$Temp2_","$Reset2"],
		["Multiplexer",["$Temp3_","$I_Temperature"],"$Temp3_","$Reset3"],
		// Mittelwert berechnen
		["Polynomial","$Konst1","$Temperature_sum",["$Temp1_","$Temp2_","$Temp3_","$Temp3_"]],
		["Ratio", "$Temperature_sum", "$Temperature_avg", "$Konst4"],
		// Überprüfung 
		["Comparator","$Temperature_avg","$Output",["$I_TempWinter","$I_TempSommer"]],
		
		// Summe um aktuellen Mittelwert erhöhen (nur bei Reset3)
	    ["Polynomial","$Konst1","$Temperature_sum_temp",["$Temperature_sum_Monat","$Temperature_avg"]],
	    ["Polynomial","$Konst1","$Counter_temp",["$Counter","$Konst1"]],
	    ["Multiplexer",["$Temperature_sum_Monat","$Temperature_sum_temp"],"$Temperature_sum_Monat","$Reset3"],
	    ["Multiplexer",["$Counter","$Counter_temp"],"$Counter","$Reset3"],
	    
	    // Divisor prüfen und bei Null mit 1 ersetzen
	    ["Limiter","$Counter","$Counter_Lim","$Val_ok",["$Konst0", "$Konst0"]],
	    ["Latch","$Konst1","$Counter","$Val_ok",0],
	    ["Ratio", "$Temperature_sum_Monat", "$Temperature_avg_Monat", "$Counter"],
	    // Ergebnis überschreiben und alten Divisor wiederherstellen
	    ["Latch","$Konst0","$Temperature_avg_Monat","$Val_ok",0],
	    ["Latch","$Konst0","$Counter","$Val_ok",0],
	    
	    // Summe und Counter zurücksetzen
	    ["Multiplexer",["$Counter","$Konst0"],"$Counter","$ResetMonatTrigger"],
	    ["Multiplexer",["$Temperature_sum_Monat","$Konst0"],"$Temperature_sum_Monat","$ResetMonatTrigger"],
	    
		// Reset auf 0 setzen
		["Multiplexer",["$Reset1","$KonstFalse"],"$Reset1","$Reset1"],
		["Multiplexer",["$Reset2","$KonstFalse"],"$Reset2","$Reset2"],
		["Multiplexer",["$Reset3","$KonstFalse"],"$Reset3","$Reset3"],
		["Multiplexer",["$ResetMonatTrigger","$KonstFalse"],"$ResetMonatTrigger","$ResetMonatTrigger"]
  ]
}
/** 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. */

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 9:57 am
von StefanW
Super, das ist wirklich sehr sehr gut!

Danke dass Du Deine tolle Arbeit mit uns teilst und freigibst!

Bitte weitere Autoren, greift zu, seht Euch das an und setzt Eure Ideen um

lg

Stefan

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 1:15 pm
von Smart Jeanie
Die Winter-/Sommerumschaltung für die Heizung über diese Logik finde ich super.
Du schreibst, ein möglicher Anwendungsfall könnte auch die Beschattung sein. Ich kann mir im Moment keinen sinnvollen Fall für die Umschaltung Sommer-/Winter bei der Beschattung vorstellen, was die Steuerung über die Temperatur angeht. Hast Du mal ein Beispiel dafür?

LG
Markus

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 1:23 pm
von Robert_Mini
Hallo Markus!

Konkret habe ich das hier in Verwendung: viewtopic.php?f=65&t=1565

Im Sommer wird immer 100% beschattet, sobald die Sonne im Fenster steht, im Winter wird die Behanghöhe proportional zur Temperatur gesteuert.
Damit wird das Empfinden wesentlich angenehmer!

lg
Robert

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 1:23 pm
von MeisterLampe
Im Winter möglichst viel Wärme reinlassen (also möglichst keine Beschattung), bzw. Rolläden als zusätzliche Isolierung runterfahren in Räumen ohne Sonneneinstrahlung und wenn niemand drin ist.
Im Sommer möglichst viel Wärme draußen lassen. Also die Rolläden runterfahren, in den Räumen, in denen die Sonne reinscheinen kann.

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 3:50 pm
von 773H
Werden geniale Bausteine wie dieser mit einem kommenden Update in den LE permanent eingepflegt oder muss man den per Custom Logic für alle Zeiten selber "reinfrickeln"?

Gruß Stephan

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 3:59 pm
von Robert_Mini
Ich denke die werden eingepflegt, aber das "reinfrickeln" versteh ich nun nicht wirklich :angry-argument: .
Im Forum auf "Code kopieren" klicken, im TWS neue Logik => Custom => Einfügen + Name eingeben - fertig.

lg
Robert

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Feb 07, 2020 8:27 pm
von 773H
@Robert_Mini "figurative speach"! :text-imsorry:
:D

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Mär 13, 2020 6:57 am
von Robosoc
Mega, Robert, Danke. Jetzt erst gesehen und sofort eingebaut :-)

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Di Apr 14, 2020 2:34 pm
von Dragonos2000
@Robert: Mir ist gerade aufgefallen, dass der Baustein beim ersten Starten keine Werte sendet bis er mindestens 1 Tag erfasst hat. :confusion-scratchheadyellow: Bei der genaueren Analyse kommt das durch eine Division durch 0, weil der Level $Counter mit 0 initialisiert wird.
Beim monatlichen Reset setzt Du $Counter hingegen auf 1 zurück, womit der Mittelwert dann eigentlich nicht mehr richtig gerechnet wird (wenn ich gerade keinen Denkfehler habe). :think:

Hast Du das so bewusst in Kaufe genommen?