Überarbeitung des Profils hvac.01/EEP A5-20-01 (Kieback&Peter MD15-FTL-xx u. a.)

Begonnen von klaus.schauer, 26 Januar 2016, 20:26:26

Vorheriges Thema - Nächstes Thema

klaus.schauer

Das Profil hvac.01 (Kieback&Peter MD15-FTL-xx u. a.) ist vollständig überarbeitet. Ziel ist es, die Bedienung zu erleichtern, die Readings und Attribute zu vereinheitlichen sowie den Ventilaktor Micropelt iTRV besser zu integrieren.

Eine wesentliche Neuerung des Profils ist der integrierte PID-Regler. Für eine Temperaturregelung bei einem Ventilaktor ohne selfCtrl-Mode wie dem Micropelt iTRV musste bisher das Modul PID20 zusätzlich genutzt werden. Die PID-Funktion im Profil hvac.01 hat u. a. den Vorteil, dass der aktuell gesendete Temperatur-Istwert des Aktors jetzt unverzögert in die Berechnung des Stellwertes einfließt.

Der in Fhem integrierter PID-Regler kann über das Attribut pidCtrl aus- und eingeschaltet werden.

Folgende Readings entfallen bzw. werden ersetzt:
   - measured-temp >> roomTemp
   - actuatorStatus >> actuatorState
   - selfCtl >> selfCtrl
   - serviceOn >> maintenanceMode
   - tempSensor entfällt
   - state x >> state T: x SPT: x SP: x

Folgende set-Befehle entfallen bzw. werden ersetzt:
   - actuator entfällt
   - valveOpen >> valveOpens
   - valveClosed >> valveCloses
   - unattended entfällt

Das Attribut actualTemp entfällt. Die Ist-Temperatur eines Raumthermostaten kann wie bisher über das Attribut temperatureRefDev verknüpft werden.

Ich möchte das Profil als update erst nach gründlichen Tests in verschiedenen Installationen zur Verfügung stellen. Deshalb hoffe ich auf ein paar Tester. Für meine Tests steht mir nur das Micropelt iTRVGerät zur Verfügung. Befehle wie valveOpens werden von diesen Geräten nicht unterstützt. Deshalb benötige ich insbesondere für die Servicefunktionen Unterstützung. Bitte vor dem Laden der Testversion Fhem per update aktualisieren.

Die Ventilaktoren sollten für den Test möglichst neu angelernt werden, ggf. reicht auch ein modify mit A5-20-01 aus. Bitte für die Tests neben der 10_EnOcean-Datei auch die Vorlagen für die Diagramme einspielen, siehe Anlage.

Einzelheiten sind in der commandref derzeit noch unter hvac.04 zu finden.

krikan

Habe Dateien in mein Produktivsystem kopiert, reload 10_EnOcean.pm und dann modify aufgerufen. Führt zu angehängtem Log mit einigen Warnungen. Nach erneutem Restart sind die weg. Keine Ahnung, ob das wichtig ist; wollte es Dir aber nicht vor enthalten. Ich werde mich jetzt erst mal in die Änderungen einarbeiten müssen und dann probieren. Kann etwas dauern...

Gruß, Christian

klaus.schauer

Ich führe immer mit einer neuen Modulversion ein shutdown restart aus. Ob reload ausreicht, kann ich nicht sagen.

krikan

Hallo Klaus!

Habe heute mit den Servicefunktionen des MD15 experimentiert. Ich muss aber ehrlicherweise gestehen, dass mir tieferer Sinn und Zweck der Servicefunktionen immer noch nicht klar sind. Das MD15-Handbuch finde ich dazu nicht sehr hilfreich. In regulären Betrieb habe ich die Funktionen noch nie genutzt. Darum verstehe ich auch nicht, warum bspw. nach dem Befehl valveOpens und Umstellung auf setPointTemp o.ä. der Befehl runinit automatisch zuerst abgesetzt wird.

Bei meinem Tests habe ich das Attribut pidCtrl auf off gesetzt, da nach meinem Verständnis der MD15 die Regelung eigenständig kann.

