Fussbodenheizung mit PWM steuern

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

Vorheriges Thema - Nächstes Thema

brucky@freenet.de

Hallo Zusammen /Jamesgo,

ich versuche nun meine 9 Heizkreise auf mit PWM und PWMR zu regeln. Aber irgendwie klappt das nicht. Bei mir pulsen die actoren auch gar nicht. Die machen vormittag auf (wenn nötig) und bleiben dann "on", bis ich die abends den Actor per Hand ausschalte. Ich habe vermutlich ein Config Problem, finde es aber nicht... Irgendwer eine Idee?

Eins meiner PWMR

Internals:
   ACTOR      Heizung_EssenKueche:state
   DEF        Heizkreissteuerung 1,0.11 Heizung_Temp_Essen Heizung_EssenKueche:state
   FUUID      60020d70-f33f-2d68-cc0a-4fd2f5d9ce9d64cb
   INTERVAL   300
   IODev      Heizkreissteuerung
   NAME       Heizung_PWM_Essen
   NR         303
   STATE      ManualSetUntil 22:55:17
   TEMPSENSOR Heizung_Temp_Essen
   TYPE       PWMR
   WINDOW     
   a_regexp_on state
   actor      Heizung_EssenKueche
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0.11
   c_frostProtect 0
   c_tempC    22
   c_tempD    21
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    18
   c_tempRule1 1-5 0600,D 1600,D 2030,N
   c_tempRule2 6-0 0800,D 1600,D 2130,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   c_tempRuleS D
   p_actor    Heizung_EssenKueche:state
   p_factor   1,0.11
   p_pid     
   p_tsensor  Heizung_Temp_Essen
   p_window   
   t_reading  temperature
   t_regexp   ([\d\.]+)
   t_sensor   Heizung_Temp_Essen
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2021-02-03 15:37:33   PWMOnTime       00:00
     2021-02-03 15:37:33   PWMPulse        0
     2021-02-03 07:32:43   actorState      on
     2021-02-03 14:55:17   desired-temp    20.0
     2021-02-03 14:55:17   desired-temp-until 2021-02-03 22:55:17
     2021-02-03 15:37:33   desired-temp-used 20.0
     2021-02-03 15:37:33   energyused      111111111111111111111111111111
     2021-02-03 15:37:33   energyusedp     100.0
     2021-02-03 07:32:43   lastswitch      1612333963
     2021-01-30 21:04:38   manualTempDuration 480
     2021-02-03 15:37:33   oldpulse        0.11
     2021-02-03 14:55:17   state           ManualSetUntil 22:55:17
     2021-02-03 15:37:33   temperature     23.6
     2021-02-02 22:01:26   timer1_Mo       06:00-16:00,D,21 16:00-20:30,D,21
     2021-02-02 22:01:26   timer2_Di       06:00-16:00,D,21 16:00-20:30,D,21
     2021-02-02 22:01:26   timer3_Mi       06:00-16:00,D,21 16:00-20:30,D,21
     2021-02-02 22:01:26   timer4_Do       06:00-16:00,D,21 16:00-20:30,D,21
     2021-02-02 22:01:26   timer5_Fr       06:00-16:00,D,21 16:00-20:30,D,21
     2021-02-02 22:01:26   timer6_Sa       08:00-16:00,D,21 16:00-21:30,D,21
     2021-02-02 22:01:26   timer7_So       08:00-16:00,D,21 16:00-21:30,D,21
   helper:
Attributes:
   autoCalcTemp 1
   disable    0
   event-on-change-reading .*
   room       Heizkreise
   tempDay    21
   tempNight  18
   tempRule1  Mo-Fr 6:00,D 16:00,D 20:30,N
   tempRule2  Sa-So 8:00,D 16:00,D 21:30,N



