-> Hier kostenlos registrieren
Hallo,
Ich habe Schwierigkeiten mit denn function FB_fileopen und FB_filewrite.
Kann man in 1 cyclisch die file offenen und auch schreiben?
Der code muss so arbeiten:
Wenn die zeit gleich ist an die wirkliche zeit muss er data aufholen und in ein file scheiben, die zeit kann mann auf die Minute einstellen.
Wenn die Zeit gleich ist holt er die data-> macht er ein file name -> macht er ein file -> schreibt er die Werte in die file -> wart 1 Minute so das er nicht ein Minute lang files scheiben wirt.
Die fileopen wird hoch gemacht in ein Pou die fur diesen pou dreht.
GetLogs
Hier wird data in die gemachte File Geschieben
getlogs2
Am Ende geht er nach Timewait, hier muss er 1 Minute warten.
Mit diesem code wirt er denn ersten cyclus denn Files machen und ein Minute warten.
Denn wird er die folgende cyclus die Daten in de Files schreiben (habe jetzt die zeit vergleich Funktion auf immer „wahr“ stehen.
Aber die code Wirts nicht machen wenn er nach die Minuten schaut.
Hat eine ein idee was ich nicht gut programmiert habe, oder wie ich es machen kann.
Ich habe Schwierigkeiten mit denn function FB_fileopen und FB_filewrite.
Kann man in 1 cyclisch die file offenen und auch schreiben?
Der code muss so arbeiten:
Wenn die zeit gleich ist an die wirkliche zeit muss er data aufholen und in ein file scheiben, die zeit kann mann auf die Minute einstellen.
Wenn die Zeit gleich ist holt er die data-> macht er ein file name -> macht er ein file -> schreibt er die Werte in die file -> wart 1 Minute so das er nicht ein Minute lang files scheiben wirt.
Die fileopen wird hoch gemacht in ein Pou die fur diesen pou dreht.
GetLogs
Code:
R_TRIG1(CLK:=fileopen , Q=> );
FB_FileOpen1(
sNetId:='5.22.229.187.1.1' ,
sPathName:=Alarmtop10log ,
nMode:=FOPEN_MODEWRITE OR FOPEN_MODETEXT,
ePath:=PATH_GENERIC ,
bExecute:= R_TRIG1.Q,
tTimeout:=t#5s ,
bBusy=>i1 ,
bError=> ,
nErrId=> ,
hFile=>hFile1 );
FB_FileOpen2(
sNetId:='5.22.229.187.1.1' ,
sPathName:=Efficiencylog ,
nMode:=FOPEN_MODEWRITE OR FOPEN_MODETEXT,
ePath:=PATH_GENERIC ,
bExecute:= R_TRIG1.Q,
tTimeout:=t#5s ,
bBusy=> ,
bError=> ,
nErrId=> ,
hFile=>hFile2 );
FB_FileOpen3(
sNetId:='5.22.229.187.1.1' ,
sPathName:=Maintancecounterslog ,
nMode:=FOPEN_MODEWRITE OR FOPEN_MODETEXT,
ePath:=PATH_GENERIC ,
bExecute:= R_TRIG1.Q, tTimeout:=t#5s ,
bBusy=> ,
bError=> ,
nErrId=> ,
hFile=>hFile3 );
getlogs2;
Hier wird data in die gemachte File Geschieben
getlogs2
Code:
F_TRIG2(CLK:=i1 , Q=> );
FB_FileWrite1(
sNetId:= '5.22.229.187.1.1',
hFile:=hFile1 ,
pWriteBuff:= ADR (CSVStringtest) ,
cbWriteLen:=SIZEOF (CSVStringtest) ,
bExecute:= F_TRIG2.Q,
tTimeout:=t#5s ,
bBusy=> ,
bError=> ,
nErrId=> ,
cbWrite=> );
FB_FileWrite2(
sNetId:= '5.22.229.187.1.1', (*NetID van je IPC, hier hoef je niks in te vullen*)
hFile:=hFile2 ,
pWriteBuff:= ADR (EfficiencyStringTest) , cbWriteLen:=SIZEOF (EfficiencyStringTest) ,
bExecute:=F_TRIG2.Q ,
tTimeout:=t#5s ,
bBusy=> ,
bError=> ,
nErrId=> ,
cbWrite=> );
FB_FileWrite3(
sNetId:= '5.22.229.187.1.1',
hFile:=hFile3 ,
pWriteBuff:= ADR (MaintanceCounterstring) , cbWriteLen:=SIZEOF (MaintanceCounterstring) ,
bExecute:=F_TRIG2.Q ,
tTimeout:=t#5s ,
bBusy=> ,
bError=> ,
nErrId=> ,
cbWrite=> );
lastlogdate:=logdate;
logbyte:=2;
Tp1.IN:=TRUE;
TimeWait;
Am Ende geht er nach Timewait, hier muss er 1 Minute warten.
Mit diesem code wirt er denn ersten cyclus denn Files machen und ein Minute warten.
Denn wird er die folgende cyclus die Daten in de Files schreiben (habe jetzt die zeit vergleich Funktion auf immer „wahr“ stehen.
Aber die code Wirts nicht machen wenn er nach die Minuten schaut.
Hat eine ein idee was ich nicht gut programmiert habe, oder wie ich es machen kann.