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.
Funktionsbeschreibung
Startverhalten
Ein TRUE-Signal am Eingang bEn aktiviert die komplette Sequenzregelung. Der Baustein wird zunächst denjenigen Sequenzregler aktiv schalten, welcher an udiSttCtrl 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 rSync gesetzt.
Um ein "vernünftiges" Einregeln der gesamten Regelsequenz zu ermöglichen, wird der Startregler mindestens für die Zeit udiIniSwiOvrDly_sec [s] lang aktiv gehalten, d.h. in dieser Zeit findet kein Umschalten auf einen 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:
- Der noch aktive Regler hat direkten Wirksinn (Kühlen) und befindet sich auf seinem Maximalwert: Es wird in der Rangfolge der nächsthöhere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers überschreitet.
- Der noch aktive Regler hat direkten Wirksinn (Kühlen) und befindet sich auf seinem Minimalwert: Es wird in der Rangfolge der nächst niedrigere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers unterschreitet.
- Der noch aktive Regler hat indirekten Wirksinn (Heizen) und befindet sich auf seinem Maximalwert: Es wird in der Rangfolge der nächst niedrigere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers unterschreitet.
- Der noch aktive Regler hat indirekten Wirksinn (Heizen) und befindet sich auf seinem Minimalwert: Es wird in der Rangfolge der nächsthöhere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers überschreitet.
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 weggenommen wird, so muss auf den nächsten "sinnvollen" Regler umgeschaltet werden. Der Sequenz-Link-Baustein geht dabei nach folgenden Regeln vor:
- Der gerade deaktivierte Regler hatte direkten Wirksinn (Kühlen)
- Es gibt einen betriebsbereiten Regler mit höherer Ordnungszahl → auf den nächsthöheren betriebsbereiten Regler schalten.
Es gibt nur einen betriebsbereiten Regler mit niedrigerer Ordnungszahl → auf den nächst niedrigeren betriebsbereiten Regler schalten.
Es gibt keinen betriebsbereiten Regler mehr → Störmeldung - Der gerade deaktivierte Regler hatte indirekten Wirksinn (Heizen)
- Es gibt einen betriebsbereiten Regler mit niedrigerer Ordnungszahl → auf den nächst niedrigeren betriebsbereiten Regler schalten.
Es gibt nur einen betriebsbereiten Regler mit höherer Ordnungszahl → auf den nächsthöheren betriebsbereiten Regler schalten.
Es gibt keinen betriebsbereiten Regler mehr → Störmeldung
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.
VAR_INPUT
bEn : BOOL;
udiSttCtrl : UDINT;
udiIniSwiOvrDly_sec : UDINT;
rX : REAL
bEn: Aktivierung des Sequenzreglers.
udiSttCtrl: Ordnungszahl des Sequenzreglers, welcher bei der Gesamtaktivierung der Startregler sein soll. Intern begrenzt auf Werte von 0 bis gBA_cMaxSeqCtrl.
udiIniSwiOvrDly_sec: Der erste Regler bleibt für mindestens diese Zeit [s] in der Sequenz aktiv, bevor andere Kriterien (siehe Umschaltverhalten) auf einen anderen Regler schalten lassen.
rX: Istwert der Regelung.
VAR_OUTPUT
udiCurCtrl : UDINT;
bSeqActv : BOOL;
bNotRead : BOOL;
bNoneOp : BOOL;
udiRemTiIniSwiOvrDly_sec : UDINT;
bErr : BOOL;
sErrDescr : T_MAXSTRING;
udiCurCtrl: 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.
udiRemTiIniSwiOvrDly_sec: Verbleibende Initialisierungszeit [s] vor dem ersten Umschalten (siehe Umschaltverhalten).
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.
sErrDescr: Enthält die Fehlerbeschreibung.
Fehlerbeschreibung |
---|
01: Fehler: Dem Sequenz Link wurde mitgeteilt, dass eine Reglerordnungszahl udiMyNum doppelt vergeben worden ist. |
02: Warnung: Doppelter Wirksinn-Wechsel in der Reglersequenz. |
03: Warnung: In der Reglersequenz hat ein Regler höherer Ordnungszahl einen geringeren Sollwert als sein "Vorgänger". Es erfolgt keine Korrektur - die Reglersequenz läuft mit den eingegebenen Parametern. |
04: Warnung: Der Sequenzregler, der als Startregler definiert ist (udiSttCtrl) ist gar nicht parametriert, d.h. vorhanden. Es wird der Regler mit der geringsten Ordnungszahl als Startregler verwendet. |
05: Warnung: Die Ordnungszahl des Start-Reglers ist höher als die maximal erlaubte Anzahl an Reglern oder Null. Es wird der Regler mit der geringsten Ordnungszahl als Startregler verwendet. |
06: Warnung: Der Sequenzregler, der als Startregler definiert ist (udiSttCtrl) ist nicht frei gegeben, d.h. vorhanden. Es wird der Regler mit der geringsten Ordnungszahl als Startregler verwendet. |
Nur der erste Fehler lässt den Sequenz-Link-Baustein in Störung gehen bzw. sperrt seine Abarbeitung (bSeqActv = FALSE). Keiner der zugehörigen Regler ist dann mehr aktiv und alle Regler geben die Stellgröße "0" aus. Der Baustein ist nicht aktiv:
VAR_IN_OUT
stSeqLink : ST_BA_SeqLink;
stSeqLink: Daten- und Befehlsstruktur (siehe ST_BA_SeqLink / ST_BA_SeqLinkData) 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.
![]() | Tragen mehrere Sequenzregler dieselbe Nummer (udiMyNum), so wird dies erkannt und als Fehler sowohl am Sequenzregler als auch am Steuerbaustein ausgegeben. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche Bibliothek | Erforderliche Function |
---|---|---|
TwinCAT3.1 4022.16 | Tc3_BA_Common ab V1.0.4.3 | TF8040 | TwinCAT Building Automation ab V1.0.5.0 |