Fussbodenheizung mit PWM steuern

Begonnen von jamesgo, 24 September 2015, 08:28:49

Vorheriges Thema - Nächstes Thema

jamesgo

Hallo Wolfgang,

hast du jetzt einen plot mit der Gesamtzahl der Räume auf "on". Dort lässt sich das Problem evtl. besser analysieren.

Grüße
Andy

wowogiengen

Hallo Andy,
leider nein.
Ich habs erstmal so gelassen wie es ist.
Ich glaube, es liegt an den PID-Reglerparametern. Der scheint vielleicht ins Schwingen zu kommen. Zumindest habe ich das im WWW auf einer Seite, die einen PID-Regler simuliert, auch beobachten können, wenn die PID-Werte entsprechend waren.

Meine FBH ist ja ziemlich träge, da könnte man die PWM-Taktfrequenz bestimmt auf 30 Minuten oder mehr hochdrehen, so dass dann die Aktoren auch nicht mehr so oft an und aus gehen?



jamesgo

Hallo Wolfgang,
ich vermute dass deine Heizung unterfordert ist, wenn zuwenig Räume an sind.
Die Frage ist nun "reicht ein Raum" oder müssen es zwei sein.

Ich vermute wenn ein Raum an ist und ein zweiter "toggelt" dann geht die Heizung nicht in den "warte modus" (=niedriger Vorlauf).

Das wäre dann ein "roomsStayOn" Thema.

Grüße
Andy

jamesgo

Die Versionen mit support von stateFormat sind jetzt eingecheckt.

Grüße
Andy

gadget

#589
Zitat von: jamesgo am 02 Februar 2018, 15:43:39
Die Versionen mit support von stateFormat sind jetzt eingecheckt.

Prima ! Danke !

Habe jetzt


beim PWM:

attr fbh stateFormat roomsOn Raum an, roomsOff Raum aus

beim PWMR:

attr PWMR_WZ stateFormat P: PID_PVal I: PID_IVal D: PID_DVal state Pulse: PID_PWMPulse  Ist: temperature °C
attr PWMR_WZ webCmd desired-temp


Grüße,

gadget.

devien

Hallo,

ich habe seid kurzem PWM bei meiner Fußbodenheizung im Einsatz und suche nach einer Lösung für folgendes Problemchen.

Im Kinderzimmer habe ich eine Wandheizung welche Bauartbedingt sehr schnell durchläuft, also die Rücklauftemperatur sich schnell der Vorlauftemperatur nähert.
Da ich nur ungern das warme Heizwasser ungenutzt in den kalten Bereich meines Pufferspeichers leiten möchte benötige ich also eine Art bedingter Öffnung des bestimmten Heizkreises.
Ich erfasse per 18B20 Sensor die Rücklauftemperatur eines jeden Heizkreises, also fehlt mir nur noch ein "if temp_KZ > 29°C set PW_RoomKZ inactiv.

Leider gibt es kein entsprechendes "inactiv" für das PWMR Modul soweit ich das sehe. Ich möchte auch nicht den actor selbst per DoIf schließen weil PWM dann immernoch die Anforderung vom PWMR Modul erhalten würde die HeizungsPumpe zu schalten wenn der Raum noch nicht auf Zieltemperatur ist.

Welche Möglichkeiten gibt es hier für mich?
FHEM + UniPi + Arduino = gute Lösung

jamesgo

Hallo devien,

die Frage, die sich mir stellt ist: Wie lange willst du denn einen Raum auf "offline" schalten? Diese Zeit kann eigentlich nicht fest sein denn sie ist von der Aussentemperatur abhängig.

Da PWMR nur über Temperaturen gesteuert wird bleibt dir meiner Meinung nach nur z.B. "set roomXX desired-temp 15 120". Damit würde die Temperatur für 120 Minuten reduziert und das Ventil geht zu. Nach den 120 Minuten wird automatisch auf die alte Solltemperatur gewechselt.

Grüße
Andy

Blauhorn

Du könntest einen dummy fensterschalter definieren, den Du dem PWMR als Parameter mitgibst. Den lässt Du dann per notify öffnen, wenn die Rücklauftemp sich der Vorlauftemp nähert.
1xBananaPi; 1x FB7490; 1xCUL433; 1x CC2530+CC2591; OpenMiLight-Gateway; 1xHMUART; HM-LC-Sw4-DR; Sonoff* mit TASMOTA, LEDController; MySensors; zigbee2mqtt;

devien

Zitat von: jamesgo am 08 Februar 2018, 12:05:22
Hallo devien,

die Frage, die sich mir stellt ist: Wie lange willst du denn einen Raum auf "offline" schalten? Diese Zeit kann eigentlich nicht fest sein denn sie ist von der Aussentemperatur abhängig.