Der Aktor reagiert bei den Servicefunktionen valveCloss, valveOpens und runInit mMn entsprechend den Handbuchangaben ohne erkennbare Probleme. Die Servicefunktionen scheinen nur die manuelle (?) Überwachung des wakeUpCycle zu stören: "alarm: no_response_from_actuator" kommt dann manchmal.
Im FileLog sieht man das:
2016-02-06_10:42:30 Stellventil roomTemp: 22.3
2016-02-06_10:42:30 Stellventil T: 21.0 SPT: 21.0 SP: 40
2016-02-06_10:51:55 Stellventil roomTemp: 22.4
2016-02-06_11:42:30 Stellventil maintenanceMode: valveClosed
2016-02-06_11:42:30 Stellventil operationMode: off
2016-02-06_11:52:04 Stellventil setpointSet: 0
2016-02-06_11:52:04 Stellventil roomTemp: 22.6
2016-02-06_11:52:04 Stellventil T: 21.0 SPT: 20.0 SP: 40
2016-02-06_12:02:35 Stellventil alarm: no_response_from_actuator
2016-02-06_12:02:38 Stellventil roomTemp: 22.4
2016-02-06_12:02:38 Stellventil setpoint: 0
2016-02-06_12:02:38 Stellventil T: 21.0 SPT: 20.0 SP: 0
2016-02-06_12:04:53 Stellventil temperature: 21.1
2016-02-06_12:12:39 Stellventil roomTemp: 22.6
2016-02-06_12:12:39 Stellventil T: 21.1 SPT: 20.0 SP: 0
2016-02-06_12:22:44 Stellventil roomTemp: 22.4
2016-02-06_12:22:44 Stellventil setpointTemp: 21.0
2016-02-06_12:22:44 Stellventil maintenanceMode: off
2016-02-06_12:22:44 Stellventil operationMode: setpointTemp
2016-02-06_12:22:44 Stellventil T: 21.1 SPT: 21.0 SP: 0
2016-02-06_12:43:09 Stellventil roomTemp: 22.3
2016-02-06_12:43:09 Stellventil setpoint: 30
2016-02-06_12:43:09 Stellventil T: 21.1 SPT: 21.0 SP: 30
2016-02-06_12:58:42 Stellventil temperature: 21.2
2016-02-06_13:03:12 Stellventil T: 21.2 SPT: 21.0 SP: 30
2016-02-06_13:10:44 Stellventil temperature: 21.3
2016-02-06_13:13:23 Stellventil roomTemp: 22.4
2016-02-06_13:13:23 Stellventil setpoint: 19
2016-02-06_13:13:23 Stellventil T: 21.3 SPT: 21.0 SP: 19
2016-02-06_13:23:24 Stellventil roomTemp: 22.6
2016-02-06_15:13:39 Stellventil maintenanceMode: valveClosed
2016-02-06_15:13:39 Stellventil operationMode: off
2016-02-06_15:21:12 Stellventil temperature: 21.2
2016-02-06_15:21:50 Stellventil temperature: 21.3
2016-02-06_15:23:59 Stellventil setpointSet: 0
2016-02-06_15:23:59 Stellventil setpoint: 0
2016-02-06_15:23:59 Stellventil T: 21.3 SPT: 20.0 SP: 0
2016-02-06_15:35:47 Stellventil temperature: 21.4
2016-02-06_15:44:02 Stellventil setpointSet: 100
2016-02-06_15:44:02 Stellventil maintenanceMode: valveOpend:runInit
2016-02-06_15:44:02 Stellventil T: 21.4 SPT: 20.0 SP: 0
2016-02-06_15:55:14 Stellventil alarm: no_response_from_actuator
2016-02-06_15:55:14 Stellventil setpointSet: 100
2016-02-06_15:55:14 Stellventil setpoint: 100
2016-02-06_15:55:14 Stellventil T: 21.4 SPT: 20.0 SP: 100
2016-02-06_16:05:16 Stellventil setpointSet: 100
2016-02-06_16:05:16 Stellventil roomTemp: 22.7
2016-02-06_16:05:16 Stellventil maintenanceMode: runInit
2016-02-06_16:09:58 Stellventil temperature: 21.3
2016-02-06_16:16:18 Stellventil alarm: no_response_from_actuator
2016-02-06_16:16:28 Stellventil setpoint: 0
2016-02-06_16:16:28 Stellventil setpointTemp: 21.0
2016-02-06_16:16:28 Stellventil maintenanceMode: off
2016-02-06_16:16:28 Stellventil operationMode: setpointTemp
2016-02-06_16:16:28 Stellventil T: 21.3 SPT: 21.0 SP: 0
2016-02-06_16:26:45 Stellventil setpoint: 19
2016-02-06_16:26:45 Stellventil T: 21.3 SPT: 21.0 SP: 19
2016-02-06_16:46:48 Stellventil roomTemp: 22.6