Mein PWM:
Internals:
   CYCLETIME  900
   DEF        60 900 120 0.85 1,1 4,1,0.25
   FUUID      5fd0dfc6-f33f-2d68-b2c5-cf8f736a52182689
   INTERVAL   60
   MINONOFFTIME 120
   MaxPulse   0.85
   MaxSwitchOffPerCycle 1
   MaxSwitchOnPerCycle 1
   NAME       Heizkreissteuerung
   NR         293
   NoRoomsToStayOff 1
   NoRoomsToStayOn 4
   NoRoomsToStayOnThreshold 0.25
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2021-02-03 15:55:35
   TYPE       PWM
   p_cycletime 900
   p_interval 60
   p_maxPulse 0.85
   p_minOnOfftime 120
   p_overallHeatingSwitch
   p_roomsMinOnOffThreshold 4,1,0.25
   READINGS:
     2021-02-02 22:01:26   OverallHeatingSwitch
     2021-02-02 22:01:26   OverallHeatingSwitchWaitBeforeOn
     2021-02-02 22:01:26   OverallHeatingSwitchWaitUntilOff
     2021-02-03 15:55:35   avgPulseRoomsOff 0.11
     2021-02-03 15:55:35   avgPulseRoomsOn 0
     2021-02-03 15:55:35   lastrun         calculating
     2021-02-03 15:55:35   pulseAvg        0.11
     2021-02-03 15:55:35   pulseAvg2       0.11
     2021-02-03 15:55:35   pulseAvg3       0.11
     2021-02-03 15:55:35   pulseMax        0.11
     2021-02-03 15:55:35   pulseSum        0.99
     2021-02-03 15:55:35   roomsActive     9
     2021-02-03 15:55:35   roomsOff        9
     2021-02-03 15:55:35   roomsOn         0
     2021-02-03 15:55:35   roomsToStayOn   0
     2021-02-03 15:55:35   roomsToStayOnList
     2021-02-03 15:55:35   state           lastrun: 2021-02-03 15:55:35
   helper:
     pulses:
       Heizung_PWM_Bad 0.11 / 0
       Heizung_PWM_Eltern 0.11 / 0
       Heizung_PWM_Essen 0.11 / 0
       Heizung_PWM_Flur 0.11 / 0
       Heizung_PWM_Gast 0.11 / 0
       Heizung_PWM_Kind1 0.11 / 0
       Heizung_PWM_Kind2 0.11 / 0
       Heizung_PWM_WC 0.11 / 0
       Heizung_PWM_Wohnen 0.11 / 0
Attributes:
   room       Heizkreise
   valveProtectIdlePeriod 50
   verbose    0


