Hallo,
leider verstehe ich nicht warum ich bei meinem PID20 für den Küchenthermostaten
keinen idle state hinbekomme außer processing.
Kann mir da bitte jemand mit mehr Erfahrung unter die Arme greifen?
Liegt es eventuell an dem negativ Vorzeichen Wert von delta ?
Momentan liegen die Raumtemperaturen ja noch über den Sollwerten.
Hänge hier mal ein List PID20 für den Küchen ZWave Thermostaten an.
Save config
Floorplans
Heizraum
Alarm/Sicherheit
Wohnung
Verkehrsinfo
Keller
Wetter
Abfall
Multimedia
TV
Entwicklung
FRITZBOX
Log_Dateien
Photovoltaik
Plots
Residents
RolloControl
Server
Steuerung
Unsorted
ZWave
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
FHEM_Neustart
Internals:
DEF Kuechesensor:temperature KUECHE_ZW_THERMOSTAT:dim
FUUID 5cbcf503-f33f-cca1-5cc5-64f58c16b53df6e5
NAME pidregler_kueche
NR 299
NTFY_ORDER 50-pidregler_kueche
STATE processing
STILLDONETIME 0
TYPE PID20
VERSION 1.0.0.9
Helper:
DBLOG:
actuation:
myDbLog:
TIME 1598102383.53355
VALUE 0
actuationCalc:
myDbLog:
TIME 1598102383.53355
VALUE -175.559999999995
desired:
myDbLog:
TIME 1598102383.53355
VALUE 22
measured:
myDbLog:
TIME 1598102563.65841
VALUE 25.6
p_i:
myDbLog:
TIME 1598102383.53355
VALUE 4.44000000000518
p_p:
myDbLog:
TIME 1598102383.53355
VALUE -180
READINGS:
2020-08-22 15:22:43 actuation 0
2020-08-22 15:22:43 actuationCalc -175.559999999995
2020-08-22 15:22:43 delta -3.6
2020-08-22 15:22:43 desired 22
2020-08-22 15:22:43 measured 25.6
2020-08-22 15:22:43 p_d 0
2020-08-22 15:22:43 p_i 4.44000000000518
2020-08-22 15:22:43 p_p -180
2020-08-22 15:22:43 state processing
helper:
actor KUECHE_ZW_THERMOSTAT
actorCommand dim
actorErrorAction errorPos
actorErrorPos 5
actorInterval 300
actorKeepAlive 3600
actorLimitLower 0
actorLimitUpper 99
actorThreshold 1
actorTimestamp 2020-08-22 14:55:42
actorValueDecPlaces 0
adjust
calcInterval 180
deltaGradient 0
deltaOld -3.6
deltaOldTS 2020-08-22 15:16:38
deltaTreshold 1
desiredName desired
disable 0
factor_D 0
factor_I 0.2
factor_P 50
isWindUP 1
measuredName measured
reading temperature
regexp ^([\+,\-]?\d+\.?\d*$)
reverseAction 0
sensor Kuechesensor
sensorTimeout 7200
stopped 0
updateInterval 600
Attributes:
DbLogExclude state,delta,p_d
DbLogInclude measured,desired,actuation,p_p,p_i,actuationCalc
event-min-interval actuation:300,actuationCalc:300,delta:300,desired:300,measured:300,p_d:300,p_i:300,p_p:300
event-on-change-reading actuation:1,actuationCalc:0.5,delta:0.5,desired,measured:0.5,p_d:0.1,p_i:1.0,p_p:1.0
group Thermostate
pidActorErrorAction errorPos
pidActorErrorPos 5
pidActorInterval 300
pidActorKeepAlive 3600
pidActorLimitLower 0
pidActorLimitUpper 99
pidActorTreshold 1
pidActorValueDecPlaces 0
pidCalcInterval 180
pidDeltaTreshold 1
pidFactor_D 0
pidFactor_I 0.2
pidFactor_P 50
pidSensorTimeout 7200
room Wohnung->Küche
danke für Eure Mühe sagt
Hans-Jürgen
Zitat von: Deckoffizier am 22 August 2020, 15:23:56
leider verstehe ich nicht warum ich bei meinem PID20 für den Küchenthermostaten
keinen idle state hinbekomme außer processing.
Internals:
DEF Kuechesensor:temperature KUECHE_ZW_THERMOSTAT:dim
FUUID 5cbcf503-f33f-cca1-5cc5-64f58c16b53df6e5
NAME pidregler_kueche
NR 299
NTFY_ORDER 50-pidregler_kueche
STATE processing
STILLDONETIME 0
TYPE PID20
VERSION 1.0.0.9
Helper:
DBLOG:
actuation:
myDbLog:
TIME 1598102383.53355
VALUE 0
actuationCalc:
myDbLog:
TIME 1598102383.53355
VALUE -175.559999999995
desired:
myDbLog:
TIME 1598102383.53355
VALUE 22
measured:
myDbLog:
TIME 1598102563.65841
VALUE 25.6
p_i:
myDbLog:
TIME 1598102383.53355
VALUE 4.44000000000518
p_p:
myDbLog:
TIME 1598102383.53355
VALUE -180
READINGS:
2020-08-22 15:22:43 actuation 0
2020-08-22 15:22:43 actuationCalc -175.559999999995
2020-08-22 15:22:43 delta -3.6
2020-08-22 15:22:43 desired 22
2020-08-22 15:22:43 measured 25.6
2020-08-22 15:22:43 p_d 0
2020-08-22 15:22:43 p_i 4.44000000000518
2020-08-22 15:22:43 p_p -180
2020-08-22 15:22:43 state processing
helper:
actor KUECHE_ZW_THERMOSTAT
actorCommand dim
actorErrorAction errorPos
actorErrorPos 5
actorInterval 300
actorKeepAlive 3600
actorLimitLower 0
actorLimitUpper 99
actorThreshold 1
actorTimestamp 2020-08-22 14:55:42
actorValueDecPlaces 0
adjust
calcInterval 180
deltaGradient 0
deltaOld -3.6
deltaOldTS 2020-08-22 15:16:38
deltaTreshold 1
desiredName desired
disable 0
factor_D 0
factor_I 0.2
factor_P 50
isWindUP 1
measuredName measured
reading temperature
regexp ^([\+,\-]?\d+\.?\d*$)
reverseAction 0
sensor Kuechesensor
sensorTimeout 7200
stopped 0
updateInterval 600
Attributes:
DbLogExclude state,delta,p_d
DbLogInclude measured,desired,actuation,p_p,p_i,actuationCalc
event-min-interval actuation:300,actuationCalc:300,delta:300,desired:300,measured:300,p_d:300,p_i:300,p_p:300
event-on-change-reading actuation:1,actuationCalc:0.5,delta:0.5,desired,measured:0.5,p_d:0.1,p_i:1.0,p_p:1.0
group Thermostate
pidActorErrorAction errorPos
pidActorErrorPos 5
pidActorInterval 300
pidActorKeepAlive 3600
pidActorLimitLower 0
pidActorLimitUpper 99
pidActorTreshold 1
pidActorValueDecPlaces 0
pidCalcInterval 180
pidDeltaTreshold 1
pidFactor_D 0
pidFactor_I 0.2
pidFactor_P 50
pidSensorTimeout 7200
room Wohnung->Küche
Das liegt daran, dass delta größer als pidDeltaTreshold (1) ist.
Der PID20 geht immer davon aus, dass eine Änderung des Stellwertes auch eine Änderung des IST-Wertes bewirkt. In diesem Fall soll ein kleiner Stellwert (0) bewirken, dass die Temperatur (IST-Wert) fällt. Bei der aktuellen Witterung passiert das aber nicht und der PID20 versucht permanent den Stellwert so zu setzen (processing), dass der SOLLWERT erreicht wird.
Du kannst idle erreichen, wenn du
a) den Soll-Wert der Temperatur auf 25.6°C bzw. zwischen 24.61 und 26.59°C stellst
b) den pidDeltaTreshold größer machst
Du brauchst dir aber keine Gedanken machen, lediglich der I-Anteil wird, wenn es etwas kühler wird, auf 0 reduziert. Der Wird aber in der Heizperiode auch wieder aufgebaut. Das Verhalten ist völlig normal und unbedenklich.
Grüße
Andreas
Hallo Andreas,
Danke für die gute Erklärung !
Regeltechnik ist schon ein weites Feld.
Am anderen Thermostaten mit PID20 hat es sich schon bestätigt.
Setze es dann auf gelöst.
Viele Grüße
Hans-Jürgen