Falls Du das fhem.log mit verbose 5 oder list Device dazu brauchst, melde Dich bitte.

Ich würde jetzt im Normalbetrieb weiter testen und probieren, wenn Du keine bestimmten Wünsche hast. Deinen urspünglichen Testwunsch "neu Anlernen" habe ich bisher nicht umgesetzt. Wenn es notwendig ist, mache ich das auch.

Gruß, Christian

klaus.schauer

Das sieht ja grundsätzlich gut aus. Danke für die Tests.

Die Alarmfunktion habe ich etwas umgebaut. Ich hoffe, damit sind die Fehlalarme jetzt weg. Die überarbeitete 10_EnOcean.pm siehe Anhang zum ersten Artikel.

Die automatische Steuersequenz runInit >> setpoint/setpointTemp nach valveOpens habe ich aus den Herstellerempfehlungen des Profils hvac.04 übernommen. Dort war darauf hingewiesen worden, dass der Antrieb nach dem vollständigen Öffnen durch valveOpens vor dem Regelbetrieb neu kalibriert werden sollte. Auch bei dem Profil hvac.01 wurden ja schon mehrfach Probleme mit dem Regelverhalten des Aktors geschildert. Diese könnten auf eine falsche Kalibrierung des Antriebs zurückzuführen sein.

Bitte den Aktor auch mal mit dem Fhem-PID-Regler betreiben, Attribut pidCtrl auf on. Mich würde interessieren, ob es Unterschiede im Regelverhalten gibt und ob ggf. die Grundeinstellungen des Fhem PID-Reglers optimiert werden sollten. Ich habe die PID-Parameter aus dem Modul PID20 übernommen. Beim Micropelt iTRV-Gerät scheint das eine brauchbare Einstellung zu sein.

krikan

Kleiner Zwischenbericht zum Betrieb mit FHEM-PID-Regler,  obwohl es hier am Niederhein für einen optimalen Stellantriebtest derzeit zu warm ist:

Bisher keine Funktionsprobleme. Mir fällt nur auf, dass FHEM-PID das Ventil in den Standardeinstellungen deutlich vorsichtiger öffnet als der MD15 selbst. Bei einer Abweichung Ist/Soll von 0.2 öffnet FHEM-PID im unteren einstelligen Bereich und MD15 mit 50-60. Bewerten kann ich es momentan noch nicht. Mit den FHEM-PID-Einstellungen habe ich nicht experimentiert.

"Fehl"alarme gab es bisher keine.

Der Ablauf der Steuersequenzen liest sich logisch und schaden kann dies wohl nicht.

klaus.schauer

Erfahrungen bei der optimalen Einstellung der PID-Parameter habe ich nicht. Die Standardeinstellungen liefern bei mir ein recht gutes Ergebnis mit max. Abweichungen der Raumtemperatur von 1 bis 1.5 K.

Beim Micropelt iTRV-Gerät muss aber ein externer Temperaturfühler eingesetzt werden. Der interne Fühler ist zu stark von der Vorlauftemperatur abhängig, schade. Darauf wird in der Gebrauchsanleitung hingewiesen. Ich nehme an, dass das bei dem MD15 besser ist.

krikan

Nutze beim MD15 seit längerem ein externes "temperatureRefDev"; auch während der Tests. Jedoch nicht wegen Problemen, sondern weil es den externen Sensor gibt. Der interne MD15-Fühler liefert um ca. 1-1,5 Grad zu hohe Werte; eine starke Abhängigkeit von der Vorlauftemperatur habe ich hier nicht festgestellt. Der MD15 funktionierte auch ohne externen Temperaturfühler bei mir gut.

Letztlich bin ich mir nicht sicher, ob es DIE optimalen PID-Parameter gibt. Interpretiere es momentan so: FHEM-PID reguliert langsam und abgestufter, während MD15 vorsichtigerweise (ängstlich?) direkt stark öffnet (typischerweis in 10er Schritten).

Ansonsten weiterhin keine Auffälligkeiten. Intensivere Tests kann ich erst am kommenden Wochenende machen; die nächsten Tage darf sich das geänderte Modul ungestört im Alltagsbetrieb bewähren.

krikan

Im Alltagsbetrieb über die letzte Woche wurde die gewünschte Temperatur von FHEM-PID gehalten (siehe Screenshot). Im Vergleich zu MD15-Eigenregulierung wird die Zieltemperatur mindestens genauso gut erreicht. Die MD15 Eigenregulierung führt häufiger zu überhöhten Temperaturen. Die wichtigere Zieltemp-Unterschreitung von 0,4-0,5 Grad ist bei MD5 Eigenregulierung genauso vorhanden, wie mit FHEM-PID.

