FB_BA_RdShdObjLst

FB_BA_RdShdObjLst 1:

Mit Hilfe des Funktionsbausteines FB_BA_RdShdObjLst lassen sich Daten für Verschattungsobjekte aus einer vordefinierten Excel-Tabelle im csv-Format in die Liste der Verschattungsobjekte importieren. Zusätzlich werden die importierten Daten auf Plausibilität überprüft und Fehler in eine Log-Datei geschrieben.

Das folgende Beispiel zeigt die Excel-Tabelle mit den Einträgen der Fensterelemente.
Alle Textfelder sind frei beschreibbar. Wichtig sind die grün markierten Felder, jede Zeile dort kennzeichnet einen Datensatz. Je nachdem ob es sich um den Typ Viereck oder Kugel handelt, haben die Spalten G bis J eine unterschiedliche Bedeutung. Die Spalten K bis M sind bei Kugeln freizulassen. Bezüglich der Vierecks-Koordinaten werden nur die relevanten Daten eingegeben und die restlichen intern berechnet (siehe FB_BA_ShdObjEntry).
Folgende Regeln sind zu beachten:

Es ist nicht notwendig, alle Verschattungsobjekte, welche pro Fassade möglich sind, zu beschreiben. Nur die, die in der Liste aufgeführt werden, kommen letztendlich zum Tragen.

FB_BA_RdShdObjLst 2:

Log-Datei

Bei jedem Start des Lesebausteines wird die Logdatei neu beschrieben und der alte Inhalt gelöscht. Ist die Log-Datei nicht vorhanden, so wird sie zunächst automatisch erstellt. Die Log-Datei enthält dann entweder eine OK Meldung oder eine Auflistung aller aufgetretenen Fehler. Fehler, welche mit dem Öffnen, Beschreiben oder Schließen der Logdatei selbst in Zusammenhang stehen, können nicht mitgeschrieben werden. Daher ist immer auch der Ausgang sErrDescr des Lesebausteines zu beachten, der den letzten Fehlercode anzeigt. Da im Ablauf des Lesens die Log-Datei immer als Letztes geschlossen wird, ist ein entsprechender Hinweis im Fehlerfall gewährleistet.

Programmbeispiel

FB_BA_RdShdObjLst 3:

In diesem Beispiel wird bei PLC-Start die Variable bInit zunächst auf TRUE gesetzt. Damit erhält der Eingang bStt am Baustein fbReadShadingObjects einmalig eine steigende Flanke, welche den Lesevorgang auslöst. Gelesen wird die Datei ShadingObjects.csv, welche sich im Ordner C:∖Projekte∖ befindet. In demselben Ordner wird dann die Logdatei Logfile.txt hinterlegt. Ist diese Logdatei noch nicht vorhanden wird sie erstellt, andernfalls wird der bestehende Inhalt überschrieben. Das Lesen und Schreiben erfolgt auf demselben Rechner, auf dem sich auch die PLC befindet. Das wird durch den Eingang tNetID = '' (=lokal) definiert. Alle Daten werden in die im Programm deklarierte Liste aShdObj geschrieben. Während gelesen und geschrieben wird ist der Ausgang bBusy auf TRUE. Der zuletzt auftretende Fehler in Bezug auf das Dateihandling wird an sErrDescr angezeigt, bErr steht dann auf TRUE. Wird hingegen ein Fehler im Datensatz erkannt, wird dies an bErrDataSet angezeigt und in der Log-Datei näher beschrieben. Die Anzahl der gefundenen und gelesenen Datenzeilen wird an nAmtSetsRd zur Kontrolle angezeigt.

In die folgende Excel Liste wurden die markierten Fehler eingebaut. Dadurch ergibt sich das gezeigte Log-File:

FB_BA_RdShdObjLst 4:

Der erste Fehler ist im Datensatz 3 und ein Typ-Fehler, da "2" nicht definiert ist.
Der nächste Fehler in Datensatz 6 wurde nach Validierung der Daten mit dem intern genutzten Baustein FB_BA_ShdObjEntry gefunden und daher näher mit einer Fehlerbeschreibung versehen. Der dritte Fehler trat ebenfalls nach der internen Validierung auf.

Zu beachten ist, dass die fehlenden Koordinaten wie folgt ausgefüllt werden:

fP2x = fP1x; fP2z = fP1z; fP4x = fP3x; fP4y = fP1y; fP4z = fP3z;