Da PWMR nur über Temperaturen gesteuert wird bleibt dir meiner Meinung nach nur z.B. "set roomXX desired-temp 15 120". Damit würde die Temperatur für 120 Minuten reduziert und das Ventil geht zu. Nach den 120 Minuten wird automatisch auf die alte Solltemperatur gewechselt.

Grüße
Andy
hi Andy,
die Zeit ist meiner bescheidenen Meinung nach nur perifair vo der Außentemperatur abhängig, eher relevant ist wie schnell die Wandheizung die Temperatur an die Raumluft abgeben tut (bedenkt man Dämmwerte, anzahl der Außenmauern des Raumes etc.). Ich würde daher eine fixe Zeitspanne von 20 min für den Aussetzer veranschlagen, dann sollte die Temperatur in der Wandheizung selbst schon um einige Grad herruntergekühlt sein.
Zitat von: Blauhorn am 08 Februar 2018, 12:39:32
Du könntest einen dummy fensterschalter definieren, den Du dem PWMR als Parameter mitgibst. Den lässt Du dann per notify öffnen, wenn die Rücklauftemp sich der Vorlauftemp nähert.
Die Idee mit dem Fensterschalterdummy ist gut, das werde ich nutzen. Diese Option hatte ich garnicht mehr auf dem Schirm, Vielen Dank.
FHEM + UniPi + Arduino = gute Lösung

Morgennebel

Zitat von: devien am 08 Februar 2018, 11:20:11
Im Kinderzimmer habe ich eine Wandheizung welche Bauartbedingt sehr schnell durchläuft, also die Rücklauftemperatur sich schnell der Vorlauftemperatur nähert.

Kannst Du nicht den Volumenstrom am FB-Verteiler fuer diesen Kreis reduzieren?

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

devien

Zitat von: Morgennebel am 08 Februar 2018, 16:34:45
Kannst Du nicht den Volumenstrom am FB-Verteiler fuer diesen Kreis reduzieren?

Ciao, -MN
Das ist eine Option, das setze ich um sobald  die Heizungsfirma wegen dem hydraulichen Abgleich bei mir durch ist (dafür fummeln die eh nochmal an den Volumenstromreglern herum).
FHEM + UniPi + Arduino = gute Lösung

Morgennebel

Zitat von: devien am 08 Februar 2018, 19:48:49
Das ist eine Option, das setze ich um sobald  die Heizungsfirma wegen dem hydraulichen Abgleich bei mir durch ist (dafür fummeln die eh nochmal an den Volumenstromreglern herum).

Dann ist Dein hydraulischer Abgleich doch gleich wieder im Ungleichgewicht. Du änderst dann ja nachträglich was an der Abstimmung.

Wenn es ein temporäres Problem ist, schraub den Stellantrieb ab und ersetze ihn durch eine Justierkappe.

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Tsturm

#597
Hallo Zusammen,

bin gerade dabei, PWM für eine Gärbox (zum Brotbacken, mit einer Heizdecke, einem ESP und ein paar Temperatursensoren) zu nutzen. Klappt schon ganz gt, allerdings have ich gemerkt, dass die frei wählbare Temperatur auf 30 Grad beschränkt ist - macht für eine Heizungsanlage sicher Sinn, für meine Anwendung eher knapp.

Daher die Fragen:
- könnte man die Maximaltemperaturen parametrisieren, so dass mann die über ein Attribut überschreiben kann? (ich will nicht unbedingt im Source-Code wursteln... das ist beim nächsten Update wieder weg)

- gibt's die Pulsweitenlogik mit Zieltemperatur etc auch separat? PWM / PWMR ist ein sehr schönes Modul, allerdings mit der für Heizungen notwendigen Logik (Räume, Steuerung der Heizungsanlage und der Ventile) auch sehr mächtig (und benötigt viel Einarbeitung)?
Es gibt sicherlich viele Anwendungsfälle über die Heizung hinaus...


Eine weitere Frage:
Ich habe versucht, die beiden Module, die ich mit PWM und PWMR definiert hat, mit "inactive=1) abzuschalten (jetzt ist erstmal schluss mit basteln). Allerdings scheinen immer noch Routinen weiterzulaufen, die im Eventmonitor auftauchen - "PWM Gaerbox_PWM disabled". Ich bekomme es zwar mit einem riesigen Intervall ruhig, aber eigentlich sollte das ja nicht sein, oder?

Internals:
   CYCLETIME  60
   DEF        10 60 10 1 99,99 0,0,0
   INTERVAL   10
   MINONOFFTIME 10
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       Gaerbox_PWM
   NR         143
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      disabled
   TYPE       PWM
   p_cycletime 60
   p_interval 10
   p_maxPulse 1
   p_minOnOfftime 10
   p_overallHeatingSwitch
   p_roomsMinOnOffThreshold 0,0,0
   READINGS:
     2018-02-11 23:04:55   OverallHeatingSwitch
     2018-02-11 23:04:55   OverallHeatingSwitchWaitBeforeOn
     2018-02-11 23:04:55   OverallHeatingSwitchWaitUntilOff
     2018-02-11 22:57:31   avgPulseRoomsOff 0
     2018-02-11 22:57:31   avgPulseRoomsOn 0
     2018-02-11 23:07:25   lastrun         disabled
     2018-02-11 22:57:31   pulseAvg        0
     2018-02-11 22:57:31   pulseAvg2       0
     2018-02-11 22:57:31   pulseAvg3       0
     2018-02-11 22:57:31   pulseMax        0
     2018-02-11 22:57:31   pulseSum        0
     2018-02-11 22:57:31   roomsActive     0
     2018-02-11 22:57:31   roomsOff        0
     2018-02-11 22:57:31   roomsOn         0
     2018-02-11 22:57:31   roomsToStayOn   0
     2018-02-11 22:57:31   roomsToStayOnList
     2018-02-11 23:07:25   state           disabled
Attributes:
   disable    1
   room       Gaerbox


Internals:
   ACTOR      Gaerbox_device
   DEF        Gaerbox_PWM 1,0 ESPEasy_wemos_7_T1:Temperature Gaerbox_device dummy usePID=1:0.8:0.3,30:0.5,60
   INTERVAL   300
   IODev      Gaerbox_PWM
   NAME       Gaerbox_room
   NR         146
   STATE      Manual
   TEMPSENSOR ESPEasy_wemos_7_T1:Temperature
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      Gaerbox_device
   c_PID_DFactor 0.5
   c_PID_DLookBackCnt 60
   c_PID_IFactor 0.3
   c_PID_PFactor 0.8
   c_PID_useit usePID=1
   c_autoCalcTemp 0
   c_desiredTempFrom
   c_frostProtect 0
   c_tempC    22
   c_tempD    20
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    16
   c_tempRule1 1-5 0600,D 2200,N
   c_tempRule2 6-0 0800,D 2200,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   p_actor    Gaerbox_device
   p_factor   1,0
   p_pid      usePID=1:0.8:0.3,30:0.5,60
   p_tsensor  ESPEasy_wemos_7_T1:Temperature
   p_window   dummy
   t_reading  Temperature
   t_regexp   ([\d\.]+)
   t_sensor   ESPEasy_wemos_7_T1
   w_regexp   .*Open.*
   windows    dummy
   Helper:
     DBLOG:
       onoff:
         logdb:
           TIME       1518386713.07314
           VALUE      1
   READINGS:
     2018-02-11 23:01:03   actorState      unknown
     2018-02-11 19:22:04   desired-temp    21.0
     2018-02-11 17:25:43   desired-temp-until no
     2018-02-11 18:41:10   desired-temp-used 26.0
     2018-02-11 22:36:22   energyused      000000000000000000000000000000
     2018-02-11 22:36:22   energyusedp     0.0
     2018-02-11 18:38:29   lastswitch      1518370709.26538
     2018-02-11 17:56:43   manualTempDuration 600
     2018-02-11 22:36:22   oldpulse        0
     2018-02-11 23:05:13   onoff           1
     2018-02-11 23:05:13   state           Manual
     2018-02-11 18:41:10   temperature     25.94
   helper:
     PID_D_previousTemps:
Attributes:
   autoCalcTemp 0
   disable    1
   event-min-interval 30
   room       Gaerbox
   userReadings onoff {if
(ReadingsVal("Gaerbox_room","actorState",0) eq "off") {(0)}
else
{(1)}
}

2018-02-11 23:07:15 PWM Gaerbox_PWM disabled
2018-02-11 23:07:25 PWM Gaerbox_PWM disabled
2018-02-11 23:07:35 PWM Gaerbox_PWM disabled
2018-02-11 23:07:45 PWM Gaerbox_PWM disabled
2018-02-11 23:07:55 PWM Gaerbox_PWM disabled

Viele Grüße

Timmo


jamesgo

Hallo Timmo,

hast du das Modul 98_PID20.pm schon angeschaut? Dort findest du eine PID Implementierung ohne den ganzen PWM/PWMR Überbau.

Grüße
Andy

Tsturm

Hi Andy,

ja - allerdings ist der PWM-Überbau ja gerade klasse bei Dir ... es sei denn, es gibt auch für die PWM-Implementierung ein Modul. Sonst liefert mir ja PID nur einen kontinuierlichen Wert, den ich dann noch in PWM übersetzen muss. Werde es mir aber nochmals anschauen.

VG timmo