|
|
(15 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| | | #REDIRECT [[PID20_-_Der_PID-Regler]] |
| '''PID''' ist ein Modul, das nach dem P-I-D Algorithmus einen Regler realisiert. | | '''PID''' ist ein Modul, das nach dem P-I-D Algorithmus einen Regler realisiert. |
| | | Mittlerweile gibt es einen Nachfolger: [[PID20 - Der PID-Regler]] |
| == Projekt-Status ==
| |
| Das neue Modul befindet sich in der Evaluations-Phase und ist noch nicht für produktiven Einsatz freigegeben.
| |
| Die nachfolgenden Ausführungen dienen zur Spezifizierung derneuen geplanten Funktionalitäten.
| |
| | |
| == Features ==
| |
| * einstellbarer Bewertungs-/Berechungszyklus
| |
| * Überwachung des Istwert-Gebers über dessen Zeitstempel (Sensorausfall)
| |
| * Skalierbarkeit der Ausgabehäufigkeit an das Stellglied über Zeit und Mindeständerung
| |
| * Zwangsausgabe an das Stellglied nach Ablauf eines einstellbaren Zeitintervalls
| |
| * Notstellung des Stellgliedes, falls Istwert-Geber ausgefallen ist
| |
| * Begrenzung des Stellbereiches nach oben und unten
| |
| * Festlegung der Nachkommastellen (0..5) des Ausgabewertes zum Stellglied
| |
| * Festlegen einer minimalen Regelabweichung, ab der der Regler aktiv wird
| |
| * Festlegen des Reading-Namens für den Sollwert
| |
| * Festlegen des Reading-Namens für den Istwert
| |
| * Invertierung des Reglerwirksinnes
| |
| * Festlegen der minimalen Aktualisierungsrate der Readings
| |
| * Festlegen der Proportionalitätskonstanten P,I,D
| |
| | |
| === Attribute ===
| |
| {| class="wikitable sortable"
| |
| |-
| |
| ! Parameter !! Wertebereich !! Default !! Beschreibung
| |
| |-
| |
| |pidActorValueDecPlaces||[0..5]||0||Anzahl der Nachkommstellen für Ausgabewert zu Aktor
| |
| |-
| |
| |pidActorInterval||uint||180||minimale Wartezeit in Sekunden, bis neue Ausgabe an das Stellglied erfolgen kann
| |
| |-
| |
| |pidActorThreshold||uint||1||Notwendige minimale Änderung zum Altwert der Stellgliedausgabe, damit diese erneut erfolgt
| |
| |-
| |
| |pidActorErrorAction||[freeze, errorPos]||freeze||legt das Verhalten der Ausgabe zum Stellglied fest, wenn der Istwert nicht innerhalb von <pidSensorTimeout> aktualisiert wurde (Sensor-Ausfall) <br />
| |
| freeze: Position des Stellgliedes beibehalten<br />
| |
| ErrorPos: Position anfahren, die unter Attribut <pidActorErrorPos> angegeben ist."
| |
| |-
| |
| |pidActorErrorPos||int||0||Diese Position ist einzunehmen, wenn pidActorErrorAction auf errorPos steht und der Istwert-Geber ausgefallen ist.
| |
| |-
| |
| |pidActorKeepAlive||uint||1800||Spätestens nach dieser Zeit erfolgt eine Zwangsausgabe an das Stellglied
| |
| (wenn PID nicht disabled und nicht stopped)
| |
| |-
| |
| |pidActorLimitLower||float||0||untere Begrenzung für das Stellglied
| |
| |-
| |
| |pidActorLimitUpper||float||100||obere Begrenzung für das Stellglied
| |
| |-
| |
| |pidCalcInterval||uint||60||Berechnungszyklus in Sekunden, nach dem die PID-Berechnung durchgeführt wird.
| |
| |-
| |
| |pidDeltaTreshold||uint||0||wenn die Regeldifferenz(delta) kleiner al pidDeltaThreshold,, dann wird der Regler eingefroren (state= idle)
| |
| |-
| |
| |pidDesiredName||string||desired||Name für das Reading, das den Sollwert für den Regler aufnehmen soll
| |
| |-
| |
| |pidMeasuredName||string||measured||Name für das Reading, das den Istwert für den Regler aufnehmen soll
| |
| |-
| |
| |pidSensorTimeout||uint||3600||Zeitlimit in Sekunden, nach dessen Überschreitung der Ausfall des Istwert-Gebers anzunehmen ist
| |
| |-
| |
| |pidReverseAction||[0,1]||0||Umgekehrter Wirksinn des Reglers
| |
| |-
| |
| |pidUpdateInterval||uint||300||Zeitlimit in Sekunden, nach der ein Zwangsupdate der Readings erfolgen muss (Kurvendarstellung).
| |
| |-
| |
| |pidFactor_P||pos. float||25||Proportionalitätskonstante für P-Anteil
| |
| | |
| |-
| |
| |pidFactor_I||pos. float||0,25||Proportionalitätskonstante für I-Anteil
| |
| | |
| |-
| |
| |pidFactor_D||pos. float||0||Proportionalitätskonstante für D-Anteil
| |
| |-
| |
| |disable||[0,1]||0||Freigabe/Sperren des Reglers
| |
| |}
| |
| | |
| == Hintergrund-Informationen ==
| |
| === Anti-WindUp-Strategie ===
| |
| Der integrale Anteil des PID-Reglers wird ohne Gegenmassnahmen auch dann weiter integriert, | |
| wenn das Stellglied bereits an seine Grenzen gestossen ist.
| |
| Dies hat den Nachteil, dass nach einer Reduzierung der Regeldifferenz lange Wartezeiten entstehen können, bis das
| |
| Stellglied reagiert.
| |
| Dies nennt man den WindUP-Effekt.
| |
| Hierzu wurde die folgende Strategie entwickelt:
| |
| | |
| [[Datei:13 10 20 PID Windup.png|WindUP]]
| |
| | |
| Sobald das rechnerische Stellsignal (Ventilstellung Calc) die obere Grenze des Stellgliedes überschreitet (pidActorLimitUpper) oder die untere Grenze unterschreitet (pidActorLimitLower), wird die Integration
| |
| des I-Anteils eingefroren.
| |
| | |
| | |
| '''Am Beispiel:'''
| |
| | |
| An Position L1 überschreitet der rechnerische Ausgabewert des Stellgliedes die obere Grenze (100%).
| |
| Der I-Anteil verändert sich nicht mehr bis zur Position L2. Hier unterschreitet der Augabewert die
| |
| obere Grenze, der I-Anteil kann wieder verändert werden.
| |
| | |
| == Weblinks ==
| |
| | |
| * [http://forum.fhem.de/index.php/topic,15060.0.html Forumseintrag zur Überarbeitung des Moduls ab 2013/09]
| |
| * [http://de.wikipedia.org/wiki/Regler Wikipedia Regler]
| |
| | |
| [[Kategorie:Glossary]] | | [[Kategorie:Glossary]] |
| | [[Kategorie:Regelungstechnik]] |