FB_BARShadingObjectsEntry
Dieser Baustein dient zur Verwaltung aller Verschattungselemente einer Fassade, welche global in einer Liste von Verschattungselementen hinterlegt ist. Er soll die Eingabe der Elementinformationen - auch im Hinblick auf die Nutzung der Target-Visualisierung - erleichtern. Eine schematische Darstellung der Objekte mit Beschreibung der Koordinaten ist unter Verschattungskorrektur: Grundlagen und Definitionen gegeben.
Die Deklaration der Verschattungselemente erfolgt in der globalen Variablen:
VAR_GLOBAL
arrShadingObject : ARRAY[1..iShadingObjects] OF ST_BARShadingObject;
END_VAR
Jedes einzelne Element arrShadingObject[1] bis arrShadingObject[iShadingObjects] trägt die Informationen für jeweils ein Verschattungselement (ST_BARShadingObject). Dies sind neben dem gewählten Verschattungstyp (Viereck oder Kugel) die jeweils dazugehörigen Koordinaten. Im Falle eines Vierecks sind es die Eckpunkte (lrP1x, lrP1y, lrP1z), (lrP2x, lrP2y, lrP2z),(lrP3x, lrP3y, lrP3z) und (lrP4x, lrP4y, lrP4z) und im Falle einer Kugel der Mittelpunkt (lrMx, lrMy, lrMz) und der Radius lrRadius. Zusätzlich kann über die Eingänge usiBeginMonth und usiEndMonth die Phase der Verschattung definiert werden, was bei Objekten, wie z.B. Bäume, die im Winter kein Laub tragen, wichtig ist.
Der Baustein greift dabei über die IN-OUT-Variable arrShadingObject direkt auf das Feld dieser Informationen zu.
Anmerkung: Die Tatsache, dass die Vierecks Koordinaten lrP2x, lrP2z, lrP4x, lrP4y, und lrP4z Ausgangswerte sind, ergibt sich daraus, dass sie aus den Eingabeparametern gebildet werden:
lrP2x = lrP1x; lrP2z = lrP1z; lrP4x = lrP3x; lrP4y = lrP1y; lrP4z = lrP3z;
Das schränkt die Eingabe eines Vierecks soweit ein, dass die seitlichen Kanten senkrecht auf dem Boden stehen (lrP2x = lrP1x und lrP4x = lrP3x), dass das Viereck keine Neigung hat (lrP2z = lrP1z und lrP4z = lrP3z) und nur nach "oben" also in positive y-Richtung eine unterschiedliche Höhe haben kann (lrP4y = lrP1y).
Die Verwendung des Bausteines erfolgt in drei Schritten:
- Auslesen
- Ändern
- Schreiben
Auslesen
Mit dem Eintrag an iId wird das entsprechende Element aus der Liste, arrShadingObject[iId], ausgewählt. Eine steigende Flanke an bRead liest die Daten aus. Diese Werte werden den Ein- und Ausgangsvariablen des Bausteines zugewiesen. Es handelt sich hierbei um die Eingangswerte lrP1x, lrP1y, lrP1z, lrP2y, lrP3x, lrP3y, lrP3z, lrMx, lrMy, lrMz, lrRadius und den Objekt-Enumerator eType und die Ausgangswerte lrP2x, lrP2z, lrP4x, lrP4y, und lrP4z. Wichtig ist hierbei, dass im Schritt des Auslesens die Eingangswerte nicht überschrieben werden. So lassen sich alle Werte zunächst in einer Visualisierung anzeigen.
Ändern
In einem nächsten Programmschritt können dann die aufgeführten Eingabewerte verändert werden. Sollte am EingangeType über den Wert "eObjectTypeTetragon" die Verwendung eines Vierecks vorgewählt sein, ergeben sich die Ausgangswerte rP2x, rP2z, rP4x, rP4y, und rP4z aus den eingegebenen Koordinaten des Vierecks, siehe oben.
Die eingegebenen Werte werden ständig auf Plausibilität überprüft. Der Ausgang bValid zeigt an, ob die Werte gültig sind (bValid=TRUE). Sollte dies nicht der Fall sein, wird am Ausgang udiErrorId ein entsprechender Fehlercode ausgegeben.
Wird ein Viereck definiert, müssen lediglich die Eingänge lrP1x, lrP1y, lrP1z, lrP2y, lrP3x, lrP3y und lrP3z beschrieben werden, die Eingänge lrMx, lrMy, lrMz und lrRadius brauchen nicht verknüpft zu werden. Im Falle einer Kugeldefinition müssen nur lrMx, lrMy, lrMz und lrRadius beschrieben werden und die Viereckkoordinaten können unverknüpft bleiben
Mit einer positiven Flanke an bWrite werden die parametrierten Daten in das Listenelement mit dem Index iId geschrieben, unabhängig davon, ob sie gültige Werte darstellen oder nicht. Daher ist innerhalb der Elementstruktur ST_BARShadingObject ebenfalls ein Plausibilitätsbit bValid vorhanden, das genau diese Information an den Baustein FB_BARShadingCorrection / FB_BARShadingCorrectionSouth weiterreicht und dort Fehlberechnungen vorbeugt.
Diese Vorgehensweise soll nur als Vorschlag angesehen werden. Es ist natürlich auch möglich, den Baustein ganz normal in einem Schritt zu parametrieren und die eingetragenen Werte mit einer steigenden Flanke an bWrite in das entsprechende Listenelement zu schreiben.
VAR_INPUT
iId : INT;
bRead : BOOL;
bWrite : BOOL;
lrP1x : LREAL;
lrP1y : LREAL;
lrP1z : LREAL;
lrP2y : LREAL;
lrP3x : LREAL;
lrP3y : LREAL;
lrP3z : LREAL;
lrMx : LREAL;
lrMy : LREAL;
lrMz : LREAL;
lrRadius : LREAL;
usiBeginMonth : USINT;
usiEndMonth : USINT;
eType : E_BARShadingObjectType;
iId: Index des gewählten Elementes. Dies bezieht sich auf die Auswahl eines Feldelementes des unter der IN-OUT-Variablen arrShadingObject angelegten Arrays. iId darf nicht Null sein! Das ergibt sich aus der Felddefinition, arrShadingObject : ARRAY[1..iShadingObjects] OF ST_BARShadingObject;
bRead: Mit einer positiven Flanke an diesem Eingang werden die Informationen des gewählten Elementes, arrShadingObject[iId] in den Baustein gelesen und den Eingangsvariablen lrP1x bis eType sowie den Ausgangsvariablen lrP2x bis lrP4z zugewiesen. Sind zu diesem Zeitpunkt schon Daten an den Eingängen lrP1x bis eType angelegt, so werden die zuvor ausgelesenen Daten sofort mit diesen überschrieben.
bWrite: Eine positive Flanke schreibt die an den Eingängen rP1x bis eType angelegten sowie die ermittelten und den Ausgängen lrP2x bis lrP4z zugewiesenen Werte in das gewählte Feldelement arrShadingObject[iId].
lrP1x: X-Koordinate des Punktes 1 des Verschattungselementes (Viereck) in Meter.
lrP1y: Y-Koordinate des Punktes 1 des Verschattungselementes (Viereck) in Meter.
lrP1z: Z-Koordinate des Punktes 1 des Verschattungselementes (Viereck) in Meter.
lrP2y: Y-Koordinate des Punktes 2 des Verschattungselementes (Viereck) in Meter.
lrP3x: X-Koordinate des Punktes 3 des Verschattungselementes (Viereck) in Meter.
lrP3y: Y-Koordinate des Punktes 3 des Verschattungselementes (Viereck) in Meter.
lrP3z: Z-Koordinate des Punktes 3 des Verschattungselementes (Viereck) in Meter.
lrMx: X-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) in Meter.
lrMy: Y-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) in Meter.
lrMz: Z-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) in Meter.
lrRadius: Radius des Verschattungselementes (Kugel) in Meter.
usiBeginMonth: Anfang der Verschattungsperiode (Monatszahl).
usiEndMonth: Ende der Verschattungsperiode (Monatszahl).
eType: Gewählter Elementtyp: Viereck oder Kugel. Siehe E_BARShadingObjectType.
Bemerkung zur Verschattungsperiode:
Die Monatseinträge dürfen nicht 0 und größer 12 sein, andernfalls sind alle Kombinationen möglich.
Beispiele:
Beginn=1, Ende=1: Verschattung im Januar.
Beginn=1, Ende=5: Verschattung von Anfang Januar bis Ende Mai.
Beginn=11, Ende=5: Verschattung von Anfang November bis Ende Mai (des folgenden Jahres).
VAR_OUTPUT
lrP2x : LREAL;
lrP2z : LREAL;
lrP4x : LREAL;
lrP4y : LREAL;
lrP4z : LREAL;
bValid : BOOL;
udiErrorId : UDINT;
lrP2x: Ermittelte X-Koordinate des Punktes 2 des Verschattungselementes (Viereck) in Meter. Siehe "Anmerkung" oben.
lrP2z: Ermittelte Z-Koordinate des Punktes 2 des Verschattungselementes (Viereck) in Meter. Siehe "Anmerkung" oben.
lrP4x: Ermittelte X-Koordinate des Punktes 4 des Verschattungselementes (Viereck) in Meter. Siehe "Anmerkung" oben.
lrP4y: Ermittelte Y-Koordinate des Punktes 4 des Verschattungselementes (Viereck) in Meter. Siehe "Anmerkung" oben.
lrP4z: Ermittelte Z-Koordinate des Punktes 4 des Verschattungselementes (Viereck) in Meter. Siehe "Anmerkung" oben.
bValid: Ergebnis der Plausibilitätskontrolle für die eingegebenen Werte. In Bezug auf ein Viereck ist verlangt, dass der Innenwinkel 360° beträgt und die Punkte in einer Ebene liegen und vor der betrachteten Fassade liegen. Bei einer Kugel muss der Mittelpunkt ebenfalls vor der Fassade liegen und der Radius muss größer Null sein.
udiErrorId: Enthält den Fehlercode, sollten die eingetragenen Werte nicht den erwähnten Kriterien entsprechen. Siehe Fehlercodes.
VAR_IN_OUT
arrShadingObject : ARRAY[1..iShadingObjects] OF ST_BARShadingObject;
arrShadingObject: Liste der Verschattungsobjekte. Werte werden persistent gespeichert.
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 |