Hauptmenü

Daten Logger CSV

Begonnen von Schwaelmer91, 10. Juli 2014, 13:35:31

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Schwaelmer91

Hallo,

ich vewende für meine Wago SPS 750 8204 auch die DLOG_Real und die DLOG_Store to csv Bausteine. Habe es auch soweit hinbekommen das die Werte in eine CSV datei geschrieben werden und diese dann auf dem internen Speicher gespeichert werden.

Allerdings würde ich gerne wenn ich den Befehl "safe" geben eine gewisse Zeit lang (1 min) soviele Messwerte speichern wies geht und diese dann in einer Datein speichern. Bisher habe ich iwie immer nur ein Wertepaar in meiner CSV datein.

Könnt ihr mir dabei iwie helfen ich komme leider auf keinen grünen Zweig.

Vielen dank schonmal und vielen dank das ihr euere Bibs online zurverfügung stellt.

MFG Schwaelmer91

peewit

du kannst am parameter "trig_m" mit jeder positiven flanke eine datenauszeichnung auslösen

wieviele Trigger pro Sekunde möglich sind hängt von der performance deiner sps und der anzahl der aufzuzeichnenden parameter ab.


Schwaelmer91

okay ich habe jetzt den trig_m über clkprg geflankt mit einer Zeit von t#1ms.
Den filename habe ich in 'test_#R_#T.csv' umbeannt.

Ich möchte 3 Werte speichern: Timestamp :DT; Drehzahl:REAL; Drehmoment:REAL;

Leider bekomme ich nach einigen Werten in der Tabelle eine Verschiebung. Gibt es dafür eine Lösung?
Und gibt es eine Lösung den Timestamp auch noch mit Millisekunden anzugeben?

peewit

zunächstmal ist eine zyklische datenauszeichnung mit 1ms ziemlich unrealistisch ausser du hast das schnellste rennpferd gekauft das am markt ist.

nach dem bei diesen paket sehr vielen azykisch abläuft geht das ziemlich sicher nicht
probier es zuerst mal mit eine höheren zeit

du kannst mittels dlog_string völlig beliebige zeichen ablegen, somit auch einen zeitstempel beliebiger art
du mausst dir nur aus deinen aktuellen zeitstempel mit millisekunden einen string basteln der dir passt.

die verschiebung kommt ziemlich sicher daher zustande das du viel zu schnell du daten loggen willst
die daten werden in einen puffer geschrieben und als groessere pakete dann in weiterer folge in die datei
wenn du aber mehr daten in den puffer jagst als gleichzeitig in die datei geschrieben werden können dann läuft dieser voll
und sobald dieser voll ist werden alle nicht hineinpassenden werte verworfen.

also bremse dich ein......


Schwaelmer91

Hallo,
danke schonmal für deine Untersützung. Ich habe mich jetzt mit einem Trick eingebremst.
Und zwar mach ich es jetzt so, dass ich eine Array [1 4000] mit der Zykluszeit voll schreibe und erst wenn das Array voll ist und ich den Button Speichern betätige wird in einem takt von 100 ms  ein Wert nach dem anderen eingelesen und trig_m wird mit dem gleichen Takt angesteuert. Wenn der Takt auf 4000 hochgezählt wurde ist die Speicherung theoretisch beendet. Allerdings kommt es da zu einem Problem. Und zwar wenn ich mir die Dateien anschauen
möchte werden nur 3000 Werte gespeichert. Warum werden nicht alle gespeichert?
Manchmal kommt es auch vor das bei einem erneuten Speichervorgang die Werte von der letzten Messung am Anfang von den neuen Dateien auftauchen. Wie kann man diese Problem umgehen und ggf. so anpassen, dass immer alle Werte geschrieben werden und bei einer neue Speicherung keine alt Werte mehr vorhanden sind.  MFG

peewit


probiere mal diese version
http://www.oscat.de/community/index.php/topic,1872.msg9862.html#msg9862

sollte es immer noch probleme geben, dann würde ich vorab mal behaupten das es an deiner art der lösung liegt

Schwaelmer91

ich dachte zunächst auch, dass es an meiner alten version liegt aber auch mit der 1.3 passiert das gleiche.

Hier hab ich mal meinen FB angehängt.

[gelöscht durch Administrator]

peewit

hi

alle daten logger bausteine haben ein azyklische Eigenleben
das heißt du musst diese in jeden Zyklus durchlaufen
und nur der daten aufzeichnungstigger m_trig und t_trig dient dir zur steuerung der aufzeichnung

es werden sehr viele interne aufgaben und schritte vor und nach einem tirgger verarbeitet und wenn du diese
mittels bedingten schrittaufruf behinderst wird es eher zufällig laufen....