PROGRAM MAIN
VAR
fbFileOpen :FB_FileOpen;
fbFileClose :FB_FileClose;
fbFileWrite :FB_FileWrite;
bBusy :BOOL;
bError1 :BOOL:=FALSE;
bError2 :BOOL:=FALSE;
bError3 :BOOL:=FALSE;
nErrId :UDINT;
Step :DWORD:=0;
BuffRead :ARRAY[1..6] OF DINT;
hFileDatei :UINT := 0;(* file handle*)
A1: DINT:=1;
A2: DINT:=2;
A3: DINT:=3;
LogString: STRING;
fbRTrig: R_TRIG;
blogOn: BOOL:=TRUE;
halter: BOOL;
END_VAR
fbRTrig(CLK:=blogOn);
IF fbRTrig.Q OR halter THEN
CASE Step OF
0: (*Werte laden*)
Buffread[1]:=A1;
Buffread[2]:=A2;
Buffread[3]:=A3;
LogString := DINT_TO_STRING(BuffRead[1]);
LogString := CONCAT(LogString, '$n');
LogString := CONCAT(LogString, DINT_TO_STRING(BuffRead[2]));
LogString := CONCAT(LogString, '$n');
LogString := CONCAT(LogString, DINT_TO_STRING(BuffRead[3]));
LogString := CONCAT(LogString, '$n');
LogString := CONCAT(LogString, '$n');
fbRTrig();(*nicht notwendig, nur zur Kontrolle des Wertes*)
halter:=TRUE;
Step:=1;
1: (* open file *)
fbFileOpen( bExecute := FALSE );
fbFileOpen( sNetId := '',
sPathName := 'C:\Dokumente und Einstellungen\Administrator.BECKHOFFKR16\Desktop\test.txt',
nMode := FOPEN_MODEAPPEND OR FOPEN_MODETEXT,
ePath := PATH_GENERIC,
tTimeout :=t#3s,
bExecute := TRUE );
Step := 2;
2:
fbFileOpen( );
IF ( NOT fbFileOpen.bBusy ) THEN
IF ( fbFileOpen.bError ) THEN
nErrId := fbFileOpen.nErrId;
bError1 := TRUE;
Step := 50;
ELSE
hFileDatei := fbFileOpen.hFile;
Step := 3;
END_IF
END_IF
3: (*write data to file*)
fbFileWrite( bExecute := FALSE );
fbFileWrite( sNetId:='',
hFile:=hFileDatei,
pWriteBuff:= ADR(LogString),
cbWriteLen:= LEN(LogString),
bExecute:=TRUE,
tTimeout:=t#3s );
Step := 4;
4:
fbFileWrite( );
IF ( NOT fbFileWrite.bBusy ) THEN
IF ( fbFileWrite.bError ) THEN
nErrId := fbFileWrite.nErrId;
bError2 := TRUE;
Step:=50;
END_IF
END_IF
Step:=5;
5: (* close the file *)
fbFileClose( bExecute := FALSE );
fbFileClose( sNetId:= '',
hFile:=hFileDatei,
bExecute:=TRUE,
tTimeout:=t#3s );
Step := 6;
6:
fbFileClose( );
IF ( NOT fbFileClose.bBusy ) THEN
IF ( fbFileClose.bError ) THEN
nErrId := fbFileClose.nErrId;
bError3 := TRUE;
Step:=50;
ELSE
Step:=50;
END_IF
END_IF
50:
(*Fehler beim öffnen oder schreiben aufgetreten, von vorne anfangen*)
IF (bError1=TRUE OR bError2=TRUE) THEN
bError1:=FALSE;
bError2:=FALSE;
Step := 0;
(*Fehler beim schließen der Datei aufgetreten, von vorne anfangen*)
ELSIF (bError3=TRUE) THEN
bError3:=TRUE;
Step:=0;
(*Programm ohne fehler durchgelaufen*)
ELSE
halter:=FALSE;
Step:=0;
END_IF
END_CASE
END_IF