FB_BA_SequenceLinkBase

Dieser Baustein stellt die übergeordnete Verbindung einer Sequenzregelung dar.
Datenaustausch Sequenzregelung
Der Datenaustausch zwischen den Sequenzreglern FB_BA_SeqCtrl und dem FB_BA_SequenceLinkBase geschieht über die Struktur stSeqLink.

Startverhalten der Sequenz
Eine TRUE-Signal am Eingang bEn aktiviert die komplette Sequenzregelung. Der Baustein wird zunächst denjenigen Sequenzregler aktiv schalten, welcher an nNumStartCtrl benannt ist. Alle anderen Sequenzregler richten Ihren Ausgabewert nach der Rangordnung des aktiven Reglers.
Ist der an nNumStartCtrl angegebene Sequenzregler nicht betriebsbereit, so wird mit dem Enum eNoStartCtrlFound die Vorgehensweise definiert, um einen neuen Startregler zu finden. Somit ist gewährleistet, dass die Sequenz immer startet.
Umschalten in der Sequenz
Erreicht ein Sequenzregler seinen 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 einen direkten Wirksinn (Kühlen, E_BA_Action.eDirect) 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 einen direkten Wirksinn (Kühlen, E_BA_Action.eDirect) und befindet sich auf seinem Minimalwert: Es wird in der Rangfolge der nächstniedrigere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers unterschreitet.
- Der noch aktive Regler hat einen indirekten Wirksinn (Heizen, E_BA_Action.eReverse) und befindet sich auf seinem Maximalwert: Es wird in der Rangfolge der nächstniedrigere Regler gewählt, wenn der Istwert den Sollwert dieses Reglers unterschreitet.
- Der noch aktive Regler hat einen indirekten Wirksinn (Heizen, E_BA_Action.eReverse) 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.
Das Umschalten auf einen anderen Sequenzregler kann durch die Zeitangabe nSwiOverTi verzögert werden.
Betriebsbereitschaft der Sequenzregler
Verliert ein Regler in der Sequenz seine Betriebsbereitschaft (fehlende Freigabe bEn), 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 Sequenzregler, so wird mit der Enumeration eNoEnableSeqCtrl die Vorgehensweise definiert, um einen neuen, aktiven Sequenzregler zu finden.
Erlangt ein Sequenzregler seine Betriebsbereitschaft im laufenden Prozess, so wird der Regler der Sequenz hinzugefügt. Je nach Wirksinn E_BA_Action und eigener Sequenznummer nMyNum wird er in die Reglersequenz eingereiht und seinen Minimal- bzw. Maximalwert ausgeben. Die daraus resultierende Temperaturänderung wird durch die Reglersequenz nach Möglichkeit wieder ausgeglichen.
Fehlererkennung
Die unten aufgeführten Fehlermeldungen werden durch den FB_BA_SequenceLinkBase erkannt.
Das x in den Textmeldungen steht für eine numerische Angabe eines Sequenzreglers.
Die Fehlermeldungen werden in der Entwicklungsumgebung von Tc3 in dem Fenster "Fehlerliste" ausgegeben. Dieses kann unter dem Menüpunkt Ansicht aktiviert werden.
Ausgabe der Fehlertexte über das Property StateText ausgegeben.
Die Enumeration eState zeigt zusätzlich die Meldungen an.
![]() | Globaler Parameter Tc3_BA2.BA_Param.nMaxSeqCtrl < 1 Diese Meldung ist die einzige, welche die Sequenzsteuerung deaktiviert. |
Deutsch | Englisch |
---|---|
Der nächste Sequenzsollwert ist kleiner als sein Vorgänger: x | Next sequence setpoint is smaller than its predecessor: x |
Globaler Parameter Tc3_BA2.BA_Param.nMaxSeqCtrl < 1 | Global parameter Tc3_BA2.BA_Param.nMaxSeqCtrl < 1 |
Mehrfache Wirkrichtung "eActn" in der Sequenzsteuerung | Multiple direction of action "eActn" of the sequence controller |
Startsequenzregler ist nicht freigegeben: nNumStartCtrl = x | Start sequence controller is not enabled: nNumStartCtrl = x |
Kein Sequenzregler ist betriebsbereit | No sequence controller is operational |
Sequenznummer mehrfach vergeben: x | Sequence number assigned multiple times: x |
Syntax
FUNCTION_BLOCK FB_BA_SequenceLinkBase
VAR_INPUT
bEn : BOOL;
nNumStartCtrl : UDINT;
{attribute 'parameterUnit':= 's'}
nSwiOverTi : UDINT(0..1800);
END_VAR
VAR_OUTPUT
bSeqCtrlOperational : BOOL;
nActvSeqCtrl : UDINT;
fActvSeqCtrl_Y : REAL;
fActvSeqCtrl_X : REAL;
fActvSeqCtrl_W : REAL;
bActvSeqCtrlIsMaxLimit : BOOL;
bActvSeqCtrlIsMinLimit : BOOL;
bErr : BOOL;
eState : E_BA_StateSeqLink;
{attribute 'parameterUnit':= 's'}
nRemTiSwiOvrTi : UDINT;
END_VAR
VAR_IN_OUT
stSeqLink : ST_BA_SeqLink;
END_VAR
VAR_INPUT CONSTANT
fHys : REAL := 0.2;
eNoStartCtrlFound : E_BA_NoStartCtrlFound := E_BA_NoStartCtrlFound.eLastActionReverse;
eNoEnableSeqCtrl : E_BA_NoEnableSeqCtrl := E_BA_NoEnableSeqCtrl.eNextAction;
END_VAR
Eingänge
Name | Typ | Beschreibung |
---|---|---|
bEn | BOOL | Mit Erhalt der Freigabe des Funktionsbausteins wird die Sequenzsteuerung aktiviert. Zuvor müssen aber die Sequenzregler ihre Freigabe erhalten haben. |
nNumStartCtrl | UDINT | Ordnungszahl des Sequenzreglers, welcher bei der Aktivierung der Sequenz der Startregler sein soll. Eine interne Limitierung lässt nur Werte von 1 - BA_Param.nMaxSeqCtrl zu. |
nSwiOverTi | UDINT | Das Umschalten auf einen anderen Sequenzregler kann durch die Zeitangabe verzögert werden. Eine interne Limitierung lässt nur Werte von 0 - 1800 Sekunden zu. |
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
bSeqCtrlOperational | BOOL | Die Sequenzsteuerung ist betriebsbereit bzw. läuft. |
nActvSeqCtrl | UDINT | Die Ausgangsvariable zeigt die Nummer des aktiven Sequenzcontrollers an. |
fActvSeqCtrl_Y | REAL | Stellgröße des aktiven Sequenzreglers. |
fActvSeqCtrl_X | REAL | Istwert des aktiven Sequenzreglers. |
fActvSeqCtrl_W | REAL | Sollwert des aktiven Sequenzreglers. |
bActvSeqCtrlIsMaxLimit | BOOL | Die obere Ausgabebegrenzung des aktiven Sequenzreglers ist erreicht. Wurde noch nicht auf den nächsten Sequenzregler weitergeschaltet, so wird bActvSeqCtrlIsMaxLimit erst auf FALSE gesetzt, wenn fActvSeqCtrl_Y unterhalb von (fActvSeqCtrl_Y - fHys) gefallen ist. |
bActvSeqCtrlIsMinLimit | BOOL | Die untere Ausgabebegrenzung des aktiven Sequenzreglers ist erreicht. Wurde noch nicht auf den nächsten Sequenzregler weiter geschaltet, so wird bActvSeqCtrlIsMinLimit erst auf FALSE gesetzt, wenn fActvSeqCtrl_Y oberhalb von (fActvSeqCtrl_Y + fHys) gestiegen ist. |
bErr | BOOL | Zeigt an, dass ein Fehler erkannt wurde. Detailliertere Informationen zeigen das Property StateText an. Zusätzlich zeigt das Enum eState weitere Informationen an. Unter Fehlererkennung sind weitere Erläuterungen zur Fehleranalyse zu finden. |
eState | Die Enumeration zeigt den Status des FB_BA_SequenceLinkBase und der Sequenzregelung an. | |
nRemTiSwiOvrTi | UDINT | Countdown der Umschaltung auf den nächsten Sequenzregler [s]. |
/
Ein- Ausgänge
Name | Typ | Beschreibung |
---|---|---|
stSeqLink | Daten- und Befehlsstruktur zwischen den einzelnen Sequenzreglern FB_BA_SeqCtrl und dem Steuerbaustein FB_BA_SequenceLinkBase. |
Eingänge CONSTANT
Name | Typ | Beschreibung |
---|---|---|
fHys | REAL | Dieser Hysteresewert legt eine Hysterese um die obere und untere Ausgabebegrenzung bActvSeqCtrlIsMaxLimit / bActvSeqCtrlIsMinLimit des aktiven Sequenzreglers. Eine interne Limitierung lässt nur Werte von 0 - 2 zu. |
eNoStartCtrlFound | Wenn während des laufenden Prozesses der aktive Sequenzregler seine Betriebsbereitschaft verliert, dann wird mit der Enumeration die Vorgehensweise definiert, um einen neuen, aktiven Sequenzregler zu finden. | |
eNoEnableSeqCtrl | Ist der Startregler an dem Eingang nNumStartCtrl nicht vorhanden oder freigegeben, so wird mit der Enumeration die Vorgehensweise definiert, um einen neuen Startregler zu finden. |
Eigenschaften
Name | Typ | Zugriff | Beschreibung |
---|---|---|---|
FirstActvSeqCtrl | UDINT | Get | Das Property zeigt die Nummer des ersten, betriebsbereiten Sequenzreglers an. |
FirstActvSeqCtrlWithActionDirect | UDINT | Get | Das Property zeigt die Nummer des ersten, betriebsbereiten Sequenzreglers mit dem Wirksinn E_BA_Action.eDirect an. |
LastActvSeqCtrl | UDINT | Get | Das Property zeigt die Nummer des letzten, betriebsbereiten Sequenzreglers an. |
LastActvSeqCtrlWithActionReverse | UDINT | Get | Das Property zeigt die Nummer des letzten, betriebsbereiten Sequenzreglers mit dem Wirksinn E_BA_Action.eReverse an. |
NextActionActvSeqCtrl | UDINT | Get | Je nach Wirksinn des aktiven Sequenzreglers nActvSeqCtrl wird hier der nächste, betriebsbereite Sequenzregler angezeigt. Wirksinn Kühlen/Direct: nächster betriebsbereiter Sequenzregler mit dem Wirksinn Kühlen/Direct (nach 5 würde 6 oder höher kommen). Wenn keiner gefunden wird, dann wird E_BA_NoEnableSeqCtrl.eLastSeqNum umgesetzt. Wirksinn Heizen/Reverse: vorheriger betriebsbereiter Sequenzregler mit dem Wirksinn Heizen/Reverse (nach 5 würde 4 oder niedriger kommen). Wenn keiner gefunden wird, dann wird E_BA_NoEnableSeqCtrl.eFirstSeqNum umgesetzt. |
NextActvSeqCtrl | UDINT | Get | Das Property zeigt die Nummer des nächsten betriebsbereiten Sequenzreglers nach dem letzten aktiven an (nach 5 würde 6 oder höher kommen). |
PreviousActvSeqCtrl | UDINT | Get | Das Property zeigt die Nummer des vorherigen, betriebsbereiten Sequenzreglers nach dem letzten aktiven an (nach 5 würde 4 oder niedriger kommen). |
ActvSeqCtrl | UDINT | Get | Das Property zeigt die Nummer des aktiven Sequenzcontrollers an, siehe nActvSeqCtrl. |
ActvSeqCtrl_ControlValue | REAL | Get | Das Property zeigt die Stellgröße des aktiven Sequenzreglers an, siehe fActvSeqCtrl_Y. |
ActvSeqCtrl_IsMaxLimit | BOOL | Get | Das Property zeigt an, dass die obere Ausgabebegrenzung des aktiven Sequenzreglers erreicht ist, siehe bActvSeqCtrlIsMaxLimit. |
ActvSeqCtrl_IsMinLimit | BOOL | Get | Das Property zeigt an, dass die untere Ausgabebegrenzung des aktiven Sequenzreglers erreicht ist, siehe bActvSeqCtrlIsMinLimit. |
ErrorParamMaxSeqCtrl | Get | Das Property zeigt im Fehlerfall den folgenden Text an: "Global parameter Tc3_BA2.BA_Param.nMaxSeqCtrl < 1", siehe BA_Param.nMaxSeqCtrl. Der globale Parameter muss auf jeden Fall angepasst werden, weil aufgrund der falschen Parametrierung die Sequenz stoppt. | |
ErrorStartSeqCtrlNotOperable | Get | Das Property zeigt im Fehlerfall den folgenden Text an: "Start sequence controller is not enabled: nNumStartCtrl = x". Eine Prüfung des Startsequenzreglers, welcher mit der Eingangsvariablen nNumStartCtrl angegeben wurde, ist erforderlich. | |
MultiDirectionActionSeqCtrl | Get | Das Property zeigt im Fehlerfall den folgenden Text an: Multiple direction of action "eActn" of the sequence controller: x. Mehrfache Wirkrichtung der Sequenz Regler. Es wird immer vom Sequenzregler mit der kleinsten Nummer auf den nächstgrößeren geschaut. Eine Änderung der Wirkrichtung ist möglich. | |
NextSeqSpIsSmaller | Get | Das Property zeigt im Fehlerfall den folgenden Text an: "Next sequence setpoint is smaller than its predecessor: x". Eine Prüfung der Sollwerte der Sequenzregler nach aufsteigender Reihenfolge ist erforderlich. | |
NoSeqCtrlIsOperational | Get | Das Property zeigt im Fehlerfall den folgenden Text an: "No sequence controller is operational". Eine Prüfung der Betriebsbereitschaft der Sequenzregler ist erforderlich. | |
SeqNumMulti | Get | Das Property zeigt im Fehlerfall den folgenden Text an: "Sequence number assigned multiple times: x". Eine Prüfung der angezeigten Sequenznummer ist erforderlich, weil diese mehrfach in der Sequenz vergeben wurde. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.56 | Tc3_XBA ab v5.6.1.0 |