FB_BA_SeqLink

Dieser Baustein stellt die übergeordnete Steuereinheit dar, die vorgibt, welcher Sequenzregler gerade aktiv ist.

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

FB_BA_SeqLink 1:

Funktionsbeschreibung

Startverhalten

Eine TRUE-Signal am Eingang bEn aktiviert die komplette Sequenzregelung. Der Baustein wird zunächst denjenigen Sequenzregler aktiv schalten, welcher an usiStartSeq benannt ist. Alle anderen Sequenzregler richten Ihren Ausgabewert nach der Rangordnung des aktiven Reglers, siehe FB_BA_SeqCtrl. Der Startregler wird beim Sequenz-Start einmalig auf seinen Wert lrSyncVal gesetzt.
Um ein "vernünftiges" Einregeln der gesamten Regelsequenz zu ermöglichen, wird der Startregler mindestens für die Zeit udiIniSwiOvrDly lang aktiv gehalten, d.h. in dieser Zeit findet kein Umschalten auf eine anderen Regler dieser Sequenz statt.

Umschaltverhalten

Erreicht ein Sequenzregler seinem Maximal- oder Minimalwert, so wird je nach Regler-Wirksinn auf den nächsten Regler in der Rangfolge umgeschaltet, sofern der Istwert den Sollwert des nächsten Reglers unterschreitet bzw. überschreitet.
Dabei werden 4 Fälle unterschieden:

Abschaltverhalten

Wird einem Regler der Sequenz seine Freigabe weggenommen oder geht er in Störung, so ist er für die gesamte Sequenz nicht mehr verfügbar.
Handelt es sich dabei nicht um den vorher aktiven Regler, so kann es, je nachdem welche Stellgröße dieser Regler ausgegeben hat, zu einer Temperaturänderung kommen, die durch die Reglersequenz nach Möglichkeit wieder ausgeglichen wird.
Handelt es sich jedoch um den aktiven Regler, dessen Freigabe weg genommen wird, so muss auf den nächst "sinnvollen" umgeschaltet werden. Der Sequenz-Link-Baustein geht dabei nach folgenden Regeln vor:

Zuschaltverhalten

Wird ein Regler der Sequenz hinzugefügt, so ist er in jedem Fall zunächst inaktiv und wird, je nach Wirksinn und Positionierung im Sinne der Sequenzreihenfolge, seinen Minimal- bzw. Maximalwert ausgeben. Die daraus resultierende Temperaturänderung wird durch die Reglersequenz nach Möglichkeit wieder ausgeglichen.

Fehlererkennung

Folgende Fehler werden durch den Sequenz-Link-Baustein erkannt:

  1. Es existieren mindestens zwei Regler mit derselben Ordnungszahl, die der Sequenz zugeordnet sind.
  2. Es wurde in der Reglerfolge mehr als nur ein Wechsel von indirektem auf direkten Wirksinn (Heizen auf Kühlen) festgestellt.
  3. In der Reglerfolge sind die Sollwerte der Regler nicht monoton steigend.
  4. Der Regler, welcher durch den Eingang usiStartSeq als Startregler definiert wurde, existiert nicht bzw. ist nicht dieser Sequenz zugeordnet (es wird dann der nächstgültige Regler gewählt).
  5. Es wurde ein Startregler mit der Ordnungszahl 0 bzw. größer der maximal zulässigen Anzahl Regler festgelegt (es wird dann der nächstgültige Regler gewählt).

Nur der erste Fehler lässt den Sequenz-Link-Baustein in Störung gehen bzw. sperrt seine Abarbeitung (=FALSE). bSeqActv Keiner der zugehörigen Regler ist dann mehr aktiv und alle Regler geben die Stellgröße "0" aus. Der Baustein ist nicht aktiv:
Alle anderen Fehler werden zwar auch durch bErr=TRUE angezeigt, haben jedoch eine Fehlernummer (udiErrId), die sie lediglich als Warnung kennzeichnen.

Ein-Ausgänge

VAR_INPUT

bEn             : BOOL;
usiStartCtrl    : USINT;
udiIniSwiOvrDly : UDINT;
lrX             : LREAL

bEn: Aktivierung des Sequenzreglers

usiStartSeq: Ordnungszahl des Sequenzreglers, welcher bei der Gesamt-Aktivierung der Start-Regler sein soll.

udiIniSwiOvrDly: Wie eingangs bereits erwähnt, benötigt eine Sequenzregelung am Anfang eine gewisse Zeit um sich mit dem Startregler einzuregeln. Der Startregler bleibt für mindestens die Zeit udiIniSwiOvrDly [s] in der Sequenz aktiv, bis andere Kriterien auf einen anderen Regler schalten lassen. Siehe auch "Startverhalten" und  "Umschaltverhalten".

lrX: Istwert der Regelung

VAR_IN_OUT

stSeqLink : ST_BA_SeqLink;

stSeqLink: Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern und dem Steuerbaustein FB_BA_SeqLink . Über diese Struktur empfängt der Sequenz-Link-Baustein alle relevanten Daten der Sequenzregler und teilt diesen gleichzeitig mit, welcher der aktive ist.

FB_BA_SeqLink 2:

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

VAR_OUTPUT

usiCurCtrl            : USINT;
bSeqActv              : BOOL;
bNotRead              : BOOL;
bNoneOp               : BOOL;
udiRemTiIniSwiOvrDly  : UDINT;
bErr                  : BOOL;
udiErrId              : UDINT;
udiErrArg             : UDINT;

usiCurCtrl: Ordnungszahl des aktuell aktiven Sequenzreglers. Ist keiner aktiv, so wird hier 0 ausgegeben.

bSeqActv: Der Sequenzbaustein ist freigegeben (bEn) und hat keinen abschaltenden Fehler, siehe Fehlererkennung.

bNotRead: Jeder Sequenzregler übermittelt dem Steuerbaustein Daten über die Struktur stSeqLink. Solange noch keine Daten übermittelt wurden - dies ist beim Einschalten der SPS der Fall - steht dieser Ausgang auf TRUE.

bNoneOp: Dieser Ausgang wird auf TRUE geschaltet, wenn keiner der Sequenzregler seine eigene Freigabe (bEn=TRUE) hat.

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind. Dieser Baustein stellt im Fehlerfall seine Abarbeitung u.U. nicht ein, siehe Fehlererkennung.

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