FB_AsciiReader

 

FB_AsciiReader - Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.7.0.0

Übernommen aus

-

Implementiert

-

Versionen:

Aktuelle Version

Aufgabe

Auslesen einer Variablentabelle aus einer Datei

Beschreibung

HINWEIS: Der Funktionsbaustein FB_AsciiReader funktioniert nur dann korrekt, wenn die verwendeten Datenstrukturen mit Pack_Mode = 1 gespeichert werden.

Die Funktion liest die in i_pbyStructInfo angegebene Anzahl von Variablen des in i_iCount angegebenen Typs aus einer Textdatei in den Speicher an die in i_dwBufferAdr angegebene Adresse ein.

Der Lesevorgang startet bei einer positiven Flanke an i_xExecute und hält bei Erkennung eines Fehlers oder nach erfolgreichem Lesen aller Daten an. Während des Lesevorgangs darf kein Parameter (außer i_xExecute) geändert werden. Zudem darf auf den Speicherbereich, auf den i_dwBufferAdr zeigt, nicht schreibend zugegriffen werden.

Die Datei muss zuvor mit FB_AsciiWriter oder einem beliebigen Editor erzeugt werden und folgendes Format aufweisen:

oOptionaler Header mit maximal 10 Zeilen mit beispielsweise Kommentaren, Variablennamen, Spaltenüberschriften usw. Siehe auch die Eingänge i_xStructNames und i_uiLinesOfHeader.

oJede weitere Zeile muss je einen Wert für alle Variablen der Struktur im entsprechenden Format enthalten.

oDie einzelnen Werte müssen durch Tabulatoren voneinander getrennt und das Zeilenende jeweils durch CRLF markiert werden.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_xExecute

BOOL

FALSE -> TRUE: Baustein wird aktiviert. Der Lesevorgang beginnt.

i_sFileName

STRING

Name der Textdatei, aus der Variablen ausgelesen werden sollen.

i_iCount

INT

Maximale Anzahl an Datensätzen, die gelesen werden sollen.

i_dwBufferAdr

DWORD

Adresse des Arrays, in dem die Daten gespeichert werden sollen. Es muss entsprechend viel Speicher reserviert sein.

a: ARRAY [0..i_iCount-1] OF Struct

BufferAdr:=adr(a);

i_pbyStructInfo

POINTER TO BYTE

Startadresse des Strings mit der Beschreibung eines Datensatzes in der Struktur. Die Standardtypen der einzelnen Variablen sind durch Komma voneinander getrennt.

z.B. 'BOOL,DWORD,USINT'

i_xStructNames

BOOL

TRUE: Die über i_uiLinesOfHeader definierte Anzahl Zeilen werden in der Datei ignoriert. Das ist erforderlich, wenn die Datei mit dem HYPERLINK „54043196593213067.html“FB_AsciiWriter erstellt und zusätzlich zu den Daten Variablennamen gespeichert wurden oder wenn die Datei mit Excel erstellt und die Spaltenüberschriften ebenfalls gespeichert wurden.

i_uiLinesOfHeader

BOOL

Anzahl der Zeilen am Anfang der Datei, die ignoriert werden, wenn i_xStructNames = TRUE.

Standardwert = 1

Bereich: 1...10

Ausgang

Datentyp

Beschreibung

q_xBusy

BOOL

TRUE: Der Lesevorgang ist aktiv.

q_xDone

BOOL

Der Lesevorgang ist abgeschlossen

q_etDiag

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung.

q_etDiagExt

ET_DiagExt

POU-spezifischer, diagnosebezogener Ausgang.

q_etDiag = ET_Diag.Ok -> Statusmeldung

q_etDiag <> ET_Diag.Ok -> Diagnosemeldung

q_sMsg

STRING[80]

Ereignisabhängige Meldung mit detaillierten Informationen zum Diagnosezustand.

q_udiUsedMemory

UDINT

Anzahl der in den Arbeitsspeicher geschriebenen Bytes.

q_udiUsedDiskSpace

UDINT

Anzahl der aus der Datei ausgelesenen Bytes.

