Hallo zusammen,
ich bin recht neu beim KNX, verzeiht mir bitte, falls ich manches nicht regelkonform gemacht habe, bin für alle Verbesserungen offen
Ich habe mir ein paar Logiken zusammengebaut, analog zu hymans bedarfsgeführter Heizungssteuerung
https://knx-user-forum.de/forum/%C3%...ng-mit-gira-x1
Nun scheint eine der Logiken nach einiger Zeit (aktuell sofort nach Neustart / neuer Inbetriebnahme in der GPA) den Bus mit ununterbrochenen Telegrammen zuzumüllen
Das war bis vor einigen Tagen erst nach ein paar Stunden / einem halben Tag, ich habe seitdem unter anderem die Statistik für Vorlauf FBH Soll in der zweiten Logik so gesetzt, dass sofort Werte ausgespuckt werden, statt erst nach 16 Stunden
Die Telegramme sind alle ohne Änderung, also zB "Heizung an" etwa vier Mal pro Sekunde
Ich lese in der GPA die Datenpunkte zum Start alle vom Bus
Ich versuche mal alles so zu posten, dass man die Logiken verstehen kann, sonst fragt einfach nach
Hier die Heizkurve, recht analog zu hyman
Heizkurve.png
Aussentemperatur kommt zyklisch alle 10 min
Heizperiode kommt aus der zweiten Logik
Var Heizung Bedarf auch aus der zweiten Logik, das ist die größte Stellgröße der RTR zweier Räume, die beiden Stellgrößen kommen zyklisch alle 15 min vom Bus
Var Heizung Komfortverlust ist aus der zweiten Logik und gibt an, ob einer der beiden Räume Heizbedarf hat
Unten gibts dann noch eine Sicherheitsabschaltung, damit die FBH nicht die volle Temperatur der Ölheizung abbekommt
Die Heizperiode steuert dort, ob die Ölheizung und die Umwälzpumpe der FBH angeschaltet werden, oder ob Warmwasser mit dem Elektroheizstab im Boiler erzeugt wird.
Vorlauftemperatur FBH SOLL geht in den Bus zu einem Temperaturregler MDT SCN-RT6AP.01
Der empfängt den Sollwert, ich habe dafür den entsprechenden Kanal in der ETS auf K L S gesetzt
Der regelt mit einem PI Regler P=20K (mehr geht nicht) Nachstellzeit 15 min (weniger geht nicht) einen Drei-Wege-Mischer über einen Jalousieaktor
Das funktioniert vorerst zufriedenstellend, so dass nicht ständig geregelt wird
Die Formeln für die Heizkurve sind:
Hlk.HeatingCurve({Tavg:N}, 18, -5, {Trmax:N}, 38, 1.4)
unter 18 Grad nicht heizen; bei -5 Grad maximale Vorlauf-Temp; maximale Vorlauf-Temp 38 Grad; Steilheit 1,4
Tavg ist die mittlere Aussentemperatur; Trmax ist 23 Grad für die maximale Raumtemperatur
({Bedarf:N} / 100) * (_out1_ - {Trmax}) + {Trmax}
({Komfortverlust:N} * _out1_) + ((1.0 - {Komfortverlust}) * _out2_)
/* Tvsmin = */ {Trmax} + 1.0
({Heizperiode:B} && ({Bedarf} >= 5.0) && (_out3_ >= _out4_)) ? (Math.Round(_out3_ * 4.0) / 4.0) : 0.0
(Math.Abs(_out5_ - _previousOut6_) > 0.49) ? _out5_ : _previousOut6_
Die Formeln sind von der oben erwähnten Heizungssteuerung von hyman 1:1 übernommen
Die letzte Formel sorgt eigentlich dafür, dass nur ab einer Änderung von 0,5 K und mehr eine Ausgabe erfolgt, sollte daher auch nicht permanent Ausgabewerte erzeugen.
Vorlauftemperatur IST kommt bei einer Änderung von mehr als 1,5 K
Logik 2 errechnet einen Komfortverlust und entscheidet letztendlich, ob geheizt wird
Komfortverlust.png
hier die Formeln, 1 und 2 hab ich abgewandelt und die Prüfung, ob geheizt oder gekühlt wird gespart, hat in der Simulation auch so funktioniert, wie erwartet
Alle anderen Formeln analog zu hyman
Math.Max( ({WZSoll:N} - 0.5 - {WZIst:N}) / 2.5, 0.0 )
Math.Max( ({BadSoll:N} - 0.5 - {BadIst:N}) / 2.5, 0.0 )
/* Max. Komfortverlust */ Math.Min( 1.0, Math.Max(_out1_, _out2_) )
_out3_ > (1.0 - (20.0 - {Tamax:N}) / 12.0)
( (_previousOut6_ && {Tvsmax:N} < 27.0) ) || ({Tamax:N} > 20.0)
(_out4_ && !_out5_) ? (bool?)true : ( (_out5_ && !_out4_) ? (bool?)false : null )
Die Statistik habe ich ohne Verzögerung gemacht, damit sofort Werte zur Verfügung stehen und die Heizung bei jetzt 10°C auch gleich anschaltet
Diese Statistik habe ich so ein wenig in Verdacht, nachdem (seit dieser Änderung?) sofort der Bus zugemüllt wird, und es als ich noch 16 Std Werteaufzeichnung hatte, erst nach ein poaar Stunden der Fall war (waren aber selten 16 Stunden, bis es zu dem Fehler kam)
Logik 3 ermittelt den höchsten zu erwartenden Temperaturwert der nächsten 18 Stunden aus OpenWeather
Open Weather.png
Das ist die Web Abfrage:
Die Koordinaten und AppID hab ich mal anonymisiert
http://api.openweathermap.org/data/2.5/forecast?lat=XYZ&lon=XYZ&cnt=6&units=metric&mode=x ml&appid=XYZ
der Parser ist auf XML und hat folgende Paramter
/weatherdata/forecast/time/temperature/@max
Der gibt das Maximum aller Treffer als Zahl aus
Nachdem das alle Stunde abgefragt wird, halte ich das für unwahrscheinlich, dass es der Urspung ist
Logik 4 ermittelt den Raum mit der größeren RTR Stellgröße
Heizkurve.png
Die beiden Stellwerte kommen zyklisch alle 15 min vom Bus, denke nicht, dass das der Urspung ist
Ich hoffe, ich habe alles an Angaben gemacht, damit man draus schlau wird und ich bin diesem dämlichen Fehler bald los
Ich habe gelesen, dass man keine Werte vom X1 auf den Bus schreiben soll, die dort nicht abgeholt werden, das schien ein Fehler zu sein, den ich bei einer Variablen gemacht habe, den hab aich aber mittlerweile nicht mehr auf dem Bus
Ich arbeite mit der GPA 5.0.1 und der X1 hat die Firmware 2.8.858
ich bin recht neu beim KNX, verzeiht mir bitte, falls ich manches nicht regelkonform gemacht habe, bin für alle Verbesserungen offen
Ich habe mir ein paar Logiken zusammengebaut, analog zu hymans bedarfsgeführter Heizungssteuerung
https://knx-user-forum.de/forum/%C3%...ng-mit-gira-x1
Nun scheint eine der Logiken nach einiger Zeit (aktuell sofort nach Neustart / neuer Inbetriebnahme in der GPA) den Bus mit ununterbrochenen Telegrammen zuzumüllen
Das war bis vor einigen Tagen erst nach ein paar Stunden / einem halben Tag, ich habe seitdem unter anderem die Statistik für Vorlauf FBH Soll in der zweiten Logik so gesetzt, dass sofort Werte ausgespuckt werden, statt erst nach 16 Stunden
Die Telegramme sind alle ohne Änderung, also zB "Heizung an" etwa vier Mal pro Sekunde
Ich lese in der GPA die Datenpunkte zum Start alle vom Bus
Ich versuche mal alles so zu posten, dass man die Logiken verstehen kann, sonst fragt einfach nach
Hier die Heizkurve, recht analog zu hyman
Heizkurve.png
Aussentemperatur kommt zyklisch alle 10 min
Heizperiode kommt aus der zweiten Logik
Var Heizung Bedarf auch aus der zweiten Logik, das ist die größte Stellgröße der RTR zweier Räume, die beiden Stellgrößen kommen zyklisch alle 15 min vom Bus
Var Heizung Komfortverlust ist aus der zweiten Logik und gibt an, ob einer der beiden Räume Heizbedarf hat
Unten gibts dann noch eine Sicherheitsabschaltung, damit die FBH nicht die volle Temperatur der Ölheizung abbekommt
Die Heizperiode steuert dort, ob die Ölheizung und die Umwälzpumpe der FBH angeschaltet werden, oder ob Warmwasser mit dem Elektroheizstab im Boiler erzeugt wird.
Vorlauftemperatur FBH SOLL geht in den Bus zu einem Temperaturregler MDT SCN-RT6AP.01
Der empfängt den Sollwert, ich habe dafür den entsprechenden Kanal in der ETS auf K L S gesetzt
Der regelt mit einem PI Regler P=20K (mehr geht nicht) Nachstellzeit 15 min (weniger geht nicht) einen Drei-Wege-Mischer über einen Jalousieaktor
Das funktioniert vorerst zufriedenstellend, so dass nicht ständig geregelt wird
Die Formeln für die Heizkurve sind:
Hlk.HeatingCurve({Tavg:N}, 18, -5, {Trmax:N}, 38, 1.4)
unter 18 Grad nicht heizen; bei -5 Grad maximale Vorlauf-Temp; maximale Vorlauf-Temp 38 Grad; Steilheit 1,4
Tavg ist die mittlere Aussentemperatur; Trmax ist 23 Grad für die maximale Raumtemperatur
({Bedarf:N} / 100) * (_out1_ - {Trmax}) + {Trmax}
({Komfortverlust:N} * _out1_) + ((1.0 - {Komfortverlust}) * _out2_)
/* Tvsmin = */ {Trmax} + 1.0
({Heizperiode:B} && ({Bedarf} >= 5.0) && (_out3_ >= _out4_)) ? (Math.Round(_out3_ * 4.0) / 4.0) : 0.0
(Math.Abs(_out5_ - _previousOut6_) > 0.49) ? _out5_ : _previousOut6_
Die Formeln sind von der oben erwähnten Heizungssteuerung von hyman 1:1 übernommen
Die letzte Formel sorgt eigentlich dafür, dass nur ab einer Änderung von 0,5 K und mehr eine Ausgabe erfolgt, sollte daher auch nicht permanent Ausgabewerte erzeugen.
Vorlauftemperatur IST kommt bei einer Änderung von mehr als 1,5 K
Logik 2 errechnet einen Komfortverlust und entscheidet letztendlich, ob geheizt wird
Komfortverlust.png
hier die Formeln, 1 und 2 hab ich abgewandelt und die Prüfung, ob geheizt oder gekühlt wird gespart, hat in der Simulation auch so funktioniert, wie erwartet
Alle anderen Formeln analog zu hyman
Math.Max( ({WZSoll:N} - 0.5 - {WZIst:N}) / 2.5, 0.0 )
Math.Max( ({BadSoll:N} - 0.5 - {BadIst:N}) / 2.5, 0.0 )
/* Max. Komfortverlust */ Math.Min( 1.0, Math.Max(_out1_, _out2_) )
_out3_ > (1.0 - (20.0 - {Tamax:N}) / 12.0)
( (_previousOut6_ && {Tvsmax:N} < 27.0) ) || ({Tamax:N} > 20.0)
(_out4_ && !_out5_) ? (bool?)true : ( (_out5_ && !_out4_) ? (bool?)false : null )
Die Statistik habe ich ohne Verzögerung gemacht, damit sofort Werte zur Verfügung stehen und die Heizung bei jetzt 10°C auch gleich anschaltet
Diese Statistik habe ich so ein wenig in Verdacht, nachdem (seit dieser Änderung?) sofort der Bus zugemüllt wird, und es als ich noch 16 Std Werteaufzeichnung hatte, erst nach ein poaar Stunden der Fall war (waren aber selten 16 Stunden, bis es zu dem Fehler kam)
Logik 3 ermittelt den höchsten zu erwartenden Temperaturwert der nächsten 18 Stunden aus OpenWeather
Open Weather.png
Das ist die Web Abfrage:
Die Koordinaten und AppID hab ich mal anonymisiert
http://api.openweathermap.org/data/2.5/forecast?lat=XYZ&lon=XYZ&cnt=6&units=metric&mode=x ml&appid=XYZ
der Parser ist auf XML und hat folgende Paramter
/weatherdata/forecast/time/temperature/@max
Der gibt das Maximum aller Treffer als Zahl aus
Nachdem das alle Stunde abgefragt wird, halte ich das für unwahrscheinlich, dass es der Urspung ist
Logik 4 ermittelt den Raum mit der größeren RTR Stellgröße
Heizkurve.png
Die beiden Stellwerte kommen zyklisch alle 15 min vom Bus, denke nicht, dass das der Urspung ist
Ich hoffe, ich habe alles an Angaben gemacht, damit man draus schlau wird und ich bin diesem dämlichen Fehler bald los
Ich habe gelesen, dass man keine Werte vom X1 auf den Bus schreiben soll, die dort nicht abgeholt werden, das schien ein Fehler zu sein, den ich bei einer Variablen gemacht habe, den hab aich aber mittlerweile nicht mehr auf dem Bus
Ich arbeite mit der GPA 5.0.1 und der X1 hat die Firmware 2.8.858
Kommentar