Fussbodenheizung mit PWM steuern

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

Vorheriges Thema - Nächstes Thema

wowogiengen

Hallo Andy,
konstant ist was anderes, das stimmt.

Die Temperatur schwankt zwischen 23.8°C und 24.3°C:

wowogiengen

Zitat von: jamesgo am 29 Dezember 2017, 16:26:41
hast du nach der Änderung des fh einen "shutdown restart" gemacht?
Hallo Andy,
ich habe jetzt bereits mehrfach "shutdown restart" eingegeben, aber irgendwie bleiben die Readings energyused und energyusedp aktuell...

Ist das schlecht? Oder was kann ich noch machen?

Was bewirkt es eigentlich, wenn die PID_PWMOnTime innerhalb der 15-Minuten-Periode neu berechnet wird? Ich habe laut Plot da ja nie einen konstanten Wert über die 15 Minuten, sondern der wächst an und wird wieder kleiner...

Viele Grüße
Wolfgang

sash.sc

Hallo zusammen.

Habe ja einen Raum zu testzwecken über PWM laufen. Das funktioniert jetzt auch soweit ganz gut.
Habe nur festgestellt, dass die Regelung im Schnitt 0,3°C bis 0,5°C unter der geforderten Solltemperatur bleibt.
Gibt es da einen Offset, oder ist das so gewollt ????

Hier mal die DEF´s


Internals:
   CHANGED   
   CYCLETIME  1200
   DEF        60 1200 120 0.92 1,1 0,0,0.2
   INTERVAL   60
   MINONOFFTIME 120
   MaxPulse   0.92
   MaxSwitchOffPerCycle 1
   MaxSwitchOnPerCycle 1
   NAME       PWM_Bad
   NR         441
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0.2
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2018-01-06 16:40:12
   TYPE       PWM
   p_cycletime 1200
   p_interval 60
   p_maxPulse 0.92
   p_minOnOfftime 120
   p_overallHeatingSwitch
   p_roomsMinOnOffThreshold 0,0,0.2
   READINGS:
     2018-01-06 16:03:01   OverallHeatingSwitch
     2018-01-06 16:03:01   OverallHeatingSwitchWaitBeforeOn
     2018-01-06 16:03:01   OverallHeatingSwitchWaitUntilOff
     2018-01-06 16:40:12   avgPulseRoomsOff 0
     2018-01-06 16:40:12   avgPulseRoomsOn 0.16
     2018-01-06 16:40:12   lastrun         calculating
     2018-01-06 16:40:12   pulseAvg        0.16
     2018-01-06 16:40:12   pulseAvg2       0.16
     2018-01-06 16:40:12   pulseAvg3       0.16
     2018-01-06 16:40:12   pulseMax        0.16
     2018-01-06 16:40:12   pulseSum        0.16
     2018-01-06 16:40:12   roomsActive     1
     2018-01-06 16:40:12   roomsOff        0
     2018-01-06 16:40:12   roomsOn         1
     2018-01-06 16:40:12   roomsToStayOn   0
     2018-01-06 16:40:12   roomsToStayOnList
   helper:
     pulses:
       PWMR_Bad   0.16 / 0
Attributes:
   event-min-interval .*:300
   event-on-change-reading .*
   group      Bad
   room       10_Bad,20_Heizung



Internals:
   ACTOR      EG_HZ_bad
   DEF        PWM_Bad 1,0 ts_bad_eg:temperature EG_HZ_bad
   INTERVAL   300
   IODev      PWM_Bad
   NAME       PWMR_Bad
   NR         459
   STATE      Calculating
   TEMPSENSOR ts_bad_eg:temperature
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      EG_HZ_bad
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0
   c_frostProtect 0
   c_tempC    23
   c_tempD    22
   c_tempE    19
   c_tempFrostProtect 12
   c_tempN    20
   c_tempRule1 1-5 0400,D 2245,N
   c_tempRule2 6-0 0600,D 2245,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   p_actor    EG_HZ_bad
   p_factor   1,0
   p_pid     
   p_tsensor  ts_bad_eg:temperature
   p_window   
   t_reading  temperature
   t_regexp   ([\d\.]+)
   t_sensor   ts_bad_eg
   w_regexp   .*Open.*
   windows   
   READINGS:
     2018-01-06 16:41:12   PWMOnTime       03:12
     2018-01-06 16:41:12   PWMPulse        16
     2018-01-06 16:41:12   actorState      off
     2018-01-06 16:40:12   desired-temp    22.0
     2017-12-31 09:15:11   desired-temp-until no
     2018-01-06 16:41:12   desired-temp-used 22.0
     2018-01-06 16:41:12   energyused      000011110000000000000000011110
     2018-01-06 16:41:12   energyusedp     26.7
     2018-01-06 16:41:12   lastswitch      1515253272
     2017-12-18 20:07:47   manualTempDuration 0
     2018-01-06 16:41:12   oldpulse        0.16
     2018-01-06 16:41:12   temperature     21.6
     2018-01-06 16:03:02   timer1_Mo       04:00-22:45,D,22
     2018-01-06 16:03:02   timer2_Di       04:00-22:45,D,22
     2018-01-06 16:03:02   timer3_Mi       04:00-22:45,D,22
     2018-01-06 16:03:02   timer4_Do       04:00-22:45,D,22
     2018-01-06 16:03:02   timer5_Fr       04:00-22:45,D,22
     2018-01-06 16:03:02   timer6_Sa       06:00-22:45,D,22
     2018-01-06 16:03:02   timer7_So       06:00-22:45,D,22
   helper:
