PID20 I-Anteil, obwohl pidFactor_I = 0

Begonnen von abc2006, 30 Oktober 2017, 15:54:38

Vorheriges Thema - Nächstes Thema

abc2006

Hi,
habe heute mal wieder etwas am Regler herumgespielt.

Dabei ging es primär darum, in verschiedenen Regelbereichen verschiedene P/I/D-Faktoren zu nutzen.

Dabei ist mir aufgefallen, dass wenn ich den pid_Factor_I auf "0" setze, der Regler immernoch einen PID-Anteil berechnet.

Logisch schiene mir, dass sich der I-Anteil nicht mehr verändert (weil 0* delta =0; plus I_alt = I_alt) oder dass der I-Anteil vom Modul auf 0 gesetzt wird.

Leider kann ich einen Bedienfehler nicht ausschließen, deshalb die Bitte, ob ihr euch meinen Regler mal anschaut.

Grüße,
Stephan


Internals:
   DEF        OW_HV_RLA:temperature D_PID_HV
   NAME       PID_HV
   NR         27
   NTFY_ORDER 50-PID_HV
   STATE      stopped, A: -7500ms 2017-10-30 14:53:02
   TYPE       PID20
   VERSION    1.0.0.9
   READINGS:
     2017-10-30 14:53:02   actuation       -7500
     2017-10-30 14:53:02   actuationCalc   -8838.96578764913
     2017-10-30 14:53:02   delta           0.313000000000002
     2017-10-30 14:53:02   desired         62
     2017-10-30 14:53:02   measured        61.687
     2017-10-30 14:53:02   p_d             -16526.7657876491
     2017-10-30 14:53:02   p_i             7500
     2017-10-30 14:53:02   p_p             187.800000000001
     2017-10-30 14:53:01   restarted       7912.19388158604
     2017-10-30 14:53:31   state           stopped
   helper:
     actor      D_PID_HV
     actorCommand
     actorErrorAction freeze
     actorErrorPos 0
     actorInterval 1
     actorKeepAlive 1800
     actorLimitLower -7500
     actorLimitUpper 7500
     actorThreshold 1
     actorTimestamp 2017-10-30 14:53:02
     actorValueDecPlaces 0
     adjust
     calcInterval 30
     deltaGradient -0.110178438584328
     deltaOld   0.313000000000002
     deltaOldTS 2017-10-30 14:53:01
     deltaTreshold 0
     desiredName desired
     disable    0
     factor_D   5000
     factor_I   0
     factor_P   600
     isWindUP
     measuredName measured
     reading    temperature
     regexp     ^([\+,\-]?\d+\.?\d*$)
     reverseAction 0
     sensor     OW_HV_RLA
     sensorTimeout 3600
     stopped    1
     updateInterval 600
Attributes:
   comment    positive Werte: mehr Vorlaufwasser/Temperatur muss höher/nach links drehen
negative Werte: mehr kaltes Wasser/Temperatur soll niedriger/nach rechts drehen
   event-on-change-reading state
   event-on-update-reading actuation,actuationCalc,p_d,p_i,p_p,measured,desired,delta
   pidActorInterval 1
   pidActorLimitLower -7500
   pidActorLimitUpper 7500
   pidActorValueDecPlaces 0
   pidCalcInterval 30
   pidFactor_D 5000
   pidFactor_I 0
   pidFactor_P 600
   room       PID
   stateFormat {sprintf("%s, A: %.0fms %s",ReadingsVal($name,"state",0),ReadingsVal($name,"actuation",0),ReadingsTimestamp($name,"actuation",0))}
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

Hi, ich habe leider immernoch massiv das Problem, dass aufgrund langer Totzeiten der I-Wert zwischendurch massiv wächst, und ich das nicht in den Griff bekomme. Niemand einen Vorschlag, wie ich das lösen könnte?

Wenn (falls) keiner antwortet, weil die Lösung zuu trivial ist: Bitte helft mir doch kurz vom Schlauch runter.. ich kapier es nicht...

Danke,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

gerade ist mir auch aufgefallen, dass "restart" den I-Wert nicht auf 0 setzt... also .. nicht immer...

2017.11.03 23:22:51.746 3: PID20_DF PI: 113.486805758458
2017.11.03 23:22:51.747 3: PID20_DF PD: 90.8753739265242
2017.11.03 23:22:51.747 3: PID20_DF PP: 469.000000000001
2017.11.03 23:22:51.748 3: PID20_DF PP+PD: 469.000000000001 + 90.8753739265242 = 559.875373926525
2017.11.03 23:22:51.763 3: PID20 PID_HV: Set.383 set PID_HV restart 559.875373926525
2017.11.03 23:22:51.765 3: PID20_DF PI: 113.486805758458
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX