FB_BA_ShdObjEntry

FB_BA_ShdObjEntry 1:

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

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.

FB_BA_ShdObjEntry 2: 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

E_BA_ShdObjType

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).

FB_BA_ShdObjEntry 3: / FB_BA_ShdObjEntry 4: 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

Liste der Verschattungsobjekte

FB_BA_ShdObjEntry 5: 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

T_MAXSTRING

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