Mein Actor:
Internals:
   DEF        00021849_02
   FUUID      5f1c90f3-f33f-2d68-fadd-d1b6a458d614beb1
   NAME       Heizung_EssenKueche
   NR         242
   STATE      off
   TYPE       HM485
   chanNo     02
   device     RS485ModulEG
   peerRole   none
   READINGS:
     2021-02-03 14   state           off
   devHash:
     DEF        00021849
     FUUID      5f1c90f0-f33f-2d68-0bca-66c3f9668cf6e906
     FailedConfigReads 0
     IODev      hm485
     NAME       RS485ModulEG
     NR         219
     RawDeviceType 28
     RawFwVersion 50
     STATE      ACK
     TYPE       HM485
     channel_01 Heizung_Wohnen
     channel_02 Heizung_EssenKueche
     channel_03 Heizung_Flur
     channel_04 Heizung_WC
     channel_05 HMW_IO_12_Sw14_DR_QEQ1334558_05
     channel_06 HMW_IO_12_Sw14_DR_QEQ1334558_06
     channel_07 Raffstore_Kueche_down
     channel_08 Raffstore_Kueche_up
     channel_09 Raffstore_Wohnen_down
     channel_10 Raffstore_Wohnen_up
     channel_11 Raffstore_Essen_down
     channel_12 Raffstore_Essen_up
     channel_13 HMW_IO_12_Sw14_DR_QEQ1334558_13
     channel_14 HMW_IO_12_Sw14_DR_QEQ1334558_14
     channel_15 Raffstore_Taster_Kind1_up
     channel_16 Raffstore_Taster_Kind1_down
     channel_17 Raffstore_Taster_Kind2_up
     channel_18 Raffstore_Taster_Kind2_down
     channel_19 Raffstore_Taster_Eltern_up
     channel_20 Raffstore_Taster_Eltern_down
     channel_21 Raffstore_Taster_Wohnen_up
     channel_22 Raffstore_Taster_Wohnen_down
     channel_23 Raffstore_Taster_Essen_up
     channel_24 Raffstore_Taster_Essen_down
     channel_25 Raffstore_Taster_Kueche_up
     channel_26 Raffstore_Taster_Kueche_down
     READINGS:
       2021-02-02 22   D-deviceKey     HMW_IO12_SW14_DR
       2021-02-02 22   D-fwVersion     0.5
       2021-02-02 22   D-serialNr      QEQ1334558
       2021-02-02 22   R-central_address 00000001
       2021-02-02 22   configStatus    OK
       2021-01-11 21   state           ACK
     cache:
       sets       Unknown argument ?, choose one of  config getConfig raw reset 
       01:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  on-till-overnight blink off-for-timer on-till intervals off-till-overnight on-for-timer off-till
         peeredChannels:
       02:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-till on-for-timer on-till intervals off-till-overnight blink on-till-overnight off-for-timer
         peeredChannels:
       03:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-for-timer blink on-till-overnight intervals on-till off-till-overnight on-for-timer off-till
         peeredChannels:
       04:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-till on-for-timer intervals on-till off-till-overnight off-for-timer blink on-till-overnight
         peeredChannels:
       05:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-for-timer on-till-overnight blink intervals off-till-overnight on-till on-for-timer off-till
         peeredChannels:
       06:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  intervals off-till-overnight on-till off-for-timer blink on-till-overnight off-till on-for-timer
         peeredChannels:
       07:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  intervals on-till off-till-overnight on-till-overnight blink off-for-timer off-till on-for-timer
         peeredChannels:
       08:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  blink on-till-overnight off-for-timer on-till intervals off-till-overnight on-for-timer off-till
         peeredChannels:
       09:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-till on-for-timer on-till intervals off-till-overnight off-for-timer on-till-overnight blink
         peeredChannels:
       10:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  intervals on-till off-till-overnight on-till-overnight blink off-for-timer off-till on-for-timer
         peeredChannels:
       11:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-for-timer blink on-till-overnight on-till intervals off-till-overnight on-for-timer off-till
         peeredChannels:
       12:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-till on-for-timer intervals on-till off-till-overnight blink on-till-overnight off-for-timer
         peeredChannels:
       13:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  off-till on-for-timer intervals on-till off-till-overnight off-for-timer on-till-overnight blink
         peeredChannels:
       14:
         allowedSets on off toggle
         sets       Unknown argument ?, choose one of  config off on toggle  intervals off-till-overnight on-till off-for-timer on-till-overnight blink off-till on-for-timer
         peeredChannels:
       15:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       16:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       17:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       18:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       19:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       20:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       21:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       22:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       23:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       24:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       25:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       26:
         allowedSets
         sets       Unknown argument ?, choose one of  config 
         peeredChannels:
       linkParams:
         actuator:
           channels   00
         sensor:
           channels   00
       peers:
         sensors:
Attributes:
   room       Heizkreise,Wohnen
   subType    digital_output



Danke,
Simon

jamesgo

Hallo Simon,

ich verstehe deinen Aktor nicht.

commandref sagt: <actor>[:<a_regexp_on>]

Welches Kommando verwendest du um ihn zu schalten? Funktioniert folgendes?

set Heizung_EssenKueche on
set Heizung_EssenKueche off

Um den Status des Autors zu ermitteln wird auf das Internal "STATE" zugegriffen ... da steht bei dir sicher nicht "state" statt "on" drin.

Evtl. brauchst ein dummy object das dann deinen Aktor mit dem richtigen Befehl bedient.

Grüße
Andy

brucky@freenet.de

Hallo Andy,

danke für die schnell prüfen.

das mit set ... on / off funkioniert. Das LIST vom Actor ist komisch, vermutlich weil das ein Kanal eines großen HM485 Modules ist. Ich denke auch das mit State ist OK:

ich hab mal einen Snipper vom Actor angehängt.

Ich denke das sollte schon passen...


jamesgo

dann muss es "Heizung_EssenKueche" statt "Heizung_EssenKueche:state" heissen

jamesgo

Wenn es der Aktor nicht war, dann setze beim PWM das Attribut "verbose" auf 3. Dann kannst du im Log die Entscheidungen sehen.