Beispiel

{attribute 'pack_mode' := '1'}
TYPE ST_MyType :
STRUCT
sName : STRING[30];sStreet : STRING[20];
lrValue : LREAL;
END_STRUCT
END_TYPE

VAR
fbAsciiReader : FB_AsciiReader;
aMyType : ARRAY[0..99] OF ST_MyType;
END_VAR

fbAsciiReader(i_xExecute := TRUE,
i_sFileName := 'Data',
i_iCount := 100,
i_dwBufferAdr := ADR(aMyType),
i_pbyStructInfo := 'STRING[30], STRING[20], LREAL',
i_xStructNames := TRUE),
i_uiLinesOfHeader := 1);

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Executing

128

Version

OK

WaitForExecute

180

Warten auf Ausführung.

FileHandlingInvalid

FileNotExisting

104

Die Datei ist nicht vorhanden.

FileHandlingInvalid

FileReadingInvalid

106

Fehler beim Auslesen aus Datei.

FileHandlingInvalid

TooManyFilesOpen

105

Es sind zu viele Dateien geöffnet.

InputParameterInvalid

StructInfoInvalid

40

StructInfo ist ungültig.

InputParameterInvalid

InvalidInputValue

324

Der Eingangswert ist außerhalb des gültigen Bereichs.

UnexpectedProgramBehavior

UnexpectedFeedback

1

Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten.

Executing

Enumerationsname:

Executing

Enumerationswert:

128

Beschreibung:

Version

Die Daten werden ausgelesen.

FileNotExisting

Enumerationsname:

FileNotExisting

Enumerationswert:

104

Beschreibung:

Die Datei ist nicht vorhanden.

Problem

Ursache

Lösung

-

Die Datei ist nicht vorhanden.

Kopieren Sie die Datei in das Flash-Laufwerk der Steuerung.

-

Auf den Eingang i_sFilename wurde ein nicht existierender Dateiname angewendet.

Überprüfen Sie den Dateinamen an i_sFilename.

FileReadingInvalid

Enumerationsname:

FileReadingInvalid

Enumerationswert:

106

Beschreibung:

Fehler beim Auslesen aus Datei.

Problem

Ursache

Lösung

-

Die Datei ist beschädigt.

Erstellen Sie die Datei neu.

InvalidInputValue

Enumerationsname:

InvalidInputValue

Enumerationswert:

324

Beschreibung:

Der Eingangswert ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Der Wert von i_uiLinesOfHeader ist ungültig.

Stellen Sie sicher, dass sich der Wert für i_uiLinesOfHeader innerhalb des Bereichs 1 bis 10 befindet.

StructInfoInvalid

Enumerationsname:

StructInfoInvalid

Enumerationswert:

40

Beschreibung:

StructInfo ist ungültig.

Problem

Ursache

Lösung

-

An der Speicheradresse, auf die der Eingang i_pbyStructInfo zeigt, liegen keine gültigen Strukturdaten.

Überprüfen Sie die Daten des Strings, die über den Zeiger übertragen werden.

Prüfen Sie die an den Eingang i_pbyStructInfo übertragene Adresse.

TooManyFilesOpen

Enumerationsname:

TooManyFilesOpen

Enumerationswert:

105

Beschreibung:

Es sind zu viele Dateien geöffnet.

Problem

Ursache

Lösung

-

Es sind zu viele Dateien geöffnet.

Schließen Sie mit SystemInterface.FC_CloseFile nicht mehr benötigte Dateien.

UnexpectedFeedback

Enumerationsname:

UnexpectedFeedback

Enumerationswert:

1

Beschreibung:

Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten.

Problem

Ursache

Lösung

-

Es ist ein Fehler in der internen Abarbeitung aufgetreten.

Es ist ein Fehler in der internen Abarbeitung aufgetreten.

WaitForExecute

Enumerationsname:

WaitForExecute

Enumerationswert:

180

Beschreibung:

Warten auf Ausführung.

Der Funktionsbaustein ist funktionsbereit. Auf eine positive Flanke von i_xExecute hin werden die Daten ausgelesen.