FB_BA_ShdObjEntry

Der Funktionsbaustein FB_BA_ShdObjEntry dient zur Verwaltung aller Verschattungselemente einer Fassade, welche global in einer Liste von Verschattungselementen hinterlegt sind. Er soll die Eingabe der Elementinformationen - auch im Hinblick auf die Nutzung einer Visualisierung - erleichtern. Eine schematische Darstellung der Objekte mit Beschreibung der Koordinaten ist unter Verschattungskorrektur: Grundlagen und Definitionen gegeben.
Die Deklaration der Verschattungselemente erfolgt in den globalen Variablen:
VAR_GLOBAL
arrShdObj : ARRAY[1..BA_Param.nSunPrt.nMaxShdObj] OF ST_BA_ShdObj;
END_VAR
Jedes einzelne Element aShdObj[1] bis aShdObj [nMaxShdObj] trägt die Informationen für jeweils ein Verschattungselement (ST_BA_ShdObj). Dies sind neben dem gewählten Verschattungstyp (Viereck oder Kugel) die jeweils dazugehörigen Koordinaten. Im Falle eines Vierecks sind es die Eckpunkte (fP1x, fP1y, fP1z), (fP2x, fP2y, fP2z), (fP3x, fP3y, fP3z) und (fP4x, fP4y, fP4z) und im Falle einer Kugel der Mittelpunkt (fMx, fMy, fMz) und der Radius fRads. Zusätzlich kann über die Eingänge nBegMth und nEndMth 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 aShdObj direkt auf das Feld dieser Informationen zu.
Anmerkung: Die Tatsache, dass die Vierecks Koordinaten fP2x, fP2z, fP4x, fP4y, und fP4z Ausgangswerte sind, ergibt sich daraus, dass sie aus den Eingabeparametern gebildet werden:
fP2x = fP1x; fP2z = fP1z; fP4x = fP3x; fP4y = fP1y; fP4z = fP3z;
Das schränkt die Eingabe eines Vierecks so weit ein, dass die seitlichen Kanten senkrecht auf dem Boden stehen (fP2x = fP1x und fP4x = fP3x), dass das Viereck keine Neigung hat (fP2z = fP1z und fP4z = fP3z) und nur nach "oben" also in positive y-Richtung eine unterschiedliche Höhe haben kann (fP4y = fP1y).
Die Verwendung des Bausteines erfolgt in drei Schritten:
- Auslesen
- Ändern
- Schreiben
Auslesen
Mit dem Eintrag an nId wird das entsprechende Element aus der Liste, aShdObj[nId], ausgewählt. Eine steigende Flanke an bRd liest die Daten aus. Diese Werte werden den Ein- und Ausgangsvariablen des Bausteines zugewiesen. Es handelt sich hierbei um die Eingangswerte fP1x, fP1y, fP1z, fP2y, fP3x, fP3y, fP3z, fMx, fMy, fMz, fRads und dem Objekt-Enumerator eType und um die Ausgangswerte fP2x, fP2z, fP4x, fP4y und fP4z. 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. Wenn am Eingang eType über den Wert "eObjectTypeTetragon" die Verwendung eines Vierecks vorgewählt ist, ergeben sich die Ausgangswerte fP2x, fP2z, fP4x, fP4y, und fP4z aus den eingegebenen Koordinaten des Vierecks, siehe oben.
Die eingegebenen Werte werden ständig auf Plausibilität überprüft. Der Ausgang bErr zeigt an, ob die Werte gültig sind (bErr=FALSE). Wenn der Wert ungültig ist, wird am Ausgang sErrDescr eine entsprechende Fehlermeldung ausgegeben.
Wird ein Viereck definiert, müssen lediglich die Eingänge fP1x, fP1y, fP1z, fP2y, fP3x, fP3y und fP3z beschrieben werden, die Eingänge fMx, fMy, fMz und fRads brauchen nicht verknüpft zu werden. Im Falle einer Kugeldefinition müssen nur fMx, fMy, fMz und fRads beschrieben werden und die Viereckkoordinaten können unverknüpft bleiben
Schreiben
Mit einer positiven Flanke an bWrt werden die parametrierten Daten in das Listenelement mit dem Index niId geschrieben, unabhängig davon, ob sie gültige Werte darstellen oder nicht. Daher ist innerhalb der Elementstruktur ST_BA_ShdObj ein Plausibilitätsbit bVld vorhanden, das genau diese Information an den Baustein FB_BA_ShdCorr weiterreicht und dort Fehlberechnungen vorbeugt.
Diese Vorgehensweise soll nur als Vorschlag angesehen werden. Es ist auch möglich, den Baustein ganz normal in einem Schritt zu parametrieren und die eingetragenen Werte mit einer steigenden Flanke an bWrt in das entsprechende Listenelement zu schreiben.
Eingänge
VAR_INPUT
nId : UDINT;
bRd : BOOL;
bWrt : BOOL;
fP1x : REAL;
fP1y : REAL;
fP1z : REAL;
fP2y : REAL;
fP3x : REAL;
fP3y : REAL;
fP3z : REAL;
fMx : REAL;
fMy : REAL;
fMz : REAL;
fRads : REAL;
nBegMth : UDINT;
nEndMth : UDINT;
eType : E_BA_ShdObjType;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
nId | UDINT | Index des gewählten Elementes. Dies bezieht sich auf die Auswahl eines Feldelementes des unter der IN-OUT-Variablen aShdObj angelegten Arrays. Die Variable nId darf nicht Null sein! Das ergibt sich aus der Felddefinition, welche mit 1 beginnt. Eine fehlerhafte Eingabe wird jedoch erkannt und als solche an bErr/sErrDescr angezeigt. |
bRd | BOOL | Mit einer positiven Flanke an diesem Eingang werden die Informationen des gewählten Elementes, aShdObj[nId] in den Baustein gelesen und den Eingangsvariablen fP1x bis eType sowie den Ausgangsvariablen fP2x bis fP4z zugewiesen. Sind zu diesem Zeitpunkt schon Daten an den Eingängen fP1x bis eType angelegt, so werden die zuvor ausgelesenen Daten sofort mit diesen überschrieben. |
bWrt | BOOL | Eine positive Flanke schreibt die an den Eingängen fP1x bis eType angelegten sowie die ermittelten und den Ausgängen fP2x bis fP4z zugewiesenen Werte in das gewählte Feldelement aShdObj[nId]. |
fP1x | REAL | X-Koordinate des Punktes 1 des Verschattungselementes (Viereck) [m]. |
fP1y | REAL | Y-Koordinate des Punktes 1 des Verschattungselementes (Viereck) [m]. |
fP1z | REAL | Z-Koordinate des Punktes 1 des Verschattungselementes (Viereck) [m]. |
fP2y | REAL | Y-Koordinate des Punktes 2 des Verschattungselementes (Viereck) [m]. |
fP3x | REAL | X-Koordinate des Punktes 3 des Verschattungselementes (Viereck) [m]. |
fP3y | REAL | Y-Koordinate des Punktes 3 des Verschattungselementes (Viereck) [m]. |
fP3z | REAL | Z-Koordinate des Punktes 3 des Verschattungselementes (Viereck) [m]. |
fMx | REAL | X-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) [m]. |
fMy | REAL | Y-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) [m]. |
fMz | REAL | Z-Koordinate des Mittelpunktes des Verschattungselementes (Kugel) [m]. |
fRads | REAL | Radius des Verschattungselementes (Kugel) [m]. |
nBegMth | UDINT | Anfang der Verschattungsperiode (Monatszahl). |
nEndMth | UDINT | Ende der Verschattungsperiode (Monatszahl). |
eType | Gewählter Elementtyp: Viereck oder Kugel. |
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).
/
Ein-/Ausgänge
VAR_IN_OUT
aShdObj: ARRAY[1..BA_Param.nSunPrt_MaxShdObj] OF ST_BA_ShdObj;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
aShdObj | ARRAY OF ST_BA_ShdObj |
Ausgänge
VAR_OUTPUT
fP2x : REAL;
fP2z : REAL;
fP4x : REAL;
fP4y : REAL;
fP4z : REAL;
bErr : BOOL;
sErrDescr : T_MAXSTRING;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
fP2x | REAL | Ermittelte X-Koordinate des Punktes 2 des Verschattungselementes (Viereck) [m] (siehe "Anmerkung" oben). |
fP2Z | REAL | Ermittelte Z-Koordinate des Punktes 2 des Verschattungselementes (Viereck) [m] (siehe "Anmerkung" oben |
fP4x | REAL | Ermittelte X-Koordinate des Punktes 4 des Verschattungselementes (Viereck) [m] (siehe "Anmerkung" oben). |
fP4y | REAL | Ermittelte Y-Koordinate des Punktes 4 des Verschattungselementes (Viereck) [m] (siehe "Anmerkung" oben). |
fP4z | REAL | Ermittelte Z-Koordinate des Punktes 4 des Verschattungselementes (Viereck) [m] (siehe "Anmerkung" oben). |
bErr | BOOL | Enthält die Fehlerbeschreibung. |
sErrDescr | Enthält die Fehlerbeschreibung |
Fehlerbeschreibung |
---|
01: Fehler: Der Eingang nId liegt außerhalb der zulässigen Grenzen 1..nMaxShdObj. |
02 Fehler: Die Summe der Winkel des Vierecks ist nicht 360°. Das bedeutet, dass die Eckpunkte nicht in der Reihenfolge P1, P2, P3 und P4, sondern P1, P3, P2 und P4 sind. Dies ergibt ein über Kreuz geschlagenes Viereck. |
03: Fehler: Die Eckpunkte des Vierecks liegen nicht auf derselben Ebene. |
04: Fehler: Die z-Komponente von P1 ist kleiner Null. Damit läge dieser Eckpunkt hinter der Fassade. |
05: Fehler: Die z-Komponente von P3 ist kleiner Null. Damit läge dieser Eckpunkt hinter der Fassade. |
06: Fehler: P1 ist gleich P2. Damit ist das eingetragene Objekt kein Viereck. |
07: Fehler: P1 ist gleich P3. Damit ist das eingetragene Objekt kein Viereck. |
08: Fehler: P1 ist gleich P4. Damit ist das eingetragene Objekt kein Viereck. |
09: Fehler: P2 ist gleich P3. Damit ist das eingetragene Objekt kein Viereck. |
10: Fehler: P2 ist gleich P4. Damit ist das eingetragene Objekt kein Viereck. |
11: Fehler: P3 ist gleich P4. Damit ist das eingetragene Objekt kein Viereck. |
12: Fehler: Der eingetragene Radius ist gleich Null. |
13: Fehler: Die z-Komponente des Kugelmittelpunktes ist kleiner Null. Damit läge dieser Punkt hinter der Fassade. |
14: Fehler: Fehler Objekttyp eType - weder Viereck noch Kugel. |
15: Fehler: Fehler Monatseingabe. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.22 | Tc3_BA2 ab v5.2.5.0 |