Einzige Auffälligkeit ist, dass häufiger im Log "pidAlarm: dead_sensor" auftritt. Es sieht so aus, als würden in meiner Installation einzelne Telegramme verloren gehen. Warum ist mir unklar, da die Empfangsbedingungen eigentlich optimal sind. Das kann ich aber nicht Deiner Codeänderung anlasten. Es fiel vorher nur nicht direkt auf.

FileLog:
2016-02-12_19:34:57 Stellventil setpointCalc: 1.56694444444463
2016-02-12_19:38:07 Stellventil wakeUpCycle: 601
2016-02-12_19:38:07 Stellventil p_i: 6.40000000000017
2016-02-12_19:38:07 Stellventil setpointSet: 1
2016-02-12_19:38:07 Stellventil setpointCalc: 1.40000000000018
2016-02-12_19:38:07 Stellventil roomTemp: 21.6
2016-02-12_19:41:32 Stellventil p_i: 6.23305555555572
2016-02-12_19:41:32 Stellventil setpointCalc: 1.23305555555574
2016-02-12_19:44:57 Stellventil p_i: 6.06611111111128
2016-02-12_19:44:57 Stellventil setpointCalc: 1.0661111111113
2016-02-12_19:48:11 Stellventil wakeUpCycle: 604
2016-02-12_19:48:11 Stellventil p_i: 5.8983333333335
2016-02-12_19:48:11 Stellventil setpointCalc: 0.898333333333519
2016-02-12_19:48:11 Stellventil setpoint: 0
2016-02-12_19:48:11 Stellventil T: 21.2 SPT: 21.0 SP: 0
2016-02-12_19:51:37 Stellventil pidState: alarm
2016-02-12_19:51:37 Stellventil pidAlarm: dead_sensor
2016-02-12_19:55:03 Stellventil pidAlarm: dead_sensor
2016-02-12_19:58:14 Stellventil wakeUpCycle: 603
2016-02-12_19:58:14 Stellventil pidAlarm: dead_sensor
2016-02-12_19:58:14 Stellventil setpoint: 1
2016-02-12_19:58:14 Stellventil T: 21.2 SPT: 21.0 SP: 1
2016-02-12_20:01:39 Stellventil pidAlarm: dead_sensor
2016-02-12_20:05:05 Stellventil pidAlarm: dead_sensor
2016-02-12_20:08:15 Stellventil wakeUpCycle: 601
2016-02-12_20:08:15 Stellventil pidAlarm: dead_sensor
2016-02-12_20:09:59 Stellventil temperature: 21.1
2016-02-12_20:11:40 Stellventil p_p: -2.50000000000004
2016-02-12_20:11:40 Stellventil p_i: 5.81486111111128
2016-02-12_20:11:40 Stellventil setpointSet: 3
2016-02-12_20:11:40 Stellventil setpointCalc: 3.31486111111124
2016-02-12_20:11:40 Stellventil delta: -0.100000000000001
2016-02-12_20:11:41 Stellventil pidState: processing
2016-02-12_20:15:05 Stellventil p_i: 5.73138888888905
2016-02-12_20:15:05 Stellventil setpointCalc: 3.23138888888902
2016-02-12_20:18:17 Stellventil wakeUpCycle: 602
2016-02-12_20:18:17 Stellventil p_i: 5.64777777777794
2016-02-12_20:18:17 Stellventil setpointCalc: 3.14777777777791
2016-02-12_20:18:17 Stellventil roomTemp: 21.5
2016-02-12_20:18:17 Stellventil T: 21.1 SPT: 21.0 SP: 1


