FB_BC9191PICtrl

Einfacher PI-Regler

FB_BC9191PICtrl 1:
Funktionsbaustein FB_BC9191PICtrl

Dieser PI-Regler arbeitet nicht direkt mit einem Verstärkungsfaktor Kp arbeitet, sondern berechnet sich diesen intern aus dem so genannten Proportionalband (Eingang rXp) bezogen auf die Stellgrößengrenzen (rYmin und rYmax). Daraus wird dann intern der Kp ermittelt.

Einstellung über das Proportionalband

Die Einstellung des Verstärkungsfaktors Kp eines Reglers birgt oft die Schwierigkeit für den Anwender, dass der Größenbezug zur Anwendung fehlt. Arbeitet eine Heizungsregelung normalerweise im zweistelligen Bereich, so kann eine Volumenstromregelung Werte in den fünfstelligen Bereichen annehmen. Es macht daher Sinn, den Kp-Faktor so darzustellen, dass er einen Bezug zur möglichen Regelabweichung und Stellgrößenänderung hat. Zur Dimensionierung des Kp-Faktors betrachtet man den P-Anteil des Reglers.
Für diesen gilt:

dieser Zusammenhang gilt auch für die Änderungen der Regelabweichung und der Stellgröße:

Bezogen auf den Minimal- und Maximalwert der Stellgröße, Y min und Ymax:

Diese Differenz, E(Ymax)-E(Ymin), wird Proportionalband (Xp) genannt. Umgestellt lautet die Gleichung dann:

Das folgende Diagramm verdeutlicht den funktionalen Zusammenhang:

FB_BC9191PICtrl 2:
Funktionaler Zusammenhang Xp

Das Proportionalband Xp gibt demnach die Größe des Bereiches der Regelabweichung an, die am Regler ausgangsseitig zu einer Ausgabe von Ymin bis Ymax führen.

Ein kleineres Xp führt zu einer steileren Funktion und damit zu einer Erhöhung des Kp-Faktors. Allerdings verschieben sich die Regelabweichungs-Grenzwerte E(Ymax)-E(Ymin):

FB_BC9191PICtrl 3:
Funktionaler Zusammenhang kleines Xp

Funktionsbeschreibung

Sprungantwort eines einfachen PI-Reglers, wobei die Regelverstärkung keinen Einfluss auf den Integralanteil hat.
Reaktion des Ausganges Y(t) auf einen Regelabweichungssprung um E: Bei einem Sprung der Regelabweichung um E springt der Ausgang Y durch den Proportionalanteil zunächst auf KP*E und wächst dann in jedem Intervall TN um ein weiteres E an.
Hinweis: der Regler ist so konzipiert, dass bei einem SPS-Reset bzw. Neustart der Regler bei 0, also ohne den KP*E-Sprung anfängt.

FB_BC9191PICtrl 4:
Sprungantwort PI-Regler

Grundlegende Funktion

Ein TRUE-Signal am Eingang bEnable aktiviert den Baustein. Der interne Regelalgorithmus wird nun abgearbeitet. Der Eingangswert uiCtrlCycleCall gibt dabei vor, nach wie vielen SPS-Zyklen der interne Regelalgorithmus abgearbeitet wird. Ist uiCtrlCycleCall =1, so erfolgt die Neuberechnung in jedem SPS-Zyklus, ist er hingegen auf 100 eingestellt, so erfolgt eine erneute Berechnung der Ausgangsgrößen nur alle hundert SPS-Zyklen. Die SPS-Zykluszeit geht mit in die Stellgrößenberechnung ein. Ein falscher Eingabewert führt zu fehlerhafter Berechnung.
Die Eingänge rW (Sollwert), rX (Istwert), rXp (Proportionalband) und rTn (Nachstellzeit) sind die Eingangsgrößen des PI-Reglers. Mit Ihnen werden in jedem Berechnungszyklus die Ausgangsgrößen rY (Stellgröße) und rE (Regelabweichung) ermittelt. Die Stellgröße lässt sich zusätzlich durch die Eingänge rYMin und rYMax begrenzen.

Anti-Reset-Windup (ARW)

"Läuft" der Regler in diese Begrenzung, so wird der I-Anteil intern auf dem letzten Wert festgehalten. Würde dies nicht gemacht werden, so könnte der I-Anteil während des Begrenzungsfalles ungehindert sehr große Werte annehmen, die im Falle einer Wirksinn-Umkehrung des Reglers zunächst wieder eliminiert werden müssten. Diese Funktion wird "Anti-Reset-Windup" (ARW). Ist diese Funktion im Eingriff, so ist der Ausgang bARW gesetzt.

Sonderfall Tn=0 als Abschaltung des I-Anteiles