Attributes:
   autoCalcTemp 1
   group      Bad
   loglevel   0
   room       10_Bad,20_Heizung
   tempCosy   23
   tempDay    22
   tempFrostProtect 12
   tempNight  20
   tempRule1  Mo-Fr 4:00,D 22:45,N
   tempRule2  Sa-So 6:00,D 22:45,N


Der Treshold der in der def angegeben wird, bezieht dieser sich auf die Pulse oder auf die Raumtemp. ?

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

wowogiengen

Hallo Sascha,
soweit ich es weiss, ist das bei der normalen P-Regelung normal, wenn die Raumtemperatur zu kalt bleibt... Ich habe auf PID umgestellt, und seitdem passt es fast 100%...

Viele Grüße
Wolfgan

sash.sc

Wie hast du den PID20 Regler den in die PWM eingebunden ?

werde aus der WIKI und Commandref nicht schlauch, wie ich das auf das PWm Modul übertragen kann.
Hast du ein Beispiel für den Code ??

Danke und Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

wowogiengen

Lies mal die Antworten #561 und 562 durch, da ist das define fh und define PWMR drinne...

sash.sc

PWM und PWMR ist ja bei mir definiert. Ich habe bis jetzt noch nix gefunden, um den pid Regler da ins pwm und oder pwmr einzubinden.

Oder läuft der pid parallel zu pwm/pwmr?

Gruß Sascha

Gesendet von meinem...... was auch immer

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

wowogiengen

Hallo Sascha,
das hängt mit den Parametern zusammen:

define PWMRBad PWMR fh 1 HzgStatusBad:temperature HzgAktorBad dummy 1:0.8:0.3,15:0.5,10

In der commandref steht da folgendes:

