FB_CsvRead Funktionsbeschreibung

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.0.8.0

Übernommen aus

-

Implementiert

-

Funktionsbeschreibung

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.

HINWEIS: Weisen Sie i_stTableReadValues.pbyTable während der Funktionsbausteinausführung keinem anderen Speicherbereich zu.

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

HINWEIS: Die Funktion löscht das Array vor dem Lesevorgang.

Schnittstelle

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.

Verwendung von Variablen des Typs POINTER TO … oder REFERENCE TO …

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.

HINWEIS: Bei einer Online-Änderung kann es vorkommen, dass die Speicherbereiche zu neuen Speicherpositionen verschoben wurden. Infolgedessen ist ein Zeiger bzw. eine Referenz dadurch ungültig. Um Fehler in Verbindung mit ungültigen Zeigern zu vermeiden, müssen Variablen des Typs POINTER TO… oder REFERENCE TO… zyklisch aktualisiert werden oder zumindest am Anfang des Zyklus, in dem sie verwendet werden.