FB_BA_PIDCtrl

Universeller PID-Regler

FB_BA_PIDCtrl 1:

Funktionsbeschreibung

Dieser Regler ist als Standard-PID-Regler in Parallelstruktur ausgelegt. Für einen Regler mit wählbaren P-Glied (vorgelagert oder parallel zu I- und D) siehe bitte FB_BA_PIDCtrlEx.

Wirkungsplan

FB_BA_PIDCtrl 2:

Passiv-Verhalten (bEn = FALSE oder bErr = TRUE)

Die Ausgänge werden wie folgt gesetzt:

lrY

0,0

lrE

0,0

bAct

FALSE

bARW

FALSE

bMinLim

FALSE

bMaxLim

FALSE

bIncLim

FALSE

bDecLim

FALSE

Im Fehlerfall steht bErr auf TRUE - udiErrId und udiErrArg beschreiben den Fehler. 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 "sauber", das heißt ohne Vergangenheitswerte berechnet.

Aktiv-Verhalten (bEn = TRUE und bErr = FALSE)

Im ersten Zyklus werden I- und D-Anteil wie bereits erwähnt ohne Vergangenheitswerte berechnet und somit "sauber" aufgestartet. Ein positives Signal an bSync setzt den I-Anteil so, dass die Stellgröße den Wert lrSync annimmt. Diese Methode kann, wenn bEn und bSync gleichzeitig gesetzt werden, zum Setzen eines Initialwerts 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, handelt es sich doch um eine Setz-Aktion. Für ein erneutes Synchronisieren, etwa auf einen Übergabewert, muss am Eingang bSync ein erneutes TRUE-Signal angelegt werden. Ist der I-Anteil aktiv so sorgt der Regler dafür, dass dieser fest gehalten wird, sollte sich der Reglerausgang lrY an den Grenzen lrYMin oder lrYMax befinden und noch weiter fallen bzw. steigen wollen. Dieses Verfahren wird Anti-Reset-Wind-Up genannt und trägt dafür Sorge, 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

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

lrX-lrW (Istwert-Sollwert)

direkt (Kühlen)

FALSE

lrW-lrX (Sollwert-Istwert)

indirekt (Heizen)

Anti-Reset-Windup bei Erreichen des Maximal- bzw Minimalwerts

Erreicht der Regler am Ausgang seine Obergrenze und ist die Regelabweichung weiterhin positiv, so wird der Integralanteil sich so lange weiter erhöhen, bis die Regelabweichung wieder kleiner oder gleich Null ist. Dies kann dazu führen, dass sich unnötigerweise ein sehr hoher Integralanteil aufbaut, der bei einer Vorzeichenänderung der Regelabweichung erst wieder abgebaut werden muss und das Regelverhalten träge macht. Das gleiche gilt auch bei Erreichen des Minimalwerts am Ausgang bei einer weiterhin negativen Regelabweichung. Um diesem vorzubeugen wird, sobald einer der beiden Fälle eintritt, der I-Anteil nicht weiter berechnet, sondern auf dem Wert des vorhergehenden SPS-Zyklus gehalten. Tritt eine Vorzeichenumkehr ein, also Maximalwert erreicht und Regelabweichung kleiner als 0.0 bzw. Minimalwert erreicht und Regelabweichung größer als 0.0, so wird der I-Anteil wieder berechnet.

Steigungsbegrenzung

Ist der Regler schneller eingestellt, als das Stellglied, so kann dieses dem Regler nicht folgen, was zu einem Schwingverhalten führen kann. Daher gibt es die Möglichkeit die Steigung der Stellgröße zu begrenzen.

Als Maß dafür gelten die Zeiten:

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrYMin auf lrYMax.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrYMax auf lrYMin.

Hieraus lässt sich jeweils die maximale Änderung pro SPS-Zyklus - das maximale Inkrement oder Dekrement - errechnen. Ist die berechnete Änderung des Stellsignals über einen SPS-Zyklus nun höher als die durch udiMinToMax bzw. udiMaxToMin eingestellte, so wird das Stellsignal lediglich um das maximale Inkrement oder Dekrement erhöht bzw. erniedrigt. Der I-Anteil wird dabei intern auf dieselbe Art nachgeführt ( I-Anteil des letzten SPS-Zyklus + maximales Inkrement bzw. I-Anteil des letzten SPS-Zyklus - maximales Dekrement).

Neutrale Zone (Deadband)

Ein Wert von lrNZ > 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.
Wenn das Totbandglied aktiv ist wird der Eingangswert erst dann als neuer Ausgangswert durchgereicht, wenn der Absolutwert der Differenz vom Eingangswert zum jetzigen Ausgangswert größer oder gleich lrNZ/2 ist.

