FB_BARShadingCorrectionSouth
Funktionsbaustein zur Verschattungsbeurteilung einer Fenstergruppe auf einer Fassade.
Dieser Baustein ist nur für die Südhalbkugel gültig. Der für die Nordhalbkugel gültige Baustein ist FB_BARShadingCorrection.
Der Baustein FB_BARShadingCorrectionSouth berechnet für eine Gruppe von Fenstern, ob sich diese im Schatten von umliegenden Objekten befindet. Mit dem Ergebnis, welches am Ausgang bGroupNotShaded ausgegeben wird, kann beurteilt werden, ob ein Sonnenschutz für diese Fenstergruppe sinnvoll ist.
Dabei greift der Baustein auf zwei zu definierende Listen zu:
- Die Daten der Elemente (Fenster) der Fassade, in der sich die zu betrachtende Gruppe befindet. Auf diese Liste der Fassadenelemente wird über die IN-OUT-Variable arrFacadeElement zugegriffen, welche ihrerseits global definiert ist.
- Die Parameter, welche die Verschattungselemente beschreiben, die für die Fassade maßgeblich sind, auf der sich die Fenstergruppe befindet.. Diese Liste der Verschattungsobjekte ist ebenfalls global definiert. Die IN-OUT-Variable arrShadingObject greift direkt darauf zu.
Anhand der Fassadenausrichtung (lrFacadeOrientation), der Sonnenrichtung (lrAzimuth) und der Sonnenhöhe (lrElevation) kann dann für jeden Eckpunkt eines Fensters errechnet werden, ob sich dieser im Bereich eines Schattens befindet. Eine Gruppe von Fenstern gilt dann als komplett verschattet, wenn alle Eckpunkte verschattet sind.
Dabei gilt auf der Südhalbkugel für die Fassadenausrichtung (Blick aus dem Fenster):
Blickrichtung | Fassadenausrichtung |
---|---|
Süd | β=0° |
Ost | β=90° |
Nord | β=180° |
West | β=270° |
Der Baustein führt seine Berechnungen nur dann durch, wenn die Sonne tatsächlich auf die Fassade scheint. Betrachtet man die in der Einleitung vorgestellte Zeichnung, so ist dies gegeben wenn gilt:
Fassadenausrichtung < Azimutwinkel < Fassadenausrichtung + 180°
Darüber hinaus ist eine Berechnung auch dann nicht nötig, wenn die Sonne noch nicht aufgegangen ist, die Sonnenhöhe (Elevation) also unter 0° liegt. In beiden Fällen wird der Ausgang bFacadeSunlit auf FALSE gesetzt.
VAR_INPUT
eDataSecurityType : E_HVACDataSecurityType;
stTimeAct : TIMESTRUCT;
lrAzimuth : LREAL;
lrElevation : LREAL;
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. |
stTimeAct: Eingabe der aktuellen Uhrzeit in GMT (Greenwich-Mean-Time).
lrAzimuth: Sonnenrichtung zum Betrachtungszeitpunkt in Grad.
lrElevation: Sonnenhöhe zum Betrachtungszeitpunkt in Grad.
VAR_OUTPUT
bGroupNotShaded : BOOL;
bFacadeSunlit : BOOL;
bError : BOOL;
udiErrorId : UDINT;
bGroupNotShaded : Steht auf TRUE, solange die Fenstergruppe als nicht verschattet errechnet wird.
bFacadeSunlit: Dieser Ausgang ist dann auf TRUE gesetzt, wenn die Sonne auf die Fassade scheint. Siehe Beschreibung oben.
bError : Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung des Bausteines ein Fehler erkannt wird.
udiErrorId : Enthält den Fehlercode, sollten die eingetragenen Werte fehlerhaft sein. Siehe Fehlercodes.
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.
arrFacadeElement : ARRAY[1..iColumnsPerFacade, 1..iRowsPerFacade] OF ST_BARFacadeElement;
arrShadingObject : ARRAY[1..iShadingObjects] OF ST_BARShadingObject;
lrFacadeOrientation : LREAL;
usiGroupID : USINT;
arrFacadeElement: Liste der Fassadenelemente.
arrShadingObject: Liste der Verschattungsobjekte.
lrFacadeOrientation: Fassadenausrichtung, siehe Abbildung oben.
usiGroupId: Betrachtete Fenstergruppe. Die Gruppe 0 ist hierbei für nicht verwendete Fensterelemente reserviert, siehe FB_BARFacadeElementEntry. Ein 0-Eintrag würde zu einer Fehlerausgabe führen (bError=TRUE). Der Baustein wird dann nicht weiter abgearbeitet und bGroupNotShaded auf FALSE gesetzt.
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 |