Messwerte in csv- Datei schreiben

bytebold
2007-11-03
2007-11-03
  • bytebold - 2007-11-03

    Hallo,

    ich habe einen 750-841 im Einsatz, der Messwerte sammelt. Diese Messwerte werden in eine Csv- Datei geschrieben.

    Ich habe mich für die Erzeugung und Aktualisierung an dem Beispiel von folgendem Topic orientiert:

    http://forum.3s-software.com/viewtopic.php?t=108&highlight=csv

    Es funktioniert auch alles, die Datei hole ich per Ftp mit einer VB- Applikation ab.

    Leider ist mir folgendes aufgefallen:

    Die Task zur Aufbereitung und Schreiben der Daten hat eine Zykluszeit von ca. 23000 ms!!!

    In dem Programmteil sind eine Menge Concats enthalten, kann es sein, daß diese den Controller fast zum Erliegen bringen ?

    Ich habe außerdem versucht, die Daten und Separationszeichen direkt ins File zuschreiben, dabei sind aber auch ähnlich hohe Zykluszeiten aufgetreten.

    Oder nimmt das Filehandling so viel Zeit in Anspruch ?

    Die Task läuft jede 3 Minuten nur einmal.

    Gruß, bytebold

     
  • gravieren - 2007-11-03

    Hi

    Schreiben dauer normalerweise nur im ms-Bereich.

    Hört sich eventuell nach Time-Out an.

    Setze dir mal ein paar Time-Stamps, sodass du schauen kannst welche "Aktion" den Zylus verlangsamt

     
  • bytebold - 2007-11-03

    Hallo,

    danke für den Tip.

    Ich habe nun herausgefunden, daß die Aufbereitung der Daten ca. 250ms dauert.

    Das Schreiben der Daten in die Datei lag bei ca. 30s.

    Ich habe folgenden Code für das Schreiben benutzt:

       (*Messwerte in File schreiben*)
       hFile:= SysFileOpen(File_String, 'a');
       dwWritten:= SysFileWrite(hFile, ADR(szText), LEN(szText));
       dwWritten:= SysFileWrite(hFile, ADR(wNewLine), SIZEOF(wNewLine));
       SysFileClose(hFile);
    

    Dann habe ich die Timestamps in diesen Teil eingebaut, es ist der Befehl
    SysFileClose(hFile);
    der die ganze Zeit in Anspruch nimmt.

    Der String szText ist ca. 150 Zeichen lang, in die Datei wird jede 3 Minuten reingeschrieben, um 0:00 Uhr wird eine neue Datei angelegt, die täglichen Dateien sind ca. 60kB groß. Jede einzelne Datei wird nach 8 Tagen gelöscht, sodaß immer nur 8 Dateien vorhanden sind.
    Hat jemand eine Idee, warum das "File schließen" so lange dauert ?

    Gruß, bytebold[/code]"

     
  • gravieren - 2007-11-03

    Hi

    Nach SysFileOpen

    Welchen Wert hat hFile.

    Teste doch mal:

    hFile:= SysFileOpen(File_String, 'a');

    SysFileClose(hFile);

    Wie lange dauert das jetzt.

     
  • bytebold - 2007-11-03

    Hallo,

    Zitat:
    Nach SysFileOpen
    Welchen Wert hat hFile.

    hfile hat den Wert 1.

    Zitat:
    Teste doch mal:
    hFile:= SysFileOpen(File_String, 'a');
    SysFileClose(hFile);

    ...das dauert nur 28ms.

    Gruß, bytebold

     
  • gravieren - 2007-11-03

    Hi

    Versuch doch mal:

    Festen String mit 8 Zeichen zu Schreiben.

     
  • gravieren - 2007-11-03

    Hi

    Frage: Wieviele Dateien befinden sich schon auf deinem 750-841er.

    http://www.magnia.de/content/view/32/30/

    Versuche doch mal das Filesystem auf deinem Controller zu Formatieren.

    Klappt es dann ?

     
  • bytebold - 2007-11-03

    So,

    nun habe ich folgendes probiert:

    zeit5:=TIME_TO_DWORD(TIME());
    File_String:= 'test.csv';
    teststring:= 'abcdefgh';
    hFile:= SysFileOpen(File_String, 'a');
    dwWritten:= SysFileWrite(hFile,ADR( teststring), 8 );
    SysFileClose(hFile);
    zeit6:=TIME_TO_DWORD(TIME());
    

    Das ist nun eine neue Datei, in die ich 8 Zeichen hineinschreibe,
    Resultat: dauert ca. 21 s
    Ich schreibe mal die gemessenen Zeiten bei, vielleicht habe ich auch was falsch interpretiert.
    Die Zeiten sollten ms seit Programmstart sein, bis zeit6 aktualisiert wird, dauert auch ewig lange, könnten genau die 21s sein.

    zeit5= 81983081
    zeit6= 82007027

    Gruß, bytebold[/code]

     
  • gravieren - 2007-11-03

    Hi

    Bei dir scheint das schreiben lange zu dauern.

    Frage: Wieviele Dateien befinden sich schon auf deinem 750-841er.

    http://www.magnia.de/content/view/32/30/

    Versuche doch mal das Filesystem auf deinem Controller zu Formatieren.

    Klappt es dann ?

     
  • bytebold - 2007-11-03

    Zitat:
    Frage: Wieviele Dateien befinden sich schon auf deinem 750-841er.
    http://www.magnia.de/content/view/32/30/
    Versuche doch mal das Filesystem auf deinem Controller zu Formatieren.
    Klappt es dann ?

    Im /PLC- Verzeichnis sind ca. 30 Dateien, die wohl hauptsächlich von meinen Versuchen mit der Visualisierung stammen.
    Ansonsten habe ich in meinem Verzeichnis nur die acht 60k großen Messwertedateien.
    Vor dem formatieren scheue ich mich erstmal, dann ist ja wohl alles weg.

    Gruß, bytebold

    [/quote]

     
  • gravieren - 2007-11-03

    Hi

    Zitat:
    Vor dem formatieren scheue ich mich erstmal, dann ist ja wohl alles weg.

    Ja, dein Projekt hast du doch.

    Deine CSV kannst du dir mit dem IE rüberziehen.

    O.K.

    Probiere doch mal dieses Beispiel. (Datei-Handling)

    http://www.magnia.de/component/option,c ... Itemid,29/

    Dauert das schreiben hier genausolange ?

     

Log in to post a comment.