FB_BA_SeqCtrl

PID-Regler als Bestandteil einer Sequenz. Dieser Regler ist in seinen Funktionalitäten identisch mit dem FB_BA_PIDCtrl. Er wird jedoch, wenn er durch bEn=TRUE freigegeben ist, über eine übergeordneten Kontrollbaustein FB_BA_SeqLink gesteuert.

Der Datenaustausch zwischen dem Steuerbaustein FB_BA_SeqLink und den Sequenzreglern FB_BA_SeqCtrl erfolgt über die Strukturvariable stSeqLink.

FB_BA_SeqCtrl 1:

Funktionsbeschreibung

Heiz- Kühlfolge

Die Reglersequenz ist so zu konzipieren, dass die Sequenzregler mit niedriger Ordnungszahl zum Heizen und die mit höherer zum Kühlen zu nutzen sind. Dabei ist nur ein Wechsel zulässig:

Möglich ist aber auch die ausschließliche Programmierung von Kühl- bzw. Heizreglern.

Eine Parametrierung, die dieser Konvention widerspricht wird erkannt und als Fehler am Steuerbaustein FB_BA_SeqLink angezeigt.

Reglerausgabe

Während der Steuerbaustein FB_BA_SeqLink vorgibt, welcher Sequenzregler aktiv ist, entscheidet jeder Sequenzregler selbst, was er am Steuerausgang lrY ausgibt. Da jeder Sequenzregler über die In-Out-Variable stSeqLink über den Zustand der anderen Regler Bescheid weiß kann er 4 Fälle unterscheiden:

  1. Der Sequenzregler erkennt, dass er selbst und alle anderen Sequenzregler nicht freigegeben sind, sei es durch fehlende Freigaben (bEn) am Eingang oder durch einen erkannten Felhler am Steuerbaustein FB_BA_SeqLink
    -> Der Sequenzregler deaktiviert seinen internen PID-Regler und gibt am Steuerausgang lrY 0.0 aus.
  2. Der Sequenzregler erkennt, dass er freigegeben und er selbst vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt ist
    -> Der Sequenzregler aktiviert seinen internen PID-Regler. Dessen Ausgangssignal wird am Steuerausgang lrY ausgegeben.
  3. Der Sequenzregler erkennt, dass er freigegeben ist, jedoch ist ein Sequenzregler höherer Ordnungszahlt vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt
    -> Der Sequenzregler deaktiviert seinen internen PID-Regler. Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er seinen Minimalwert lrYMin am Steuerausgang lrY ausgeben. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so gibt er seinen Maximalwert lrYMax am Steuerausgang lrY aus.
  4. Der Sequenzregler erkennt, dass er freigegeben ist, jedoch ist ein Sequenzregler niedrigerer Ordnungszahlt vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt
    -> Der Sequenzregler deaktiviert seinen internen PID-Regler. Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er seinen Maximalwert lrYMax am Steuerausgang lrY ausgeben. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so gibt er seinen Minimalwert lrYMin am Steuerausgang lrY aus.

Synchronisation

Wird ein Sequenzregler von der übergeordneten Steuerung aktiv geschaltet, so erfolgt immer eine Synchonisation, d.h. der Regler beginnt mit einem festen Startwert am Ausgang lrY. Dabei werden 3 Fälle unterschieden:

  1. Die gesamte Sequenzregelung wurde gerade über den Eingang bEn der übergeordneten Steuerung FB_BA_SeqLink eingeschaltet. Der Regler, mit der Ordnungszahlt usiStartSeq am Eingang von ist FB_BA_SeqLink ist der Startregler.
    -> Der Sequenzregler wird mit dem Wert, der an seinem Eingang lrYSeqInit eingetragen ist, synchronisiert.
  2. Der Sequenzregler, der gerade aktiviert wurde, hatte einen Regler höherer Ordnungszahl als "Vorgänger"
    -> Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er mit seinem seinen Minimalwert lrYMin synchronisiert. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so ist der Synchronisationswert sein Maximalwert lrYMax.
  3. Der Sequenzregler, der gerade aktiviert wurde, hatte einen Regler niedrigerer Ordnungszahl als "Vorgänger"
    -> Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er mit seinem seinen Maximalwert lrYMax synchronisiert. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so ist der Synchronisationswert sein Minimalwert lrYMin.

Jeder Sequenzregler kann auch Über Wertvorgabe lrSync und Aktivierung bSync extra synchronisiert werden, wenn er gerade von der übergeordneten Steuerung aktiv gesetzt ist. Ein ständiges TRUE-Signal am Eingang bSync (etwa durch Versehen) wird intern durch Flankenbildung abgefangen und behindert dadurch nicht die oben beschriebene Synchronisation bei Aktiv-Setzung.

Startverhalten

Um ein "vernünftiges" Einregeln der gesamten Regelsequenz zu ermöglichen, wird der Startregler mindestens für die Zeit udiIniswiOvrDly [s], welche am Baustein FB_BA_SeqLink eingetragen ist, aktiv gehalten, d.h. in dieser Zeit findet kein Umschalten auf eine anderen Regler dieser Sequenz statt.
Der Ausgang lrY des Startreglers wird einmalig auf seinen Wert lrYSeqInit synchronisiert.

Ein-Ausgänge

VAR_INPUT

bEn          : BOOL;
usiMyNum     : USINT;
bActn        : BOOL;
bSync        : BOOL;
lrSync       : LREAL;
lrYSeqInit   : 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: Aktivierung des Sequenzreglers

usiMyNum: Ordnungszahl des Sequenzreglers

bActn: Wirksinn-Umkehrung des Reglers. Bei Heiz-Kühleinsatz: bActn=FALSE entspricht Heizbetrieb, bActn=TRUE entspricht Kühlbetrieb.

bSync / lrSync: Synchronisationsbefehl: Ausgangswert lrY auf lrSync setzen.

lrYSeqInit: Startwert des Reglers nach dem Neustart der gesamten Regelsequenz.

lrW: Sollwert

lrX: Istwert

lrNZ: Neutrale Zone

lrYMin: Untere Ausgabebegrenzung des Reglers [%]. Wählbarer Bereich: 0..100%.

lrYMax: Obere Ausgabebegrenzung des Reglers [%]. Wählbarer Bereich: 0..100%.

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 200 ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

VAR_IN_OUT

stSeqLink : ST_BA_SeqLink;

stSeqLink: Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern und dem Steuerbaustein FB_BA_SeqLink.

FB_BA_SeqCtrl 2:

Tragen mehrere Sequenzregler dieselbe Nummer (usiMyNum), so wird dies erkannt und als Fehler sowohl am Sequenzregler als auch am Steuerbaustein FB_BA_SeqLink ausgegeben.

VAR_OUTPUT

lrY        : LREAL;
bErr       : BOOL;
udiErrId   : UDINT;
udiErrArg  : UDINT;

lrY: Stellgröße. Bereich: 0..100%, soweit nicht weiter durch lrYMin und lrYMax eingeschränkt.

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

Siehe auch:

ST_BA_SeqLink / ST_BA_SeqLinkData