brucky@freenet.de

Hallo Jamsgo, doch das wars... Danke!

Hast Du vielleicht noch einen heißen TIP für mich: In einer Raum steht ein Schwedenofen, wenn der läuft, möchte ich, dass die Fußbodenheizung nicht anspringt, egal wie große das DELTA zwischen Soll und Ist von diesem Raum ist.

Danke :-),
Simon

jamesgo

Hallo Simon,
wenn du willst dass ein Raum garnicht heizt hast du zwei Möglichkeiten:

set ... frostProtect on (dann steht das Soll auf 6 Grad)
attr ... disable 1

Viele Grüße
Andy

brucky@freenet.de

Hi Jamesgo,

Danke, so mach ichs.ein notify das mit den raum in der Heizwert auf disable setzt.

Grüße,
Simon

Frank-Synology-DS215J

Dank des tollen Moduls steuere ich seit zwei Jahen meine FBH. Ich habe zwei Mischerkreise EG und OG. Dementsprechend habe ich das Modul PWM zweimal angelegt.
Jeder Kreis besteht aus neun Ventilen. In dem Screenshot sieht man meinen Plot wann welches Ventil angesteuert wurde, mit der Vorlauftemperatur des Mischerkreises. Ich habe die MaxOffTime meist wiefolgt definiert:2:00,DCEN,0:15,1.0 damit der Fußboden nicht auskühlt, wenn die Raumtemperatur erreicht ist und
die wieder Aufheizphase nicht zu lange dauert.Erhöhe ich die Zeit oder den Interval fange ich sogar wieder an zu "Heizen"
In dem Screenshot haben sämtliche Räume die Raumtemperatur erreicht und man sieht den "Erhaltungspuls" (MaxOffTime)
(Die Einführung des Parameters MaxOffTime ist ne super Sache ;) )

Meine Frage: besteht die Möglichkeit diese zeitversetzt zu starten , so das ich eine gleichebleibendere Auslastung habe ?

jamesgo

#849
Hallo,
ich hatte diese Erweiterung schon mal zum testen vorgestellt. Es hatte sich aber kein Interessent gefunden.

Verwende doch mal die beiden angehängten Module.
Beim PWM kannst du dann ein Attribut "maxOffTimeMode" setzten.
Werte sind "max" (so wie jetzt: möglichst alle Räume gleichzeitig) oder 1, 2, 3 (Anzahl der Räume die von maxOffTime gleichzeitig auf "on" gesetzt werden können).

Viele Grüße
Andy


Skusi

Das ist genau das was ich gerade mit meinem Wohnzimmer, das aus 3 Kreisen beheizt wird, probiere.

Zitatich hatte diese Erweiterung schon mal zum testen vorgestellt. Es hatte sich aber kein Interessent gefunden.

Ich hatte das wohl gelesen und freute mich das sowas nun im Modul eingebaut wurde, sah aber noch nicht die Notwendigkeit diese "Betas" zu installieren.

Durch die Einstellungen :
MaxSwitchOffPerCycle 3
MaxSwitchOnPerCycle 1
NoRoomsToStayOff 2
NoRoomsToStayOn 0

bekomme ich das im Bild zu sehende Verhalten der Ventile wenn die MaxOffTime greift.
Also genau so wie ich es haben wollte. Dazu ist zu bemerken das mein Wohnzimmer einen eigenes PWM Modul hat.

Die neue Funktion habe ich noch nicht ausprobiert.
RPI3B, SIGNALduino, NanoCul868 (a-culfw), JeeLink Clone (LaCrosse), Firmata  für FB Heizung,Wasser+Gas+Klingel+Lux, Somfy Rolladen, Pollin Steckd.,TX29DTH,ESPEasy an S0 Stromz., MAX Fensterkontakte, IButton, SonOff Tasmota, ESP LED Controler

phys1

Zitat von: jamesgo am 26 Februar 2021, 14:54:17
Verwende doch mal die beiden angehängten Module.
Beim PWM kannst du dann ein Attribut "maxOffTimeMode" setzten.
Werte sind "max" (so wie jetzt: möglichst alle Räume gleichzeitig) oder 1, 2, 3 (Anzahl der Räume die von maxOffTime gleichzeitig auf "on" gesetzt werden können).