Beispiel: lrNZ = 1, lrYin = 55.0, lrYout= 55.0 (Wert wurde gerade durchgereicht)

PLC-Zyklus+1

lrYin=55.2

lrYout=55.0

PLC-Zyklus+2

lrYin=55.3

lrYout=55.0

PLC-Zyklus+3

lrYin=55.1

lrYout=55.0

PLC-Zyklus+4

lrYin=55.6

lrYout=55.6

PLC-Zyklus+5

lrYin=55.4

lrYout=55.6

PLC-Zyklus+6

lrYin=55.3

lrYout=55.6

PLC-Zyklus+7

lrYin=55.1

lrYout=55.1

Durch diese Funktion sollen unnötig viele Stellimpulse vermieden werden.

Zweipunkt-Regelverhalten

- nicht mehr vorhanden -

Autokorrektur von Parametern

Bei einigen Parametern macht es Sinn, sie automatisch zu korrigieren bzw. zu begrenzen, ohne eine Fehlermeldung auszugeben, da die Erwartung des Anwenders eindeutig vorhersehbar ist:

Ein-Ausgänge

VAR_INPUT

bEn         : BOOL;
bActn       : BOOL;
bSync       : BOOL;
lrSync      : LREAL;
lrW         : LREAL;
lrX         : LREAL;
lrNZ        : LREAL;
lrYMin      : LREAL;
lrYMax      : LREAL;
lrKp        : LREAL;
udiTn       : UDINT;
udiTv       : UDINT;
udiTd       : UDINT;
udiMinToMax : UDINT;
udiMaxToMin : UDINT;
uiCycCl     : UINT;

bEn: Regleraktivierung

bActn: Wirksinn des Reglers

bSync / lrSync: Synchronisationsbefehl: Ausgangswert lrY auf lrSync setzen

lrW: Sollwert

lrX: Istwert

lrNZ: Neutrale Zone

lrYMin: Untere Ausgabebegrenzung des Reglers

lrYMax: Obere Ausgabebegrenzung des Reglers

lrKp: Reglerverstärkung. Wirkt nur auf den P-Anteil

udiTn: Nachstellzeit des I-Anteiles [ms] . Ein Nullwert an diesem Parameter schaltet den I-Anteil ab.

udiTv: Vorhaltezeit des D-Anteiles [ms] . Ein Nullwert an diesem Parameter schaltet den D-Anteil ab.

udiTd: Dämpfungszeit des D-Anteiles [ms]

udiMinToMax: Steigungsbegrenzung des Reglerausgangs für Anstieg: udiMinToMax [s] bezogen auf eine Änderung von lrYMin auf lrYMax.

udiMaxToMin: Steigungsbegrenzung des Reglerausgangs für Abfall: udiMaxToMin [s] bezogen auf eine Änderung von lrYMax auf lrYMin.

uiCycCl: Aufrufzyklus des Bausteins als Vielfaches der Zykluszeit. Ein Nulleintrag wird automatisch als uiCycleCall=1 gewertet.
Beispiel: tTaskCycleTime = 20ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_OUTPUT

lrY        : LREAL;
lrE        : LREAL;
bAct       : BOOL;
b2PtAct    : BOOL;
bARW       : BOOL;
bMinLim    : BOOL;
bMaxLim    : BOOL;
bDecLim    : BOOL;
bIncLim    : BOOL;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

lrY: Stellgröße. Bereich durch lrYMin und lrYMax eingeschränkt.

lrE: Regelabweichung (die Berechnung ist abhängig vom Wirksinn)

bAct: Der Regler ist aktiv, das heißt freigegeben (bEn = TRUE) und nicht im Fehlerzustand (bErr = FALSE).

bARW: Anti-Reset-Windup-Funktion ist aktiv

b2PtAct: wird nicht mehr benötigt.

bMaxLim: Die Stellgröße hat ihren oberen Grenzwert erreicht.

bMinLim: Die Stellgröße hat ihren unteren Grenzwert erreicht.

bDecLim: Die Stellgrößen-Steigung hat ihren Grenzwert für das maximale Abfallen erreicht, siehe udiMaxToMin (VAR_INPUT).

bIncLim : Die Stellgrößen-Steigung hat ihren Grenzwert für den maximale Anstieg erreicht, siehe udiMinToMax (VAR_INPUT).

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrId / udiErrArg: Enthält die Fehlernummer und das Fehlerargument. Siehe Fehlercodes.

Voraussetzungen

Entwicklungsumgebung

Zielsystem

erforderliche Bibliothek

erforderliches Supplement

TwinCAT 2.11 R3/x64

PC/CX

TcBA-Bibliothek ab V1.0.0

TS8040 | TwinCAT Building Automation ab V1.0.0