FB_AsciiReader - Allgemeine Informationen
Typ |
Funktionsbaustein |
Verfügbar ab |
V1.7.0.0 |
Übernommen aus |
- |
Implementiert |
- |
Versionen: |
Aktuelle Version |
Auslesen einer Variablentabelle aus einer Datei
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.
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 |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
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. |
{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);
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
128 |
Version |
|
OK |
180 |
Warten auf Ausführung. |
|
FileHandlingInvalid |
104 |
Die Datei ist nicht vorhanden. |
|
FileHandlingInvalid |
106 |
Fehler beim Auslesen aus Datei. |
|
FileHandlingInvalid |
105 |
Es sind zu viele Dateien geöffnet. |
|
InputParameterInvalid |
40 |
StructInfo ist ungültig. |
|
InputParameterInvalid |
324 |
Der Eingangswert ist außerhalb des gültigen Bereichs. |
|
UnexpectedProgramBehavior |
1 |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
Enumerationsname: |
Executing |
Enumerationswert: |
128 |
Beschreibung: |
Version |
Die Daten werden ausgelesen.
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. |
Enumerationsname: |
FileReadingInvalid |
Enumerationswert: |
106 |
Beschreibung: |
Fehler beim Auslesen aus Datei. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die Datei ist beschädigt. |
Erstellen Sie die Datei neu. |
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. |
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. |
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. |
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. |
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.