Hallo,

ich habe maxOffTimeMode=1 mal mit 5 Räumen und maxOffTime=3:00,DECN,0:59,3.5 für alle Räume getestet. Da sich mit 5 Räumen, 3 h maximaler "Off"-Zeit und 59 min "On"-Impuls ein Überlapp der Pulse ergibt, war es interessant zu sehen, wie sich PWM verhalten würde. Das Erbegnis sieht man im Bild:
Während der Räume Gartenzimmer und Kinderzimmer je 2 "On"-Impulse (blaue Rechtecke) während der Nacht erhalten, erhält das Wohnzimmer gar keinen. Die 3.5° maximale Temperaturüberhöhung war nicht überschritten und die Regelungssumme war auf Null (magenta Kringel, Skala um -1.5 versetzt), es muss also etwas mit der Priorisierung der "On"-Impulse nicht stimmen. (Im Modul PWM habe ich bei den maximal im Zustand on bzw. off befindlichen Räumen jedenfalls keine Einschränkung gemacht.)

Was man auch noch sieht: Der D-Anteil ist nach unten nicht auf -1 begrenzt (Wohnzimmer und Küche ca. 15:00 nach dem Lüften). Der P-Anteil wird hingegen bei 0 begrenzt. M.E. muss er bis -1 aussteuern dürfen, wenn die Ist-Temperatur deutlich über der Soll-Temperatur liegt.

Zur Erinnerung: im Modul PWM ist immer noch der Fehler drin, dass bei Änderung der Definitions-Parameter mittels defmod die Schleife PWM_Calculate (Zeile 1213) mehrfach gestartet wird, so dass das Timing durcheinander gerät. Bei PWMR hattest du das durch Entfernen des alten Timers korrigiert.

Alles in allem funktionieren die beiden Module sehr gut, nochmals danke dafür!

Gruß
phys1

jamesgo

Hallo phys,

danke für die Rückmeldung. Aus den Graphen das Verhalten zu Debuggen ist sehr schwierig.
Da hilft nur bei PWM das Attribut verbose auf 3 zu setzten und das Logfile anzuschauen.

Bzgl. dem Mehrfachstart: der Fehler ist behoben, allerdings direkt in der Routine und nicht beim Aufruf.

Viele Grüße
Andy

phys1

Zitat von: jamesgo am 11 März 2021, 12:25:50
Da hilft nur bei PWM das Attribut verbose auf 3 zu setzten und das Logfile anzuschauen.

Bzgl. dem Mehrfachstart: der Fehler ist behoben, allerdings direkt in der Routine und nicht beim Aufruf.

Hallo,

ich lasse es nochmal mit verbose 3 über Nacht laufen.

Der Mehrfachstart von PWM nach einem defmod ist definitiv noch drin (Testversion mit maxOffTimeMode, s. Logbuffer, nur die Zeilen mit PWM_Calculate Heizung, cycletime ist 120 s):
2021.03.11 14:33:18 3: PWM_Calculate Heizung
2021.03.11 14:35:18 3: PWM_Calculate Heizung
2021.03.11 14:37:18 3: PWM_Calculate Heizung
2021.03.11 14:37:43 3: PWM Define Heizung     -> hier wurde nur der Parameter minonofftime geändert
2021.03.11 14:37:53 3: PWM_Calculate Heizung
2021.03.11 14:39:18 3: PWM_Calculate Heizung
2021.03.11 14:39:53 3: PWM_Calculate Heizung
2021.03.11 14:41:18 3: PWM_Calculate Heizung
2021.03.11 14:41:53 3: PWM_Calculate Heizung

Die P, I und D-Readings in den Räumen werden ebenfalls doppelt so häufig aktualisiert, was das Timing vom I- und D-Anteil durcheinander bringt.

Viele Grüße
phys1

jamesgo

Stimmt.
Du hattest die doppelten Timer für das PWMR Modul bemängelt. Dort hatte ich es auch gefixt.
Jetzt ist es auch im PWM gefixt und ist ab morgen über "update" verfügbar.