-> Hier kostenlos registrieren
Moin zusammen,
ich habe ein Baustein welcher Seriennummern in ein Array schreibt mit Datum und Zeit, in diesem Baustein wird auch das Schreiben der Seriennummern in eine CSV Datei angestoßen und der Vergleich ob diese Seriennummer schonmal benutzt wurde durchgeführt. Nun habe ich bei der Inbetriebnahme folgendes festgestellt.
1. Die erste Seriennummer nach Anlagenneustart wird zwar geschrieben aber Datum und Zeitstempel sind leer Seriennummer wiederum steht drin.
2. im CSV Feld stehen alle werte hintereinander sollen aber Untereinander pro Eintrag stehen
3. Die FOR schleife die den Vergleich durchführt wird nicht korrekt abgearbeitet
hier der Entsprechende Bausteincode:
Leider bin ich nicht so warm mit FOR Schleifen und Stringverabeitung weil ich es auch kaum nutze deswegen müsste ich hier mal bitte um Hinweise oder Lösungsansätze fragen um schnell zu einer funktionsfähigen Lösung zu kommen .
die Signal bTrigger & bReset Compare sind Eingänge welche über ein R_Trig reinkommen. Um Hinweise wo mein Fehler liegt währe ich dankbar.
ich habe ein Baustein welcher Seriennummern in ein Array schreibt mit Datum und Zeit, in diesem Baustein wird auch das Schreiben der Seriennummern in eine CSV Datei angestoßen und der Vergleich ob diese Seriennummer schonmal benutzt wurde durchgeführt. Nun habe ich bei der Inbetriebnahme folgendes festgestellt.
1. Die erste Seriennummer nach Anlagenneustart wird zwar geschrieben aber Datum und Zeitstempel sind leer Seriennummer wiederum steht drin.
2. im CSV Feld stehen alle werte hintereinander sollen aber Untereinander pro Eintrag stehen
3. Die FOR schleife die den Vergleich durchführt wird nicht korrekt abgearbeitet
hier der Entsprechende Bausteincode:
IF bTrigger THEN
arBuffer[iBufferFill].sID := STRING_TO_CSVFIELD(in:=id1 , bQM:=FALSE );
arBuffer[iBufferFill].sDatum := STRING_TO_CSVFIELD(in:=fbSystemTime.sDatum , bQM:=FALSE );
arBuffer[iBufferFill].sUhrzeit := STRING_TO_CSVFIELD(in:=fbSystemTime.sZeit , bQM:=FALSE );
END_IF;
fbSystemTime(
bStart:= bTrigger,
sDatum=> ,
sZeit=> ,
bBusy=> ,
sDatum_File=> );
bWriteLog := bTrigger;
SR(SET1:= bTrigger, RESET:= bWriteFinish, );
fbFileopen(
sNetId := '5.39.61.62.1.1',
sPathName := sPhath,
nMode := FOPEN_MODEAPPEND,
ePath := ,
bExecute := bWriteLog,
tTimeout := t#3s,
bBusy => ,
bError => ,
nErrId => ,
hFile => hFile);
ton[0](IN:= SR.Q1, PT:= t#1s , Q=>bTriggerLog,);
fbFileWrite(
sNetId:= '5.39.61.62.1.1',
hFile:= hFile,
pWriteBuff:= ADR(arBuffer[iBufferFill]),
cbWriteLen:= SIZEOF(arBuffer[iBufferFill]),
bExecute:= bTriggerLog,
tTimeout:= t#3s,
bBusy=> ,
bError=> ,
nErrId=> ,
cbWrite=> );
ton[0](IN:= SR.Q1, PT:= t#3s , Q=>bWriteFinish,);
fbFileClose(
sNetId:= '5.39.61.62.1.1',
hFile:= hFile,
bExecute:= bWriteFinish,
tTimeout:= t#3s,
bBusy=> ,
bError=> ,
nErrId=> );
SR1(SET1:= bTrigger , RESET:= bIDOK or bSameID ,);
IF SR1.Q1 THEN
FOR i := 1 TO (iBufferFill-1) DO
IF (arBuffer.sID = id1) THEN
bSameID := TRUE;
bIDOK := FALSE;
EXIT;
i := (i+1);
bIDOK := TRUE;
END_IF;
END_FOR;
END_IF;
IF bResetCompare THEN
bSameID := FALSE;
i := 0;
END_IF;
Leider bin ich nicht so warm mit FOR Schleifen und Stringverabeitung weil ich es auch kaum nutze deswegen müsste ich hier mal bitte um Hinweise oder Lösungsansätze fragen um schnell zu einer funktionsfähigen Lösung zu kommen .
die Signal bTrigger & bReset Compare sind Eingänge welche über ein R_Trig reinkommen. Um Hinweise wo mein Fehler liegt währe ich dankbar.
Zuletzt bearbeitet: