FB_BARPICtrl

FB_BARPICtrl 1:

Einfacher PI-Regler. Die Regelverstärkung hat keinen Einfluss auf den I-Anteil.

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

VAR_INPUT

eDataSecurityType : E_HVACDataSecurityType;
bSetDefault       : BOOL;
bEnable           : BOOL;
rW                : REAL;
rX                : REAL;
tTaskCycleTime    : TIME;
uiCtrlCycleCall   : UINT;
bSync             : BOOL;

eDataSecurityType:Wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist, werden die persistenten VAR_IN_OUT-Variablen des Funktionsbausteins bei einer Wertänderung im Flash des Rechners abgelegt. Dafür ist es zwingend erforderlich den Funktionsbaustein FB_HVACPersistentDataHandling einmalig im Hauptprogramm, das zyklisch aufgerufen wird, zu instanziieren. Ansonsten wird der instanziierte FB intern nicht freigegeben.

Eine Wertänderung kann vom Gebäudeleitsystem, einem lokalen Bediengerät oder von einem Schreibzugriff von TwinCAT aus erfolgen. Beim Neustart des Rechners werden die gesicherten Daten automatisch vom Flash in den RAM zurück gelesen.

Anwendungsbeispiel: example_persistent.zip

Bei eDataSecurityType:= eHVACDataSecurityType_Idle werden die persistent deklarierten Variablen nicht spannungsausfallsicher gespeichert.

Hinweis

Eine sich zyklisch ändernde Variable darf niemals mit der IN_OUT-Variablen eines Funktionsbausteins verbunden werden, wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist. Es würde zu einem frühzeitigen Verschleiß des Flashspeichers führen.

bSetDefault: Wenn die Variable TRUE ist, werden die Default-Werte der VAR_IN_OUT Variablen übernommen.

bEnable: Regleraktivierung

rW: Sollwert.

rX: Istwert.

tTaskCycleTime: Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird.

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

bSync: Eine steigende Flanke an diesem Eingang setzt den (internen) I-Anteil 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;
bARW       : BOOL;
bMaxLimit  : BOOL;
bMinLimit  : BOOL;
bError     : BOOL;
udiErrorId : UDINT;

rY: Stellgröße.

rE: Regelabweichung (Berechnung abhängig vom Wirksinn)

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. Siehe Fehlercodes.

VAR_IN_OUT

bDirection      : BOOL;
rXp             : REAL;
tTn             : TIME;
rYMin           : REAL;
rYMax           : REAL;
rSyncValue      : REAL;

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. Die Variable wird persistent gespeichert. Voreingestellt auf FALSE.

rXp: Proportionalband. Dieses definiert den internen Proportionalfaktor, siehe unten. Der Proportionalitätsfaktor, bzw die Verstärkung wirkt nur auf den P-Anteil. Die Variable wird persistent gespeichert. Voreingestellt auf 100.0.

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. Die Variable wird persistent gespeichert. Voreingestellt auf 30s.

rYMin / rYMax: Begrenzen den Arbeitsbereich des Reglers. Einige andere Funktionsbausteine z.B. Sequenzer erfordern einen symmetrischen (- 100 bis +100) Stellbereich. Bei einer Kaskadenstruktur bestimmt der Arbeitsbereich des Führungsreglers den Sollwert des Folgereglers. Zum Beispiel 15° bis 25° als Begrenzung des Zulufttempertursollwerts einer Abluft- Zuluftkaskadenregelung. Die Variable wird persistent gespeichert. Voreingestellt auf 0.0 bzw. 100.0.

rSyncValue: Mit einer steigenden Flanke am Eingang bSync wird die Stellgröße rY auf diesen Wert gesetzt. Dazu wird intern der I-Anteil verändert. Ist der I-Anteil nicht gegeben (PD-Regler), so wird der D-Anteil verändert. Die Variable wird persistent gespeichert. Voreingestellt auf 0.0.

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_BARPICtrl 2:

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.

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 im 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, Ymin 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_BARPICtrl 3:

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_BARPICtrl 4:

Wirksinn

Mit bDirection = 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:

bDirection

rE (Regelabweichung)

Wirksinn

TRUE

lrX-lrW (Istwert-Sollwert)

direkt (Kühlen)

FALSE

lrW-lrX (Sollwert-Istwert)

indirekt (Heizen)

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, siehe Fehlercodes. 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

Voraussetzungen

Entwicklungsumgebung

erforderliche Bibliothek

Erforderliche Function

TwinCAT 3.1 ab Build 4022.16

Tc2_HVAC V3.3.1.0

TF8000 | TC3 HVAC V1.0.0.0