FB_BA_SeqCtrl

FB_BA_SeqCtrl 1:

PID-Regler als Bestandteil einer Sequenz.

Funktionsbeschreibung

Dieser Regler ist in seinen Funktionalitäten identisch mit dem FB_BA_PIDCtrl.

udiOpMode=0 (P-Anteil vorgelagert)

FB_BA_SeqCtrl 2:

udiOpMode=1 (Parallelstruktur)

FB_BA_SeqCtrl 3:

Zudem wird der Regler, 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.

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

Der Steuerbaustein FB_BA_SeqLink gibt vor, welcher Sequenzregler aktiv ist. Innerhalb der einzelnen Sequenzregler wird ermittelt was am jeweiligen Steuerausgang rY ausgegeben wird. Über die In-Out-Variable stSeqLink erhält jeder Regler die Information über den Zustand der anderen Regler und wertet intern 4 Fälle aus.

  1. Keiner der Sequenzregler ist freigegeben, sei es durch fehlende Freigaben (bEn) am Eingang oder durch einen erkannten Fehler am Steuerbaustein FB_BA_SeqLink
    -> Die internen PID-Regler sind inaktiv und geben am Steuerausgang rY=0.0 aus.
  2. Der Sequenzregler hat eine Freigabe und ist vom Steuerbaustein FB_BA_SeqLink aktiv gesetzt.
    -> Der interne PID-Regler ist aktiv. Dessen Ausgangssignal wird am Steuerausgang rY ausgegeben.
  3. Der Sequenzregler hat eine Freigabe, jedoch ist ein Sequenzregler höherer Ordnungszahl vom Steuerbaustein FB_BA_SeqLink aktiv gesetzt
    -> Der interne PID-Regler ist inaktiv. Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er seinen Minimalwert rYMin am Steuerausgang rY ausgeben. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so gibt er den Maximalwert rYMax am Steuerausgang rY aus.
  4. Der Sequenzregler hat eine Freigabe, jedoch ist ein Sequenzregler niedrigerer Ordnungszahl vom Steuerbaustein FB_BA_SeqLink als aktiv gesetzt
    -> Der interne PID-Regler ist inaktiv. Befindet sich der Sequenzregler im Heizbetrieb (bActn=FALSE), so wird er seinen Maximalwert rYMax am Steuerausgang rY ausgeben. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so gibt er seinen Minimalwert rYMin am Steuerausgang rY 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 rY. Dabei werden 3 Fälle unterschieden:

  1. Die gesamte Sequenzregleung wurde gerade über den Eingang bEn der übergeordneten Steuerung FB_BA_SeqLink eingeschaltet. Der Regler, mit der Ordnungszahl udiSttCtrl am Eingang von FB_BA_SeqLink ist der Startregler.
    -> Der Sequenzregler wird mit dem Wert, der an seinem Eingang rYSeqInit 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 Minimalwert rYMin synchronisiert. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so ist der Synchronisationswert sein Maximalwert rYMax.
  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 Maximalwert rYMax synchronisiert. Befindet er sich hingegen im Kühlbetrieb (bActn=TRUE), so ist der Synchronisationswert sein Minimalwert rYMin.

Jeder Sequenzregler kann auch über Wertvorgabe rSync 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_sec [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 rY des Startreglers wird einmalig auf seinen Wert rYSeqInit synchronisiert.

VAR_INPUT

bEn            : BOOL;
rW             : REAL;
rX             : REAL;
udiOpMode      : UDINT;
bActn          : BOOL;
rKp            : REAL;
udiTn_ms       : UDINT;
udiTv_ms       : UDINT;
udiTd_ms       : UDINT;
rYMax          : REAL;
rYMin          : REAL;
rNZ            : REAL;
udiCycCl       : UDINT;
bSync          : BOOL;
rSync          : REAL;
rYSeqInit      : REAL;
udiMyNum       : UDINT;

bEn: Aktivierung des Sequenzreglers

rW: Sollwert

rX: Istwert

udiOpMode: udiOpMode=0: Regler mit vorgelagertem P-Anteil, udiOpMode =1: Regler in Parallelstruktur. Intern sind die Werte auf 0 und 1 begrenzt.

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

rKp: Reglerverstärkung. Wirkt nur auf den P-Anteil. Intern begrenzt auf einen Minimalwert von 0.

udiTn_ms: Nachstellzeit des I-Anteiles [ms]. Ein Nullwert an diesem Parameter schaltet den I-Anteil ab. Intern begrenzt auf einen Minimalwert von 0.

udiTv_ms: Vorhaltezeit des D-Anteiles [ms]. Ein Nullwert an diesem Parameter schaltet den D-Anteil ab. Intern begrenzt auf einen Minimalwert von 0.

udiTd_ms: Dämpfungszeit des D-Anteiles [ms]. Intern begrenzt auf einen Minimalwert von 0.

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

rYMin: Untere Ausgabebegrenzung des Reglers [%]. Wählbarer Bereich: 0..100%. Der Wert lrMin wird nach oben hin durch lrYMax begrenzt.

rNZ: neutrale Zone (siehe Diagramm Deadband). Intern begrenzt auf einen Minimalwert von 0. Wirkungsweise wie beim FB_BA_PID_Ctrl.

udiCycCl: Aufrufzyklus des Bausteines als Vielfaches der Zykluszeit. Intern begrenzt auf einen Minimalwert von 1.
Beispiel: tTaskCycleTime = 20ms, udiCycCl =10 -> Der Regelalgorithmus wird alle 200ms aufgerufen. Damit werden aber auch nur alle 200ms die Ausgänge aktualisiert.

bSync / rSync: Synchronisationsbefehl: Ausgangswert rY auf rSync setzen. Der Wert rSync wird intern begrenzt auf Werte von rYMin bis rYMax.

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

udiMyNum: Ordnungszahl des Sequenzreglers. Intern begrenzt auf Werte von 0 bis gBA_cMaxSeqCtrl.

VAR_OUTPUT

rY        : REAL;
rE        : REAL;
bErr      : BOOL;
sErrDescr : T_MAXSTRING;

rY: Stellgröße. Bereich: 0..100%, soweit nicht weiter durch rYMin und rYMax eingeschränkt.

rE: Regelabweichung (Die Berechnung ist abhängig vom Wirksinn).

bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

sErrDescr: Enthält die Fehlerbeschreibung.

Fehlerbeschreibung

01: Fehler: Die Reglerordnungszahl udiMyNum ist doppelt vergeben

02: Fehler: Die Reglerordnungszahl udiMyNum des freigegebenen Reglers ist 0. Das ist nur für nicht verwendete und damit nicht freigegebene Regler erlaubt.

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.

FB_BA_SeqCtrl 4:

Tragen mehrere Sequenzregler dieselbe Nummer (diMyNum), so wird dies erkannt und als Fehler sowohl am Sequenzregler als auch am Steuerbaustein FB_BA_SeqLink 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