FB_BA_PIDCtrl

Universeller PID-Regler, wahlweise in Parallelstruktur oder mit vorgelagertem P-Glied.
Funktionsbeschreibung
Dieser Regler ist intern in zwei aufeinander folgende Teile gegliedert:
- der Regler selbst, in den unten aufgeführten Wirkungsplänen als P-, I- und D-Anteil dargestellt mit einer Ausgangsbegrenzung (Limitation).
- einem Totbandglied (Deadband), welches die Ausgangsänderungen des Reglers mit einer Hysterese beaufschlagt.
Wirkunsplan
udiMode=0 (P-Anteil vorgelagert):

udiMode=1 (Parallelstruktur):

Passiv-Verhalten (bEn = FALSE)
Die Ausgänge werden wie folgt gesetzt:
rY | 0,0 |
rE | 0,0 |
bARW | FALSE |
Die internen Werte für P-, I-, und D-Anteil werden auf 0 gesetzt, ebenso die Werte für den I- und D-Anteil vom vorhergehenden Zyklus. Damit wird die Stellgröße bei einem Neustart im ersten Zyklus ohne Vergangenheitswerte berechnet.
Aktiv-Verhalten (bEn = TRUE)
Im ersten Zyklus werden I- und D-Anteil wie bereits erwähnt ohne Vergangenheitswerte berechnet und somit "sauber" aufgestartet.
Synchronisation
Ein positives Signal an bSync setzt den I-Anteil so, dass die Stellgröße den Wert rSync annimmt. Diese Methode kann, wenn bEn und bSync gleichzeitig gesetzt werden, zum Setzen eines Initialwertes genutzt werden, von dem aus die Regelung "losläuft". Ist der I-Anteil nicht aktiv, so wird der D-Anteil entsprechend gesetzt. Zu beachten ist, dass intern nur die steigende Flanke von bSync ausgewertet wird, da es sich um eine Setz-Aktion handelt. Für ein erneutes Synchronisieren, etwa auf einen Übergabewert, muss am Eingang bSync ein erneutes TRUE-Signal angelegt werden.
Anti-Reset-Windup
Ist der I-Anteil aktiv, so sorgt der Regler dafür, dass dieser festgehalten wird, sollte der Reglerausgang rY über die Grenzen rYMin oder rYMax hinausgehen wollen. Innerhalb des Reglers wird in jedem Zyklus eine Vorberechnung des Regler Ausgangs gemacht. Ist diese kleiner als die untere Ausgangsgrenze rYMin oder größer als die obere Grenze rYMax, so wird der I-Anteil derart angepasst, dass die Summe aus P-, I- und D-Anteil rYMin bzw. rYMax ergibt. Damit ist gewährleistet, dass der I-Anteil immer nur so groß ist, dass die Stellgröße bei entsprechender Regelabweichung sofort wieder Werte innerhalb der Grenzen annehmen kann, ohne dass ein zu groß gewordener Integralanteil zunächst noch abgebaut werden muss.
Wirksinn
Mit bActn = FALSE wird der Wirksinn des Reglers so umgekehrt, dass eine Regelabweichung kleiner als 0 eine Stellgrößenänderung ins Positive bewirkt. Dies wird dadurch erreicht, dass die Regelabweichung negativ berechnet wird:
bActn | rXW (Regelabweichung) | Wirksinn |
---|---|---|
TRUE | rX-rW (Istwert-Sollwert) | direkt (Kühlen) |
FALSE | rW-rX (Sollwert-Istwert) | indirekt (Heizen) |
Neutrale Zone
Ein Wert von rNZ > 0.0 gibt die Funktion der neutralen Zone (Deadband) frei. Ein Wert gleich Null deaktiviert das Totbandglied und die Werte am Eingang werden direkt durchgereicht.
Ist im aktiven Fall die Änderung am Eingang des Gliedes rYin in einem SPS-Zyklus im Vergleich zum vorhergehenden SPS-Zyklus kleiner als rNZ/2, so wird der Ausgang auf dem Wert des vorhergehenden Zyklus gehalten, bis die Änderung größer oder gleich rNZ/2 ist.
Beispiel: rNZ=1, rYin=55.0, rY=55.0
PLC-Zyklus+1 | rYin=55.2 | rY=55.0 |
PLC-Zyklus+2 | rYin=55.3 | rY=55.0 |
PLC-Zyklus+3 | rYin=55.1 | rY=55.0 |
PLC-Zyklus+4 | rYin=55.6 | rY=55.6 |
PLC-Zyklus+5 | rYin=55.4 | rY=55.6 |
PLC-Zyklus+6 | rYin=55.3 | rY=55.6 |
PLC-Zyklus+7 | rYin=55.1 | rY=55.1 |
Durch diese Funktion sollen unnötig viele Stellimpulse vermieden werden.
VAR_INPUT
bEn : BOOL;
rW : REAL;
rX : REAL;
udiOpMode : UDINT;
bActn : BOOL;
rKp : REAL;
udiTn_ms : UDINT;
udiTv_ms : UDINT;
udiTd_ms : UDINT;
rYMax : REAL;
rYMin : REAL;
rNZ : REAL;
udiCycCl : UDINT;
bSync : BOOL;
rSync : REAL;
bEn: Regleraktivierung.
rW: Sollwert.
rX: Istwert.
udiOpMode: udiMode=0: Regler mit vorgelagertem P-Anteil, udiMode=1: Regler in Parallelstruktur. Intern begrenzt auf die Werte 0 und 1.
bActn: Wirksinn des Reglers.
rKp: Reglerverstärkung. Wirkt nur auf den P-Anteil. Intern begrenzt auf einen Minimalwert von 0.
udiTn_ms: Nachstellzeit des I-Anteiles [ms]. Ein Nullwert an diesem Parameter schaltet den I-Anteil ab. Intern begrenzt auf einen Minimalwert von 0.
udiTv_ms: Vorhaltezeit des D-Anteiles [ms]. Ein Nullwert an diesem Parameter schaltet den D-Anteil ab. Intern begrenzt auf einen Minimalwert von 0.
udiTd_ms: Dämpfungszeit des D-Anteiles [ms]. Intern begrenzt auf einen Minimalwert von 0.
rYMax: Obere Ausgabebegrenzung des Reglers. Wählbarer Bereich: 0..100%.
rYMin: Untere Ausgabebegrenzung des Reglers [%]. Wählbarer Bereich: 0..100%. Der Wert rYMin wird nach oben hin durch rYMax begrenzt.
rNZ: neutrale Zone.
udiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Intern begrenzt auf einen Minimalwert von 1.
Beispiel: tTaskCycleTime = 20ms, udiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.
bSync / rSync: Synchronisationsbefehl: Ausgangswert rY auf rSync setzen. Der Wert rSync wird intern begrenzt auf Werte von rYMin bis rYMax.
VAR_OUTPUT
rY : REAL;
rE : REAL;
bARW : BOOL;
rY: Stellgröße. Bereich durch rYMin und rYMax eingeschränkt.
rE: Regelabweichung (Die Berechnung ist abhängig vom Wirksinn).
bARW: Anti-Reset-Windup-Funktion ist aktiv.
Voraussetzungen
Entwicklungsumgebung | Erforderliche Bibliothek | Erforderliche Function |
---|---|---|
TwinCAT3.1 4022.16 | Tc3_BA_Common ab V1.0.4.3 | TF8040 | TwinCAT Building Automation ab V1.0.5.0 |