FB_BA_FcdElemEntry

Der Funktionsbaustein FB_BA_FcdElemEntry dient zur Verwaltung aller Fassadenelemente (Fenster) einer Fassade, welche global in einer Liste von Fassadenelementen hinterlegt ist. Er soll die Eingabe der Elementinformationen - auch im Hinblick auf die Nutzung der TC3 PLC HMI - erleichtern. Eine schematische Darstellung der Objekte mit Beschreibung der Koordinaten ist unter Verschattungskorrektur: Grundlagen und Definitionen gegeben.
Die Deklaration der Fassadenelemente erfolgt in den globalen Variablen als zweidimensionales Feld über die Fensterspalten (Columns) und -reihen (Rows):
VAR_GLOBAL
aFcdElem : ARRAY[1..Param.nSunPrt_MaxColumnFcd, 1..Param.nSunPrt_MaxRowFcd] OF ST_BA_FcdElem;
END_VAR
Jedes einzelne Element arrFcdElem[x,y] trägt die Informationen für jeweils ein Fassadenelement (ST_BA_FcdElem). Dazu gehören die Gruppenzugehörigkeit, die Abmessungen (Breite, Höhe) und die Koordinaten der Eckpunkte. Der Baustein greift dabei über die IN-OUT-Variable aFcdElem direkt auf dieses Feld zu.
Anmerkung: Die Tatsache, dass die Koordinaten der Eckpunkte C2 bis C4 Ausgangswerte sind, ergibt sich daraus, dass sie aus den Eingabeparametern gebildet werden und für die Verwendung in einer Visualisierung zur Verfügung stehen sollen:

Alle Angaben in [m]!
fCnr2X = fCnr1X
fCnr2Y = fCnr1Y + fWdwHght (Fensterhöhe)
fCnr3X = fCnr1X + fWdwWdth (Fensterbreite)
fCnr3Y = fCnr2Y
fCnr4X = fCnr1X + fWdwWdth (Fensterbreite)
fCnr4Y = fCnr1Y
Die Verwendung des Bausteines erfolgt in drei Schritten:
- Auslesen
- Ändern
- Schreiben
Auslesen
Mit den Einträgen an nColumn und nRow wird das entsprechende Element aus der Liste, aFcdElem[nColumn, nRow], ausgewählt. Eine steigende Flanke an bRd liest folgende Daten aus dem Listenelement aus:
- nGrp Gruppenzugehörigkeit,
- fCnr1X X-Koordinate des Eckpunktes1 [m]
- fCnr1Y Y-Koordinate des Eckpunktes1 [m]
- fWdwWdth Fensterbreite [m]
- fWdwHght Fensterhöhe [m]
Diese werden dann den entsprechenden Eingangsvariablen des Bausteines zugewiesen, der daraus nach dem oben erläuterten Zusammenhang die Koordinaten der Eckpunkte C2-C4 als Ausgangsvariablen errechnet. 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 die aufgeführten Eingabewerte verändert werden. Die eingegebenen Werte werden dabei ständig auf Plausibilität überprüft. Der Ausgang bErr zeigt an, ob die Werte gültig sind (bErr=FALSE). Wenn die Werte ungültig sind, wird am Ausgang sErrDescr eine entsprechende Fehlermeldung ausgegeben. Siehe auch unten "Fehler (bErr=TRUE)".
Schreiben
Mit einer positiven Flanke an bWrt werden die parametrierten Daten in das von nRow und nColumn abhängige Feld des Arrays aFcdElem geschrieben, unabhängig davon, ob sie gültige Werte darstellen oder nicht. Daher ist innerhalb der Elementstruktur ST_BA_FcdElem ebenfalls 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 natürlich 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.
Fehler (bErr=TRUE)
Der Baustein FB_BA_ShdCorr, welcher beurteilt, ob alle Fenster einer Gruppe verschattet sind, wird nur dann seine Aufgabe ausführen, wenn alle Fenster der betrachteten Gruppe gültige Einträge haben.
Das bedeutet:
- nGrp muss größer als 0 sein
- fCnr1X muss größer oder gleich 0.0 sein
- fCnr1Y muss größer oder gleich 0.0 sein
- fWdwWdth muss größer als 0 sein
- fWdwHght muss größer als 0 sein
Ist eines dieser Kriterien nicht erfüllt, so wird dies als Falscheingabe interpretiert und der Fehlerausgang bErr am Bausteinausgang von FB_BA_FcdElemEntry gesetzt. Innerhalb des Fensterelementes ST_BA_FcdElem wird das Plausibilitätsbit bVld auf FALSE gesetzt.
Sind hingegen alle Einträge eines Fassadenelementes Null, wird es als gültiges, gewollt ausgelassenes Fassadenelement angesehen:

Bei einer Fassade von 6x4 Fenstern wären hier die Elemente Fenster (2,1), Fenster (3,5) und Fenster (4,4) Leerelemente.
Eingänge
VAR_INPUT
nColumn : UDINT;
nRow : UDINT;
bWrt : BOOL;
bRd : BOOL;
nGrp : UDINT;
fCnr1X : REAL;
fCnr1Y : REAL;
fWdwWdth : REAL;
fWdwHght : REAL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
nColumn
| UDINT | Spalten-Index des gewählten Elementes auf der Fassade. Dies bezieht sich auf die Auswahl eines Feldelementes des unter der IN-OUT-Variablen aFcdElem angelegten Arrays. |
nRow | UDINT | dto. Reihen-Index. nRow und nColumn dürfen nicht Null sein! Das ergibt sich aus der Felddefinition, welche jeweils mit 1 beginnt, siehe oben. |
bRd | BOOL | Mit einer positiven Flanke an diesem Eingang werden die Informationen des gewählten Elementes, aFcdElem[nColumn, nRow] in den Baustein gelesen und den Eingangsvariablen nGrp bis fWdwHght zugewiesen. Daraus ergeben sich dann die Ausgangsvariablen fCnr2X bis fCnr4Y. Sind zu Zeitpunkt des Auslesens schon Daten an den Eingängen nGrp bis fWdwHght angelegt, so werden die zuvor ausgelesenen Daten sofort mit diesen überschrieben. |
bWrt | BOOL | Eine positive Flanke schreibt die eingegebenen sowie errechneten Werte in das gewählte Feldelement aFcdElem[nColumn, nRow]. |
nGrp | UDINT | Gruppenzugehörigkeit. Intern begrenzt auf einen Minimalwert von 0. |
fCnr1X | REAL | X-Koordinate des Eckpunktes1 [m] |
fCnr1Y | REAL | Y-Koordinate des Eckpunktes1 [m] |
fWdwWdth | REAL | Fensterbreite [m] |
fWdwHght | REAL | Fensterhöhe [m] |
Ausgänge
VAR_OUTPUT
fCnr2X : REAL;
fCnr2Y : REAL;
fCnr3X : REAL;
fCnr3Y : REAL;
fCnr4X : REAL;
fCnr4Y : REAL;
bErr : BOOL;
sErrDesc : T_MAXSTRING;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
fCnr2X | REAL | Ermittelte X-Koordinate des Eckpunktes 2 des Fensters [m] (siehe Funktionsbeschreibung) |
fCnr2Y | REAL | Ermittelte Y-Koordinate des Eckpunktes 2 des Fensters [m] (siehe Funktionsbeschreibung) |
fCnr3X | REAL | Ermittelte X-Koordinate des Eckpunktes 3 des Fensters [m] (siehe Funktionsbeschreibung) |
fCnr2Y | REAL | Ermittelte Y-Koordinate des Eckpunktes 3 des Fensters [m] (siehe Funktionsbeschreibung) |
fCnr4X | REAL | Ermittelte X-Koordinate des Eckpunktes 4 des Fensters [m] (siehe Funktionsbeschreibung) |
fCnr2Y | REAL | Ermittelte Y-Koordinate des Eckpunktes 4 des Fensters [m] (siehe Funktionsbeschreibung) |
bErr | BOOL | Bei fehlerhafter Abarbeitung, bzw. bei Warnzuständen wird dieser Ausgang auf TRUE gesetzt. |
sErrDescr | Enthält die Fehlerbeschreibung |
Fehlerbeschreibung |
---|
01: Fehler: Indexfehler! nColumn und/oder nRow liegen außerhalb der zulässigen Grenzen 1.. nSunPrt_MaxColumnFcd bzw. 1.. nSunPrt_MaxRowFcd. Siehe Liste der Fassadenelemente. |
02: Fehler: Der Gruppenindex ist 0, gleichzeitig ist jedoch ein anderer Eintrag des Fassadenelementes ungleich Null. Nur wenn alle Einträge eines Fassadenelementes Null sind, wird es als gültiges, gewollt ausgelassenes Fassadenelement angesehen, ansonsten jedoch als Fehleingabe interpretiert. Info: Gruppeneinträge kleiner Null werden intern auf Null begrenzt! |
03: Fehler: Die X-Komponente des ersten Eckpunktes (Corner1) ist kleiner Null. |
04: Fehler: Die Y-Komponente des ersten Eckpunktes (Corner1) ist kleiner Null. |
05: Fehler: Die Fensterbreite ist kleiner oder gleich Null. |
06: Fehler: Die Fensterhöhe ist kleiner oder gleich Null. |
/
Ein-/Ausgänge
VAR_IN_OUT
aFcdElem : ARRAY[1..Param.nSunPrt_MaxColumnFcd, 1..Param.nSunPrt_MaxRowFcd] OF ST_BA_FcdElem;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
aFcdElem | ARRAY OF ST_BA_FcdElem |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.22 | Tc3_BA2 ab v5.2.5.0 |