FB_AsciiWriter

 

FB_AsciiWriter - Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.0.3.0

Übernommen aus

-

Implementiert

-

Versionen:

Aktuelle Version

Aufgabe

Schreiben beliebiger Datenstrukturen in eine Textdatei.

Beschreibung

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

Der Funktionsbaustein schreibt die in i_pbyStructInfo angegebene Anzahl von Variablen des in i_iCount angegebenen Typs aus dem Speicher an der Adresse i_dwBufferAdr in eine Datei.

Der Schreibvorgang startet bei einer positiven Flanke an i_xExecute und hält bei Erkennung eines Fehlers oder nach erfolgreichem Schreiben aller Daten an. Während des Schreibvorgangs 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 erzeugte Datei ist mit einem beliebigen Editor lesbar.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_xExecute

BOOL

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

i_sFileName

STRING[80]

Name der Textdatei, in die die Variablen geschrieben werden sollen.

i_iCount

INT

Maximale Anzahl der Datensätze, die geschrieben werden sollen.

i_dwBufferAdr

DWORD

Adresse des Arrays, aus dem die Daten ausgelesen werden. 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_pbyStructNames

POINTER TO BYTE

Beschreibung der einzelnen Elemente des ARRAYs. Die Variablennamen der einzelnen Variablen sind durch Komma voneinander getrennt. Die Namen der einzelnen StructVariables werden durch Tabulatoren getrennt in die erste Zeile geschrieben.

Die Variable muss leer sein, wenn die erste Zeile nicht mit dem Variablennamen geschrieben werden soll.

Jede weitere Zeile steht für einen Struct, dessen Variablenwerte im entsprechenden Format dargestellt und durch Tabulatoren voneinander getrennt sind. Die Zeilenenden sind jeweils durch CRLF markiert.

i_etMode

ET_WriteMode

Wird der Modus ET_WriteMode.Create ausgewählt, dann wird die Datei neu erzeugt. Ist bereits eine Datei mit gleichem Namen vorhanden, wird sie überschrieben.

Wird der Modus ET_WriteMode.Append ausgewählt, dann werden die neuen Daten an die bereits bestehende Datei angehängt.

Ausgang

Datentyp

Beschreibung

q_xBusy

BOOL

TRUE: Der Schreibvorgang ist aktiv.

q_xDone

BOOL

TRUE: Der Schreibvorgang 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 aus dem Arbeitsspeicher ausgelesenen Bytes.

q_udiUsedDiskSpace

UDINT

Anzahl der in die Datei geschriebenen Bytes.

Beispiel

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

VAR
fbAsciiWriter : FB_AsciiWriter;
aMyType : ARRAY[0..99] OF ST_MyType;
sStructTypes : STRING := 'STRING[30], STRING[20], LREAL';
sStructNames : STRING := 'Name, Street, Value';
END_VAR

fbAsciiWriter(i_xExecute := TRUE,
i_sFileName := 'Data',
i_iCount := 100,
i_dwBufferAdr := ADR(aMyType),
i_pbyStructInfo := ADR(sStructTypes),
i_pbyStructNames := ADR(sStructNames),
i_etMode := ET_WriteMode.Create);

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Executing

128

Version

OK

WaitForExecute

180

Warten auf Ausführung.

FileHandlingInvalid

CanNotOpenFile

112

Die Datei kann nicht geöffnet werden.

FileHandlingInvalid

TooManyFilesOpen

105

Es sind zu viele Dateien geöffnet.

InputParameterInvalid

StructInfoInvalid

40

StructInfo ist ungültig.

InputParameterInvalid

UnknownMode

111

Mode ist nicht bestimmbar.

UnexpectedProgramBehavior

UnexpectedFeedback

1

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

CanNotOpenFile

Enumerationsname:

CanNotOpenFile

Enumerationswert:

112

Beschreibung:

Die Datei kann nicht geöffnet werden.

Problem

Ursache

Lösung

-

Die Datei i_sFileName konnte nicht geöffnet werden.

Prüfen Sie, ob die Datei namens i_sFileName auf dem Datenträger gespeichert ist.

Überprüfen Sie den Datenträger auf Defekte.

Executing

Enumerationsname:

Executing

Enumerationswert:

128

Beschreibung:

Version

Die Daten werden geschrieben.

StructInfoInvalid

Enumerationsname:

StructInfoInvalid

Enumerationswert:

40

Beschreibung:

StructInfo ist ungültig.

Problem

Ursache

Lösung

-

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

Daten der Zeichenfolge Mauszeiger.

 Adresse Eingang i_pbyStructInfo.

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.

UnknownMode

Enumerationsname:

UnknownMode

Enumerationswert:

111

Beschreibung:

Mode ist nicht bestimmbar.

Problem

Ursache

Lösung

-

Am Eingang i_etMode wurde ein ungültiger Wert angelegt.

Der Eingang i_etMode muss mit einem Element der Enumeration ET_WriteMode belegt werden.

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