list
Internals:
   DEF        01000EFA
   IODev      TCM_ESP3_2
   LASTInputDev TCM_ESP3_2
   MSGCNT     84
   NAME       Stellventil
   NR         231
   NTFY_ORDER 50-Stellventil
   STATE      T: 20.7 SPT: 21.0 SP: 23
   TCM_ESP3_2_DestinationID FFFFFFFF
   TCM_ESP3_2_MSGCNT 84
   TCM_ESP3_2_PacketType 1
   TCM_ESP3_2_RSSI -58
   TCM_ESP3_2_ReceivingQuality excellent
   TCM_ESP3_2_RepeatingCounter 0
   TCM_ESP3_2_SubTelNum 3
   TCM_ESP3_2_TIME 2016-02-13 08:40:33
   TYPE       EnOcean
   Readings:
     2016-01-06 21:30:19   CMD             desired-temp
     2016-02-13 08:40:33   actuatorState   ok
     2016-02-13 08:40:33   battery         ok
     2016-02-13 08:40:33   cover           closed
     2016-02-13 08:40:33   delta           0.300000000000001
     2016-01-06 21:30:19   desired-temp    21
     2016-02-13 08:40:33   energyInput     disabled
     2016-02-13 08:40:33   energyStorage   empty
     2016-02-13 08:40:33   maintenanceMode off
     2016-02-13 08:40:33   operationMode   setpointTemp
     2016-02-13 08:40:33   p_d             0
     2016-02-13 08:40:33   p_i             16.3569444444446
     2016-02-13 08:40:33   p_p             7.50000000000002
     2016-02-13 08:40:33   pidState        processing
     2016-02-13 08:40:33   roomTemp        22.4
     2016-02-13 08:40:33   selfCtrl        off
     2016-02-05 19:04:52   serviceOn       no
     2016-02-13 08:40:33   setpoint        23
     2016-02-13 08:40:33   setpointCalc    23.8569444444446
     2016-02-13 08:40:33   setpointSet     24
     2016-02-13 08:40:33   setpointTemp    21.0
     2016-02-06 15:56:59   setpointTempSet 21.0
     2016-02-13 08:40:33   state           T: 20.7 SPT: 21.0 SP: 23
     2015-12-27 18:17:28   teach           4BS teach-in accepted EEP A5-20-01 Manufacturer: Kieback + Peter
     2016-02-05 19:04:52   tempSensor      ok
     2016-02-13 08:22:46   temperature     20.7
     2016-02-13 08:40:33   wakeUpCycle     603
     2016-02-13 08:40:33   window          closed
   Helper:
     actorErrorAction freeze
     actorErrorPos 0
     actorInterval 10
     actorKeepAlive 201
     actorLimitLower 0
     actorLimitUpper 100
     actorThreshold 0
     actorTimestamp 2016-02-13 08:40:33
     actorValueDecPlaces 0
     adjust
     calcInterval 201
     deltaGradient -5.92679989655755e-06
     deltaOld   0.300000000000001
     deltaOldTS 2016-02-13 08:22:46
     deltaTreshold 0
     factor_D   0
     factor_I   0.25
     factor_P   25
     isWindUP
     reverseAction 0
     sensorTimeout 2412
     stopped    0
     updateInterval 201
     alarmTimer:
       HASH(0x1b89d10)
       alarm
       no_response_from_actuator
       1
       3
     calcPID:

       HASH(0x1b89d10)
       periodic
Attributes:
   IODev      TCM_ESP3_2
   comMode    biDir
   destinationID unicast
   eep        A5-20-01
   event-on-change-reading .*
   manufID    00A
   pidCtrl    on
   room       EnOcean
   subDef     FFAEEE82
   subType    hvac.01
   summerMode off
   temperatureRefDev BTHR918N
   verbose    5
   webCmd     setpointTemp


Also bisher alles Bestens. Kann bis jetzt nichts feststellen, was einer Übernahme ins SVN entgegensteht. Danke!

klaus.schauer

Danke für die Tests. Sieht ja gut aus.

Bitte mal Attribut event-on-change-reading .* rausnehmen. Die PID-Prozedur prüft die Erreichbarkeit des Sensors auf Basis der Zeitabstände zwischen den Events. Falls sich also die Temperaturwerte nicht ändern und keine Events geschrieben werden, könnte es zum timeout kommen. Ich nutze event-on-change-reading .* nicht, deshalb kann ich nicht beurteilen, ob es wirklich damit zusammenhängt. Könnte aber in die Richtung gehen: Ich sehe im Diagramm keinen setpointTemp-Graphen. Es scheint deshalb auch dazu keinen Event dazu zu geben, da der Wert vermutlich ja auch konstant ist.

Ich werde die Änderungen jetzt veröffentlichen.

krikan

Zitat von: klaus.schauer am 13 Februar 2016, 09:10:15
Bitte mal Attribut event-on-change-reading .* rausnehmen.
Das scheint es zu sein. Tritt seitdem nicht mehr auf.
Laut fhem.log gab es in den Alarmphasen auch empfangene Telegramme ("EnOcean Stellventil received PacketType....").

klaus.schauer

Ich nehme das als Hinweis in die commandref auf.