Also das Demo-Programm habe ich jetzt noch nicht getestet.
Jedoch habe ich festgestellt, dass mein Programm nicht grundlegend anders aufgebaut ist. Nur etwas in der Auswertung, was ja selbstverständlich ist.
Anbei ein Auszug aus meinem Programm.
Ich habe eben mal meine SPS neu gestartet und dann versucht den Inhalt der *.csv Datei in mein Array zu kopieren und es hat auch funktioniert. Dann habe ich meine SPS kalt gestartet und es kam die Meldung das die Datei noch offen sei (Error = 4) obwohl die Datei zuvor geschlossen wurde.
If NOT xActivate Then
iStep := 00;
End_If;
Case iStep Of
00 : xDone := FALSE;
File_Offset := UDINT#0;
iLoop := 1;
FSD.AUTO_CLOSE := T#0ms;
Dateiname := 'gruppenname.csv';
Trennzeichen := BYTE#0;
Startsignal := BYTE#1;
If xActivate and (FSD.ERROR = BYTE#0) Then
iStep := 20;
End_If;
20 : iStep := 50;
50 : If Startsignal = BYTE#0 Then
Startsignal := BYTE#1;
If (Abfrage_Ergebnis = BYTE#1) or (Abfrage_Ergebnis = BYTE#2) Then
Index := CONCAT(INT_TO_STRING(iLoop, '%d'),';');
L := LEN(Index);
Find_Out := FIND(Lese_Ergebnis,Index);
If Find_Out = 1 Then
Tempstring := DELETE(Lese_Ergebnis,L,1);
If iLoop <= 64 Then
gruppenname[iLoop] := Tempstring;
iLoop := iLoop + 1;
End_If;
End_If;
Elsif (Abfrage_Ergebnis = BYTE#10) Then
Startsignal := BYTE#0;
FSD.MODE := BYTE#5;
iStep := 110;
End_If;
End_If;
110 : iStep := 111;
111 : iStep := 140;
140: If FSD.MODE = BYTE#0 Then
xDone := TRUE;
iStep := 170;
End_If;
170 : iStep := 00;
End_Case;
CSV_PARSER_FILE_1(SEP := Trennzeichen,
FILENAME := Dateiname,
FSD := FSD,
RUN := Startsignal,
OFFSET := File_Offset,
VALUE := Lese_Ergebnis,
PT := Network_Buffer);
Dateiname := CSV_PARSER_FILE_1.FILENAME;
FSD :=CSV_PARSER_FILE_1.FSD;
Startsignal := CSV_PARSER_FILE_1.RUN;
File_Offset := CSV_PARSER_FILE_1.OFFSET;
Lese_Ergebnis :=CSV_PARSER_FILE_1.VALUE;
Network_Buffer :=CSV_PARSER_FILE_1.PT;
Abfrage_Ergebnis := CSV_PARSER_FILE_1.RESULT;
FILE_SERVER_1(FSD := FSD ,PT := Network_Buffer);
FSD := FILE_SERVER_1.FSD;
Network_Buffer := FILE_SERVER_1.PT;
[gelöscht durch Administrator]