Der Funktionsbaustein FB_CsvRead ermöglicht das Lesen einer CSV-Datei, die sich im Dateisystem der Steuerung oder in einem Erweiterungsspeicher (z. B. SD-Speicherkarte) befindet. Informationen zum Dateisystem finden Sie im Kapitel zur Flash-Speicheranordnung im Programmierhandbuch Ihrer Steuerung.
Die zu lesende CSV-Datei enthält eine Reihe von Werten (Spalten), die in Einzeldatensätzen (Zeilen) angeordnet sind. Die Werte werden durch spezifische Trennzeichen voneinander abgesetzt. Die Datensätze werden durch Zeilenumbrüche voneinander getrennt.
Anhand des spezifischen Zeichencodes für die Trennzeichen identifiziert der Funktionsbaustein beim Lesen des Dateiinhalts die einzelnen Werte. Der Zeichencode für die Zeilenumbrüche ist vom Betriebssystem abhängig, unetr dem die Datei erstellt wurde. Der Funktionsbaustein unterstützt die drei am häufigsten verwendeten Zeichencodes für Zeilenumbrüche (ASCII). Er erkennt die verwendeten Zeilenumbruch-Zeichen beim Lesen des Dateiinhalts.
Folgende Zeilenumbruch-Zeichen (ASCII) werden unterstützt:
CRLF (0D0A hex)
: Verwendet unter Betriebssystemen wie Windows und MS-DOS.
LF (0A hex)
: Verwendet unter Betriebssystemen wie Unix, Linux, Mac OS X und Android.
CR (0D hex)
: Verwendet unter Betriebssystemen wie Mac OS X bis Version 9.
Die aus der angegebenen Datei ausgelesenen Werte werden in dem von der Anwendung bereitgestellten Lesepuffer in Variablen des Typs STRING gespeichert. Deklarieren Sie den Lesepuffer in der Anwendung als zweidimensionales ARRAY des Typs STRING. Verwenden Sie den Eingang i_stTableReadValues zur Bereitstellung der Dimensionen und des Zeigers des Arrays für den Funktionsbaustein. Weitere Informationen finden Sie in der Struktur ST_CsvTable.
Bei der Ausführung des Funktionsbausteins wird der Eingang i_stTableReadValues.pbyTable intern zur weiteren Verwendung gespeichert. Wenn während der Ausführung des Funktionsbausteins (q_xBusy = TRUE) eine Online-Änderung erkannt wird, werden die intern verwendeten Variablen mit dem aktuellen Wert des Eingangs aktualisiert.
Die zu lesende Datei darf nur ASCII-Zeichen enthalten, damit der Inhalt der Datei in der Anwendung ordnungsgemäß wiedergegeben werden kann. Dateien können am Anfang ein Byte Order Mark (BOM) enthalten, das auf die Codierung der verarbeiteten Datei verweist. ASCII-codierte Dateien enthalten kein BOM. Der Funktionsbaustein sucht in der angegebenen Datei nach spezifischen BOMs.
Wenn die Datei einen der folgenden BOMs enthält, wird die Ausführung des Funktionsbausteins abgebrochen und ein Fehler ausgegeben:
FE FF hex
FE FF hex, FF EF hex
oder EF BB BF hex EF BB BF hex
Verwenden Sie den Eingang i_stReadParameter, um die Menge der zu lesenden Daten festzulegen. Sie können den gesamten Inhalt einer Datei lesen. Oder Sie können vorgeben, dass nur ein einzelner Datensatz (Zeile), eine einzelne Spalte oder ein einzelner Wert gelesen werden soll. Darüber hinaus können Sie festlegen, dass nur die vom Ausgang q_stFileInformation angegebenen Dateiinformationen gelesen werden sollen.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_xExecute |
BOOL |
Der Funktionsbaustein führt bei steigender Flanke an diesem Eingang einen Lesevorgang für die angegebene CSV-Datei durch. Siehe auch das Kapitel Verhalten der Funktionsbausteine mit dem Eingang i_xExecute. |
i_sFilePath |
STRING[255] |
Dateipfad der CSV-Datei. Wenn ein Dateiname ohne Dateierweiterung angegeben wird, fügt der Funktionsbaustein die Erweiterung .csv hinzu. |
i_stReadParameter |
ST_CsvReadParameter |
Gibt den aus der Datei auszulesenden Inhalt an. Siehe ST_CsvReadParameter. |
i_timTimeout |
TIME |
Nach Ablauf dieses Zeitraums wird die Ausführung abgebrochen. Wenn der Wert T#0s ist, wird der Standardwert T#2s angewendet. |
i_stTableReadValues |
ST_CsvTable |
Struktur zur Übergabe des von der Anwendung bereitgestellten Puffers an den Funktionsbaustein (siehe die ST_CsvTable-Struktur). |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_xDone |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, wurde die Ausführung erfolgreich abgeschlossen. |
q_xBusy |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, bedeutet das, dass der Funktionsbaustein ausgeführt wird. |
q_xError |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, wurde ein Fehler identifiziert. Für weitere Informationen, siehe q_etResult und q_etResultMsg. |
q_etResult |
ET_Result |
Stellt Diagnose- und Statusinformationen in Form numerischer Werte bereit. Wenn q_xBusy = TRUE, dann gibt der Wert den Status an. Wenn q_xDone oder q_xError = TRUE, dann entspricht der Wert dem Ergebnis. |
q_sResultMsg |
STRING[80] |
Stellt zusätzliche Diagnose- und Statusinformationen in Form von Textmeldungen bereit. |
q_stFileInformation |
ST_CsvFileInfo |
Die Struktur enthält Informationen zur zuletzt verarbeiteten Datei. |
q_stWarnValueTruncated |
ST_CsvWarnValueTruncated |
Enthätl Informationen zum ersten abgeschnittenen Wert, sofern verfügbar.
HINWEIS: Der Ausgang wird gemeinsam mit q_xDone aktualisiert.
|
Weitere Informationen zum Signalverhalten der Basiseingänge und -ausgänge finden Sie im Kapitel Verhalten der Funktionsbausteine mit Eingang i_xExecute.
Der Funktionsbaustein stellt Eingänge und/oder Ein-/Ausgänge vom Typ POINTER TO… oder REFERENCE TO… bereit. Mithilfe eines derartigen Zeigers bzw. einer derartigen Referenz greift der Funktionsbaustein auf den adressierten Speicherbereich zu.