FB_BARBlindPositionEntry

FB_BARBlindPositionEntry 1:

Dieser Baustein dient zur Eingabe von Stützstellen für den Baustein FB_BARSunProtectionEx, sollte dieser im Modus der Höhenpositionierung mit Hilfe einer Tabelle betrieben werden, siehe E_BARPosMode.

Der Baustein FB_BARSunProtectionEx bietet neben den Betriebsarten "fixe Jalousiehöhe" und "maximaler Lichteinfall" auch die Möglichkeit, die Jalousiehöhe per Tabelleneinträge in Abhängigkeit von der Sonnenhöhe zu steuern. Durch die Eingabe mehrerer Stützpunkte wird, linear interpoliert, die betreffende Jalousiehöhe zum entsprechenden Sonnenstand errechnet. Da falsch eingetragene Werte jedoch zu Fehlfunktionen beim FB_BARSunProtectionEx führen können ist diesem der Baustein FB_BARBlindPositionEntry voranzustellen. Es lassen sich vier Stützpunkte an diesem Baustein parametrieren, wobei ein fehlender Eintrag als Nulleintrag gewertet wird.
Der Baustein sortiert die eingegebenen Werte nicht selbstständig, sondern achtet darauf, dass die eingetragenen Sonnenstände der jeweiligen Stützstellen in aufsteigender Reihenfolge eingegeben wurden. Unbeabsichtigt fehlerhafte Einträge fallen dadurch schneller auf.
Die gewählten Werte für rSunElevation1 .. rSunElevation4 müssen auch eindeutig sein, es darf beispielsweise nicht gelten:
[rSunElevation1 = 10 ; uiBlindPosition1 = 50] und gleichzeitig [rSunElevation2 = 10 ; uiBlindPosition2 = 30].
Das würde bedeuten, dass für ein und denselben Wert zwei verschiedene Zielwerte bestünden, was keinen eindeutigen funktionalen Zusammenhang bilden lässt.
Darüber hinaus müssen die Einträge für Sonnenstand und Jalousiehöhe im gültigen Bereich liegen. Das bedeutet mathematisch, dass folgende Bedingungen erfüllt sein müssen:

Der Baustein überprüft die eingetragenen Werte auf diese Bedingungen hin und gibt bei Nicht-Erfüllen einen Fehlercode aus. Zusätzlich wird der Ausgang bValid auf FALSE gesetzt.
Des Weiteren sorgt der Baustein selbstständig für ein Ausfüllen der Randbereiche: Intern wird ein weiterer Stützpunkt bei rSunElevation = 0 mit uiBlindPosition1und ein weiterer oberhalb von rSunElevation4 bei rSunElevation = 90 mit uiBlindPosition4aufgestellt. Damit wird sichergestellt, dass für alle gültigen Eingabewerte 0 ≤rSunElevation≤ 90 ein sinnvoller Zielwert vorhanden ist ohne dass ein Eintrag für rSunElevation = 0 und rSunElevation = 90 vom Anwender zwingend vergeben werden muss:

FB_BARBlindPositionEntry 2:

Die tatsächliche Anzahl an Stützstellen, welche an den Baustein FB_BARSunProtectionEx übergeben wird, erhöht sich damit auf 6, siehe ST_BARBlindPositionTable.

Die Interpolation der Werte erfolgt im Blendschutz-Baustein.

VAR_INPUT

eDataSecurityType  : E_HVACDataSecurityType;
bSetDefault        : BOOL;

eDataSecurityType:Wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist, werden die persistenten VAR_IN_OUT-Variablen des Funktionsbausteins bei einer Wertänderung im Flash des Rechners abgelegt. Dafür ist es zwingend erforderlich den Funktionsbaustein FB_HVACPersistentDataHandling einmalig im Hauptprogramm, das zyklisch aufgerufen wird, zu instanziieren. Ansonsten wird der instanziierte FB intern nicht freigegeben.

Eine Wertänderung kann vom Gebäudeleitsystem, einem lokalen Bediengerät oder von einem Schreibzugriff von TwinCAT aus erfolgen. Beim Neustart des Rechners werden die gesicherten Daten automatisch vom Flash in den RAM zurück gelesen.

Anwendungsbeispiel: example_persistent.zip

Bei eDataSecurityType:= eHVACDataSecurityType_Idle werden die persistent deklarierten Variablen nicht spannungsausfallsicher gespeichert.

Hinweis

Eine sich zyklisch ändernde Variable darf niemals mit der IN_OUT-Variablen eines Funktionsbausteins verbunden werden, wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist. Es würde zu einem frühzeitigen Verschleiß des Flashspeichers führen.

bSetDefault: Wenn die Variable TRUE ist, werden die Default-Werte der VAR_IN_OUT Variablen übernommen.

VAR_OUTPUT

bValid               : BOOL;
uiErrorId            : UDINT;
stBlindPositionTable : ST_BARBlindPositionTable;

bValid: Solange die Einträge den oben genannten Kriterien entsprechen, wird dieser Ausgang auf TRUE stehen.

uiErrorId: Enthält den Fehlercode, sollten die eingetragenen Werte nicht den oben aufgeführten Kriterien entsprechen. Siehe Fehlercodes.

stBlindPositionTable : Übergabestruktur der Stützstellen, siehe ST_BARBlindPositionTable.

VAR_IN_OUT

Damit die eingetragenen Parameter über einen Steuerungsausfall hinweg erhalten bleiben ist es erforderlich, sie als In-Out-Variablen zu deklarieren. Im Programm wird ihnen dann eine Referenz-Variable zugewiesen. Jede Änderung des Wertes dieser Referenz-Variablen wird im Funktionsbaustein persistent gespeichert und nach einem Steuerungsausfall und -wiederanlauf zurück in die Referenz-Variable geschrieben. Wären die Parameter nur als Eingangsvariablen deklariert, so könnten sie eine Referenzvariable nicht beschreiben.
Anwendungsbeispiel: example_persistent.zip.

lrSunElevation1   : REAL;;
uiBlindPosition1 : UINT;
lrSunElevation2   : REAL;
uiBlindPosition2 : UINT;
lrSunElevation3   : REAL;
uiBlindPosition3 : UINT;
lrSunElevation4   : REAL;
uiBlindPosition4 : UINT;

lrSunElevation1: Sonnenstand des 1. Stützpunktes (0°..90°).

uiBlindPosition1: Jalousieposition (Grad der Schließung) des 1. Stützpunktes (0%..100%).

lrSunElevation2: Sonnenstand des 2. Stützpunktes (0°..90°).

uiBlindPosition2: Jalousieposition (Grad der Schließung) des 2. Stützpunktes (0%..100%).

lrSunElevation3: Sonnenstand des 3. Stützpunktes (0°..90°).

uiBlindPosition3: Jalousieposition (Grad der Schließung) des 3. Stützpunktes (0%..100%).

rlSunElevation4: Sonnenstand des 4. Stützpunktes (0°..90°).

uiBlindPosition4: Jalousieposition (Grad der Schließung) des 4. Stützpunktes (0%..100%).

Voraussetzungen

Entwicklungsumgebung

erforderliche Bibliothek

Erforderliche Function

TwinCAT 3.1 ab Build 4022.16

Tc2_HVAC V3.3.1.0

TF8000 | TC3 HVAC V1.0.0.0