Aus dem oben aufgeführten Sprungantwort-Diagramm geht hervor, dass der Einfluss des I-Anteiles umso schwächer ist, je größer die Nachstellzeit Tn eingestellt wurde. Geht die Nachstellzeit gegen Unendlich, so ist der Einfluss vom I-Anteil gleich Null. Umgekehrt würde eine immer kleiner werdende Nachstellzeit den Einfluss des I-Anteiles wachsen lassen, mit Tn=0 ginge die Stellgröße gegen unendlich. Dieser Sonderfall jedoch dazu genutzt, den I-Anteil abzuschalten. Es handelt sich hierbei um eine intern gebildete Ausnahme, da die Nachstellzeit direkt zum I-Anteil gehört und durch den Nulleintrag auch bildlich eine Abschaltung zur Folge haben soll.

Synchronisation

Eine positive Flanke an bSync setzt den Reglerausgang rY unmittelbar auf rSyncValue, sofern der Regler durch ein TRUE.-Signal an bEnable aktiviert ist. Ist dies nicht der Fall, bleibt die positive Flanke an bSync unberücksichtigt.

Fehlerfall/Baustein nicht aktiviert

Ist der Regler fehlerhaft parametriert, so wird die Abarbeitung gestoppt, der Ausgang bError gesetzt und an udiErrorID die entsprechende Fehlerkennung ausgegeben. Der Baustein ist ebenfalls gestoppt, wenn der Eingang bEnable nicht gesetzt ist. In beiden Fällen sind die Ausgänge wie folgt gesetzt:

rY

0.0

rE

0.0

bARW

FALSE

bMaxLimit

FALSE

bMinLimit

FALSE

VAR_INPUT

bEnable          : BOOL;
bDirection       : BOOL;
rW               : REAL;
rX               : REAL;
rXp              : REAL;
tTn              : TIME;
rYMin            : REAL;
rYMax            : REAL;
tTaskCycleTime   : TIME;
uiCtrlCycleCall  : UINT;
bSync            : BOOL;
rSyncValue       : REAL;

bEnable: Solange dieser Eingang auf TRUE steht, ist der Baustein aktiv. Ein FALSE-Signal hingegen stoppt die Abarbeitung.

bDirection: Mit dem Parameter bDirection kann der Wirksinn des Reglers verändert werden. Ist bDirection TRUE ist der direkte Wirksinn für einen Kühlbetrieb des Reglers aktiv.
Wenn bDirection FALSE ist, ist der indirekte Wirksinn des Reglers für den Heizbetrieb aktiviert.

rW: Sollwert.

rX: Istwert.

rXp: Proportionalband.

tTn: Nachstellzeit (Integrierzeit) in Sekunden. Der I-Anteil korrigiert die verbleibende Regelabweichung nach der Korrektur des P-Anteils. Je kleiner die tTi eingestellt wird, desto schneller korrigiert der Regler. Ist die Zeit zu kurz, wird der Regelkreis instabil. Um den Integrationsanteil zu vermindern, sind größere tTi-Zeiten einzugeben. Die Nachstellzeit sollte größer als die Verfahrzeit des Ventil- oder Klappenantriebes gewählt werden. Ein Nullwert an diesem Eingang schaltet den I-Anteil ab.

rYMin: Untergrenze der Stellgröße.

rYMax: Obergrenze der Stellgröße.

tTaskCycleTime: Zykluszeit der Task in der der Baustein läuft.

uiCtrlCycleCall: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit.
Beispiel: tTaskCycleTime = 20 ms, uiCtrlCycleCall =10 -> Der Regelalgorithmus wird alle 200 ms aufgerufen. Damit werden aber auch nur alle 200 ms die Ausgänge aktualisiert.

bSync,rSyncValue: Eine steigende Flanke an diesem Eingang setzt den (internen) I-Anteils so, dass am Stellgrößenausgang rSyncValue ausgegeben wird. Ist der I-Anteil hingegen durch tTn=0ms deaktiviert, so wird dieses Kommando ignoriert.

VAR_OUTPUT

rY         : REAL;
rE         : REAL;
rEMin      : REAL;
bEMax      : REAL;
bARW       : BOOL;
bMaxLimit  : BOOL;
bMinLimit  : BOOL;
bError     : BOOL;
udiErrorId : UDINT;

rY: Stellgröße.

rE: Regelabweichung (Sollwert-Istwert).

rEMin: unterer Regelabweichungs-Grenzwert, welcher sich aus dem eingegebenen Proportionalband ergibt.

rEMax: oberer Regelabweichungs-Grenzwert, welcher sich aus dem eingegebenen Proportionalband ergibt.

bARW: Anti-Reset-Windup-Funktion ist aktiv.

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

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

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

udiErrorId: Enthält den Fehlercode, sollten die eingetragenen Werte fehlerhaft sein.