FB_BARSunProtectionEx

FB_BARSunProtectionEx 1:

Baustein zur Blendschutzsteuerung mit Hilfe einer Lamellen-Jalousie.

Der Baustein FB_BARSunProtectionEx ermöglicht einen Blendschutz auf 2 verschieden parallel arbeitende Weisen:

Anhand der eingetragenen Parameter, welche weiter unten beschrieben werden, errechnet der Baustein die notwendige Lamellenstellung und Jalousie-Position und übergibt sie in die Ausgabestruktur stSunblind. Die Ausgabe erfolgt freilich nicht kontinuierlich, da eine ständige Jalousiebewegung als extrem störend empfunden werden würde. Am Eingang uiPositioningInterval lässt sich in Sekunden einstellen, in welchem Abstand neue Positionswerte ausgegeben werden sollen.
Jedoch muss zwischen zwei Positionierzeitpunkten die Verschattungskriterien immer erfüllt sein: kein direktes Licht darf durch die Lamellen treten und der erwünschte Lichteinfall durch die Jalousiehöhe muss begrenzt bleiben, geht man zunächst davon aus, dass die Jalousienhöhe über den Modus "maximal erwünschter Lichteinfall" gesteuert wird. Daher werden intern zwei Jalousie- und Lamellenstellungen errechnet: die für den jetzigen und die für den nächsten Schaltpunkt. Diejenige Stellung, bei der die Jalousie mehr geschlossen ist, ist dann die gültige.

Die Positionierung in Intervallen beginnt genau dann, wenn folgende 3 Bedingungen erfüllt sind:

Sind diese 3 Bedingungen nicht erfüllt, so wird in der Positionierstruktur das Aktiv-Bit (bActive) auf FALSE, die Jalousiehöhe auf 0% und der Lamellenwinkel auf 0% gestellt.

VAR_INPUT

eDataSecurityType      : E_HVACDataSecurityType;
bEnable                : BOOL;
stTimeAct              : TIMESTRUCT;
stBlindPositionTable   : ST_BARBlindPositionTable;

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.

bEnable: Wenn dieser Eingang auf FALSE gesetzt wird, ist die Positionierung nicht aktiv, d.h. in der Positionier-Struktur stSunblind vom Typ ST_BARSunblind wird das aktiv-Bit (bActive) zurückgesetzt und der Baustein selbst verharrt in einem Stillstands-Modus. Ist der Baustein hingegen aktiviert, so ist das aktiv-Bit auf TRUE und der Baustein gibt in der Positionierstruktur zu den entsprechenden Zeiten seine Stellwerte durch (uiShutterHeight, iLouvreAngle).

stTimeAct: Eingabe der aktuellen Uhrzeit in GMT (Greenwich-Mean-Time).

stBlindPositionTable: Tabelle von 6 Stützpunkten, davon 4 parametrierbar, aus denen dann durch lineare Interpolation eine Jalousieposition in Abhängigkeit des Sonnenstandes gegeben wird. Gültig, wenn ePositioningMode = ePosModeFixed (siehe Enumerator E_BARPosMode). Weitere Beschreibung siehe FB_BARBlindPositionEntry.

VAR_OUTPUT

stSunblind    : ST_BARSunblind;
bError        : BOOL;
udiErrorId    : UDINT;

stSunblind: Ausgabestruktur der Jalousiestellungen, siehe ST_BARSunblind

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

udiErrorId: Enthält den Fehlercode, sollten die eingetragenen Werte fehlerhaft sein. Siehe Fehlercodes.

FB_BARSunProtectionEx 2:

Sollte ein Fehler anstehen, so wird diese Automatik deaktiviert und Position und Winkel auf 0 gesetzt. Das bedeutet, dass bei Verwendung einer Prioritätssteuerung automatisch eine andere Funktion niedrigerer Priorität (siehe Übersicht) die Steuerung der Jalousie übernimmt. Bei direkter Beschaltung hingegen wird die Jalousie auf Position/Winkel 0 fahren.

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.

uiPositioningInterval  : UINT;
lrDegreeOfLongitude    : LREAL;
lrDegreeOfLatitude     : LREAL;
lrFacadeOrientation    : LREAL;
lrFacadeAngle          : LREAL;
uiLouvreWidth          : UINT;
uiLouvreSpacing        : UINT;
uiFixedShutterHeight   : UINT;
uiMaxLightIncidence    : UINT;
uiWindowHeight         : UINT;
uiWindowDistanceFloor  : UINT;
ePositioningMode       : E_BARPOSMODE;

uiPositioningInterval: Positionierintervall in Sekunden - Zeitspanne zwischen zwei Ausgaben von Jalousiestellungen. Gültiger Bereich: 1s..7200s.

lrDegreeOfLongitude: Geographische Länge (Längengrad) in Grad. Gültiger Bereich: -180°..180°.

lrDegreeOfLatitude: Geographische Breite (Breitengrad) in Grad. Gültiger Bereich: -90°..90°.

lrFacadeOrientation: Fassadenausrichtung in Grad:

Dabei gilt auf der Nordhalbkugel für die Fassadenausrichtung (Blick aus dem Fenster):

Blickrichtung

Fassadenausrichtung

Nord

β=0°

Ost

β=90°

Süd

β=180°

West

β=270°

Für die Südhalbkugel gilt hingegen:

Blickrichtung

Fassadenausrichtung

Süd

β=0°

Ost

β=90°

Nord

β=180°

West

β=270°

lrFacadeAngle: Fassadenneigung in Grad. Siehe Fassadenneigung.

uiLouvreWidth: Breite der Lamellen in mm, siehe Skizze.

uiLouvreSpacing: Lamellenabstand in mm, siehe Skizze.

uiFixedShutterHeight: Fixe (konstante) Jalousiehöhe [0..100%]. Gültig, wenn ePositioningMode = ePosModeFixed (siehe Enumerator E_BARPosMode).

uiMaxLightIncidence: Maximal gewünschter Lichteinfall in mm gemessen ab Außenseite der Wand (siehe Höhenverstellung) Mit Hilfe der Parameter uiWindowHeight und uiWindowDistanceFloor wird in Abhängigkeit des Sonnenstandes errechnet, wie hoch die Jalousie stehen muss, damit der Lichteinfall den Wert uiMaxLightIncidence nicht überschreitet. Gültig, wenn ePositioningMode = ePosModeMaxIncidence (siehe Enumerator E_BARPosMode).

uiWindowHeight: Fensterhöhe in mm zur Errechnung des der Jalousiehöhe wenn der Modus des "Maximal gewünschter Lichteinfalls" gewählt ist.

uiWindowDistanceFloor: Abstand Boden - Fenstersims in mm zur Errechnung des der Jalousiehöhe wenn der Modus des "Maximal gewünschter Lichteinfalls" gewählt ist.

ePositioningMode: Auswahl des Positioniermodus, siehe Enumerator E_BARPosMode.

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