Benötige einige Regler für die Schichtspeicher Beheizung und bin über den PID20 Regler gestoßen.
Nur bekomme ich diesen einfach nicht zum Laufen.
Habe unter den Readings immer den Eintrag alarm - missing desired.
Irgendwie dürfte ich bei der Konfiguration etwas falsch verstanden haben.
Istwert ist die Temperatur des SSP.
Aktor ist derzeit wegen des Tests noch ein Dummy der später durch einen Aktor abgelöst wird.
Der Aktor soll zwischen 30 und 100% arbeiten.
Die Config des PID Regler
define R5 dummy
attr R5 group SSP
attr R5 room Heizung
define PID.R5 PID20 DL2_T03:state R5
attr PID.R5 event-min-interval actuation:1800,actuationCalc:1800,delta:1800,desired:1800,measured:1800,p_d:1800,p_i:1800,p_p:1800
attr PID.R5 event-on-change-reading actuation:1,actuationCalc:0.5,delta:0.2,desired,measured:0.2,p_d:0.1,p_i:1.0,p_p:1.0
attr PID.R5 group SSP
attr PID.R5 pidActorErrorAction freeze
attr PID.R5 pidActorErrorPos 0
attr PID.R5 pidActorInterval 180
attr PID.R5 pidActorKeepAlive 1800
attr PID.R5 pidActorLimitLower 30
attr PID.R5 pidActorLimitUpper 100
attr PID.R5 pidActorTreshold 1
attr PID.R5 pidActorValueDecPlaces 0
attr PID.R5 pidCalcInterval 60
attr PID.R5 pidDebugActuation 0
attr PID.R5 pidDebugCalc 0
attr PID.R5 pidDebugDelta 0
attr PID.R5 pidDebugNotify 0
attr PID.R5 pidDebugSensor 0
attr PID.R5 pidDebugUpdate 0
attr PID.R5 pidDeltaTreshold 0
attr PID.R5 pidDesiredName Sollwert
attr PID.R5 pidFactor_D 0
attr PID.R5 pidFactor_I 0.25
attr PID.R5 pidFactor_P 25
attr PID.R5 pidMeasuredName Istwert
attr PID.R5 pidReverseAction 0
attr PID.R5 pidSensorTimeout 3600
attr PID.R5 pidUpdateInterval 300
Was habe ich hier falsch gemacht?
Was ist denn der Sollwert (desired)?
Der Sollwert ist 40°C
Wenn du damit startest und dann nach und nach deine anderen attr einfügst...
Internals:
CHANGED
DEF DL2_T03:state R5
NAME PID.R5
NR 28
NTFY_ORDER 50-PID.R5
STATE processing
TYPE PID20
VERSION 1.0.0.9
Readings:
2016-11-13 20:16:37 Istwert 43
2016-11-13 20:16:37 actuation 30
2016-11-13 20:16:37 actuationCalc -22
2016-11-13 20:16:37 delta -1
2016-11-13 20:16:37 desired 42
2016-11-13 20:16:37 p_d 0
2016-11-13 20:16:37 p_i 3
2016-11-13 20:16:37 p_p -25
2016-11-13 16:52:53 sollwert 50
2016-11-13 20:16:37 state processing
Helper:
actor R5
actorCommand
actorErrorAction freeze
actorErrorPos 0
actorInterval 180
actorKeepAlive 1800
actorLimitLower 30
actorLimitUpper 100
actorThreshold 1
actorTimestamp 2016-11-13 20:13:37
actorValueDecPlaces 0
adjust
calcInterval 60
deltaTreshold 0
desiredName desired
disable 0
factor_D 0
factor_I 0.25
factor_P 25
isWindUP 1
measuredName Istwert
reading state
regexp ^([\+,\-]?\d+\.?\d*$)
reverseAction 0
sensor DL2_T03
sensorTimeout 3600
stopped 0
updateInterval 300
Attributes:
event-min-interval actuation:1800,actuationCalc:1800,delta:1800,desired:1800,measured:1800,p_d:1800,p_i:1800,p_p:1800
event-on-change-reading actuation:1,actuationCalc:0.5,delta:0.2,desired,measured:0.2,p_d:0.1,p_i:1.0,p_p:1.0
pidActorErrorAction freeze
pidActorInterval 180
pidActorKeepAlive 1800
pidActorLimitLower 30
pidActorLimitUpper 100
pidActorTreshold 1
pidActorValueDecPlaces 0
pidCalcInterval 60
pidDeltaTreshold 0
pidFactor_D 0
pidFactor_I 0.25
pidFactor_P 25
pidMeasuredName Istwert
pidReverseAction 0
pidSensorTimeout 3600
pidUpdateInterval 300
room Heizung
Wie ist das gemeint.
Habe den Fehler im PID20 gefunden.
Hier wird der Name für pidDesiredName nicht richtig übernommen.
pidDesiredName ist bei mir mit Sollwert definiert. Nur wird der Name Sollwert als sollwert für die Readings übernommen.
Beim pidMeasuredName wird die Definition in meinem Fall Istwert richtig übernommen. Da ist im PID20 ein Umsatzungsfehler beim Sollwert der zwangsweise eine Kleinschreibung durchführt.
Belasse ich den Sollwert Namen bei desired funktioniert der Regler.
Sowie ich pidDesiredName und bei alle anderen desired Parameter auf Sollwert ändere, streikt das Modul und kommt mit der Meldung alarm - missing desired.
Ich hatte dasselbe Problem und habe es wie folgt gelöst:
pidDesiredName gelöscht und ein userReadings eingefügt
das so aussehen könnte: desired { ReadingsVal ("Heizung.DG.VorlaufSoll", "state",30);;}
Etwas späte Antwort aber vielleicht hilft es jemand anderem :)
für alle die noch den Fehler haben: TLDR: PID20 Zieltemperatur (desired) einmal ändern warten
Um - nach noch mehr Zeit - etwas Licht ins Dunkel zu bringen:
Der PID20 Regler wartet auf ein event das den Wert von desired updated und das event update feuert, daher kann ein Dummy das nicht so einfach machen.
Ein Userreading sollte aber auch nicht nötig sein, sondern prüfen ob das Device das den desired wert liefert, entweder warten bis event-min-interval das macht, oder den Slider/set Befehl einmal selber aufrüfen.