define <name> PWMR <IODev> <factor[,offset]> <tsensor[:reading:[t_regexp]]> <actor>[:<a_regexp_on>] [<window|dummy>[,<window>[:<w_regexp>]] [ <usePID=0> | <usePID=1>:<PFactor>:<IFactor>[,<ILookBackCnt>]:<DFactor>[,<DLookBackCnt>] | <usePID=2>:<PFactor>:<IFactor>:<DFactor>[,<DLookBackCnt>] ]

<name> ist PWMRBad
PWMR ist der Typ des neuen Device, also PWMR
<IODev> ist fh
<factor[,offset]> ist 1
<tsensor[:reading:[t_regexp]]> ist HzgStatusBad:temperature
<actor>[:<a_regexp_on>] ist HzgAktorBad
[<window|dummy>[,<window>[:<w_regexp>]] ist dummy
[ <usePID=0> | <usePID=1>:<PFactor>:<IFactor>[,<ILookBackCnt>]:<DFactor>[,<DLookBackCnt>] | <usePID=2>:<PFactor>:<IFactor>:<DFactor>[,<DLookBackCnt>] ]

ist : 1:0.8:0.3,15:0.5,10
also
<usePID> = 1
:<PFactor> = 0.8
:<IFactor> = 0.3
,<ILookBackCnt> = 15
:<DFactor> = 0.5
,<DLookBackCnt>=10

also müsste da ein PID-Regler, mit Algorithmus 1, dem P-Faktor 0.8, I-Faktor 0.3 und D-Faktor von 0.5 mit 15 bzw. 10 Werten Lookback eingestellt sein.

Viele Grüße
Wolfgang

sash.sc

Danke.

Werde mal schauen

Gesendet von meinem...... was auch immer

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

@wowogiengen

Also, die PID Regler Implementierung hat es gebracht. Man sieht deutliche Veränderungen bei den Impulsen. Der Aktor wird länger geschaltet und die Temp. geht auch Richtung Sollwert.

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

wowogiengen

Hallo @Andy,
ich habe jetzt seit einer Woche die Vor- und Rücklauftemperatur mitprotokolliert.
Sieht soweit ganz gut aus. Rücklauftemperatur ist vom Verlauf her aber immer noch sehr viel glatter als die Vorlauftemperatur.

Meine Fragen:
- Wie kann ich mir von meinen 4 Aktoren, welche die Heizkreisventile ansteuern, denn einen Plot bilden, der angibt wieviele Aktoren zur gleichen Zeit auf on / 100 % stehen?
- Wenn die Aktoren gefühlt zu oft schalten, kann ich dann einfach die MinOnOffTime des PWM hochnehmen? Aber wahrscheinlich nur soweit, wie die CycleTime eingestellt ist:

define fh PWM 60 900 180 1 1,1 0,0,0
würde dann vielleicht zu
defmod fh PWM 60 900 750 1 1,1 0,0,0

- Darf ich eigentlich nur ein PWM haben, oder könnte ich meine 4 Räume auch einzeln über je 1 PWM regeln?

Viele Grüße
Wolfgang

jamesgo

Hallo Wolfgang,

Wenn die Rücklauftemperatur sofort auf eine Schwankung beim Vorlauf reagieren würde, dann wäre der Volumenstrom der Heizung viel zu hoch oder es gäbe keinen Verbraucher. Das passt schon so.

- einen Plot für die einzelnen Räume bekommst du aus "actorState". Mit '$fld[3]=~"on"?1:0' wandelst du on/off in 1/0. Du kannst mehrere Plots in einem Chart anzeigen indem du die einzelnen Linien nach oben verschiebst z.B. '($fld[3]=~"on"?1:0)*0.97+1'.
Die Gesamtzahl kennt das PWM object als "roomsOn".

- wenn du die "MinOnOffTime" hoch setzt dann passiert halt nichts bis der Puls mindestens 12:30 Minuten lang wird. Das macht das Ganze vermutlich träge. Vielleicht solltest du eher die PID Parameter verändern. Das kann man aber nur am Chart (bzw. an den zugrunde liegenden Daten) abschätzen. "Zu oft schalten" ist da zu ungenau um eine Aussage zu treffen.

- Du kannst für jeden Raum ein eigenes PWM machen ... dann fehlt aber z.B. Beispiel die Info wieviele Räume gleichzeitig an sind und es gibt keine Möglichkeit durch Parameter eine optimale Belastung der Heizung zu erzeugen.

Grüße
Andy

wowogiengen

Hallo Andy,
danke für die ausführliche Antwort,
langsam blicke ich immer mehr durch.
Ich habe leider noch nicht immer alle Messwerte und Parameter so in den Logdateien, wie "wir" es gerne haben möchten...
Die RoomsOn z.B. fehlen mir, das liegt aber wohl daran, dass die Logdevices die RegExp dafür nicht intus haben?
Das mit den Plots habe ich früher auch schon so gemacht, aber damit kann sehe ich im Detail ja nur, welcher Raum wann an und wann aus war, die Summe aller Räume wäre ja dann RoomsOn, was ich momentan nicht habe :(

Mich irritiert bei meinem Vorlaufplot die Sache, dass zu manchen Zeiten es so aussieht, als ob die Gastherme so wenig Wärme nachliefert, dass die Vorlauftemperatur nur sehr langsam steigt...

Dann gibt es aber wieder Zeiten, in denen im gleichen Zeitraum (sagen wir 1h) die Vorlauftemperatur etliche Male zwischen einem Min- und Maxwert hin und her pendelt, so als ob die Therme merken würde, jemand braucht Energie, die Energie wird erzeugt, aber bevor sie dann von der Therme weg kann, wird bereits wieder abgeschalten.
Schau dir mal dazu das Bild an.
Auf dem Bild sind von unten nach oben Bad, Büro, Schlafen und Wohnen abgebildet, also der Prozentwert des jeweiligen Heizungsaktors. Im Büro sieht man noch die Vorlauftemperatur (der ganzen Heizung) mitgeplottet.

So gegen 8 und 15 Uhr würde ich sagen, passt alles, aber die anderen Zeiten, da schwankt mir die Vorlauftemperatur sehr arg...

Ich dachte zuerst, vielleicht liegt es daran, dass nur 1 Raum Wärme braucht, aber da sind ja auch Zeiten dabei, wo mehrere Räume auf an sind (zumindest pulst da der entsprechende Aktor).

Wenn es notwendig sein sollte, dann zeichne ich nochmal die Vorlauftemperatur und den RoomsOn-Wert vom PWM-Modul mit auf...
Viele Grüße
Wolfgang


gadget

Hallo,

ich mache grade die ersten Schritte mit PWM und PWMR. Mir ist aufgefallen, dass PWMR immer nur als Status "Calculating" liefert und PWM liefert "lastrun ...". Warum kann man das nicht per StateFormat anpassen und da interessantere Dinge ausgeben ? Wird in der attr Liste nicht angeboten ....

Grüße, gadget

jamesgo

Hallo gadget,

ich schau mir das an.

Grüße
Andy