-> Hier kostenlos registrieren
Hallo,
ich habe ein Problem dabei, einen Sting, in den ich fortlaufend die Werte meiner analogen Eingangsklemmen schreiben lasse (Wert1;Wert2;Wert3;...;$r) in eine CSV Datei zu speichern.
Ich möchte, dass alle 5 Sekunden der String sozusagen 'eingefrohren' per filePuts in die CSV geschrieben wird, aber leider werden bei mir immer noch viel zu viele Werte in die Datei geschrieben.
Habe vorher im Forum schon ein paar nützliche Sachen gefunden, aber hier komme ich leider nicht weiter.
Könnte mir da jemand auf die Sprünge helfen?
Anbei mal der Teil des Codes:
Gruß,
Lars
ich habe ein Problem dabei, einen Sting, in den ich fortlaufend die Werte meiner analogen Eingangsklemmen schreiben lasse (Wert1;Wert2;Wert3;...;$r) in eine CSV Datei zu speichern.
Ich möchte, dass alle 5 Sekunden der String sozusagen 'eingefrohren' per filePuts in die CSV geschrieben wird, aber leider werden bei mir immer noch viel zu viele Werte in die Datei geschrieben.
Habe vorher im Forum schon ein paar nützliche Sachen gefunden, aber hier komme ich leider nicht weiter.
Könnte mir da jemand auf die Sprünge helfen?
Anbei mal der Teil des Codes:
Code:
3: (* Konvertiere PLC Datenzeile in CSV Format und schreibe eine Zeile + Timer am Ende *)
startNewRow := TRUE;
fbFileOpen( bExecute := FALSE, bError => bError, nErrID => nErrID, hFile => hFile );
IF NOT fbFileOpen.bBusy THEN
IF NOT fbFileOpen.bError THEN
IF CSVstop THEN step :=10; ELSE (*CSVstop wird durch einen Cursor in der VISU aktiviert, zum Anhalten der Aufzeichnung *)
sCSVLine := '';
sCSVField :=STRING_TO_CSVFIELD( STRING_FUER_CSV , FALSE );
sCSVLine := sCSVField;
IF RIGHT( sCSVLine, 10 ) = '$r$n' THEN
sCSVLine := REPLACE( sCSVLine, '$L', 10, LEN( sCSVLine ) - 1 );
END_IF
fbFilePuts( bExecute := FALSE );
fbFilePuts( sNetId := sNetId, hFile := hFile, sLine := sCSVLine, bExecute := TRUE );
fbFilePuts( bExecute := FALSE );
(* startNewRowTON(IN := startNewRow, PT :=Aufzeichnungsintervall );
startNewRow := NOT startNewRowTON.Q; *)
IF startNewRowTON.Q THEN
step := 4;
END_IF
END_IF
ELSE(* Fehler: Datei nicht gefunden? *)
step := 100;
END_IF
END_IF
4: (* Kleine Verzögerung, damit Werte nicht kontinuierlich geschrieben werden *)
IF CSVstop THEN step :=10; ELSE
startNewRow := FALSE;
IF NOT Fortsetzen THEN (*Fortsetzen ist der Ausgang eines TONOF mit Ausschaltverzögerung 10ms, weil sich sonst der Ausgang von startNewRowTON nicht resettet hat)
step := 3;
END_IF
END_IF
Gruß,
Lars