Fehlermeldungen, die die Gleichheit zweier Punkte bemängeln, sind nach diesen Gleichungen zu untersuchen.

FB_BA_RdShdObjLst 5:

Wichtig hierbei ist, dass sich die Datensatz-Nummer (hier 11) nicht nach der eingetragenen Nummer in der Liste, sondern nach der tatsächlichen laufenden Nummer richtet: eingelesen wurden hier lediglich 16 Datensätze.

FB_BA_RdShdObjLst 6: Eingänge

VAR_INPUT
  bStt       : BOOL;
  sDataFile  : STRING;
  sLogFile   : STRING;
  tNetId     : T_AmsNetId;
END_VAR

Name

Typ

Beschreibung

bStt

BOOL

Eine TRUE-Flanke an diesem Eingang startet den Lesevorgang.

sDataFile

STRING

Enthält den Pfad- und Dateinamen der zu öffnenden Daten-Datei. Diese muss in Excel als Dateityp "CSV (Trennzeichen-getrennt) (*.csv)" abgespeichert worden sein. Wird die Datei mit einem einfachen Text-Editor geöffnet, so müssen die Werte durch Semikola getrennt dargestellt sein. Beispiel für einen Eintrag: sDataFile:= 'C:∖Projekte∖FacadeElements.csv'

sLogFile

STRING

dto. Log-File für die auflaufenden Fehler. Diese Datei wird bei jeder neuen Bausteinaktivierung überschrieben, so dass nur aktuelle Fehler enthalten sind.

tNetId

T_AmsNetID

Hier kann ein String mit der AMS Net Id des TwinCAT-Rechners angegeben werden, auf dem die Dateien geschrieben/gelesen werden sollen. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

FB_BA_RdShdObjLst 7:

Die Speicherung der Daten kann nur auf dem Steuerungsrechner selbst und den Rechnern erfolgen, die mit dem Steuerungsrechner per ADS verbunden sind. Verweise auf lokale Festplatten dieser Rechner sind möglich, nicht jedoch auf verbundene Netzwerkfestplatten.

FB_BA_RdShdObjLst 8: / FB_BA_RdShdObjLst 9: 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_RdShdObjLst 10: Ausgänge

VAR_OUTPUT
  bBusy        : BOOL;
  nAmtSetsRd   : UDINT;
  bErr         : BOOL;
  sErrDescr    : T_MAXSTRING;
  bErrDataSet  : BOOL;
END_VAR

Name

Typ

Beschreibung

bBusy

BOOL

Dieser Ausgang steht auf TRUE, solange Elemente aus der Datei ausgelesen werden.

aAmtSetsRd

UDINT

Anzahl der gelesenen Datensätze

bErr

BOOL

Bei fehlerhafter Abarbeitung, bzw. bei Warnzuständen wird dieser Ausgang auf TRUE gesetzt.

sErrDescr

T_MAXSTRING

Enthält die Fehlerbeschreibung

Fehlerbeschreibung

01: Dateihandling-Fehler: Öffnen der Logdatei - Es wird die ADS-Fehlernummer angegeben.

02: Dateihandling-Fehler: Öffnen der Datendatei - Es wird die ADS-Fehlernummer angegeben.

03: Dateihandling-Fehler: Lesen der Datendatei - Es wird die ADS-Fehlernummer angegeben.

04: Fehler: Beim Lesen der Datendatei wurde festgestellt, dass die Datei ist zu groß ist (Anzahl Bytes größer als nMaxDataFileSize)

05: Dateihandling-Fehler: Schreiben in die Logdatei - Es wird die ADS-Fehlernummer angegeben.

06: Dateihandling-Fehler: Schließen der Datendatei - Es wird die ADS-Fehlernummer angegeben.

07: Dateihandling-Fehler: Schreiben in die Logdatei (ok-Meldung, falls keine Fehler erkannt wurden) - Es wird die ADS-Fehlernummer angegeben.

08: Dateihandling-Fehler: Schließen der Logdatei - Es wird die ADS-Fehlernummer angegeben.

Name

Typ

Beschreibung

bErrDataSet

BOOL

Dieser Ausgang wird auf TRUE geschaltet, wenn die gelesenen Datensätze fehlerhaft sind. Nähere Einzelheiten werden in die Log-Datei geschrieben.

Voraussetzungen

Entwicklungsumgebung

Erforderliche SPS-Bibliothek

TwinCAT ab v3.1.4024.22

Tc3_BA2 ab v5.2.5.0