LabVIEWForum.de
Daten in Logfile speichern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Daten in Logfile speichern (/Thread-Daten-in-Logfile-speichern)



Daten in Logfile speichern - tt-web - 16.11.2009 09:19

Hallo,
also ich entwickel gerade eine Anwendung, der ein oder andere kennt sie vielleicht teilweise. Ich erfasse kontinuierlich Messdaten von einem OPC Server. Die Verbindung hierfür wird außerhalb einer while-schleife geöffnet, dann werden die Daten kontinuierlich innerhalb der Schleife erfasst und am Ende mache ich wieder alles zu. Jetzt möchte ich aber ein Logfile schreiben. Dieses soll alle 1-2 Sekunden einen Messwert speichern, damit ich am Ende eventuelle Störungen besser analysieren kann. Das Logfile soll mit einem Kopf angelegt werden und danach durch anhängen immer weiter ergänzt werden. Da ich soetwas noch nie programmiert habe weiß ich nicht so recht wie ich anfangen soll. Mein Grundkonzept wäre eine Forschleife, jedoch weiß ich nicht wieviele Schleifendurchläufe ich brauchen werde. Im Zweifelsfall, soviele, bis der "Protokoll Start"-Schalter wieder umgelegt wird. Zudem müsste ich diese Forschleife ja auch noch irgendwie zeitgesteuert aufrufen (vielleicht eine Eventstruktur mit einem Timer?). Weil Verzögerungen innerhalb der Schleife würden ja wieder mein kontinuierliches Programm stören...

Liebe Grüße Thomas


Daten in Logfile speichern - SeBa - 16.11.2009 09:57

Hab dir auf die Schnelle mal was zusammengeklickt.

Setzt die Wartezeit mal hoch, bis der Zähler der Queue hochgeht, dann reduzierst du die Wartezeit schrittweise. Damit kannst du sehen, wie schnell deine Log-Schleife laufen muss, damit die Queue nicht zu voll wird oder überläuft (falls du eine Größe festlegst).

[attachment=22515]

Lv86_img[attachment=22516]

Schau dir am Besten auch mal die Hilfe dazu an... an der Ausführung kann man bestimmt noch feilenWink


Gruß SeBa

EDIT:
:DTimestamp im Log-True Case nicht vergessen...


Daten in Logfile speichern - tt-web - 16.11.2009 11:41

Hallo SeBa :-)
Danke für die schnelle Antwort. Das sieht eigentlich schon ziemlich genau nach dem aus was ich vorhabe. Super, dass du mein altes Beispiel ausgekramt hast, so fällt das Verständis leichter und wir reden über die gleichen Dinge :-D
Schade, dass man Danke nur einmal drücken kann.

So long!
Liebe Grüße Thomas


Daten in Logfile speichern - SeBa - 16.11.2009 12:02

' schrieb:... Schade, dass man Danke nur einmal drücken kann.

Hehe
Du darft mir gerne auch woanders danken...
[attachment=22522]

Gruß SeBa


Daten in Logfile speichern - tt-web - 17.11.2009 09:38

Hallo,
habe das alles jetzt mehrfach durchprobiert, aber ich habe immer noch ein Problem....
Wie kann ich denn erreichen, dass in die Queue jeweils nur ein Wert pro Sekunde angefügt wird? Im Moment läuft es so, dass ich die Schlange jede Sekunde abfrage und einen Wert entnehme, dieser sollte aber der aktuelle sein. Ich müsste also aus der Queue Werte entnehmen und immer nur den letzten behalten (was das Warteschlangenprinzip irgendwie sinnlos macht), bzw. müsste dafür sorgen, dass sie immer nur einen Wert pro Sekunde bekommt, den ich dann (wann auch immer) abholen kann (zusammen mit allen anderen). Wenn ich mein Hauptprogramm mit einem Timer künstlich auf 1 Sekunde stelle geht mir die quasiechtzeit verloren.

Gruß Thomas


Daten in Logfile speichern - SeBa - 17.11.2009 11:05

[attachment=22551]

Gruß SeBa


Daten in Logfile speichern - tt-web - 17.11.2009 12:21

Einfach, schnell, präzise! Vielen Dank, ich glaube demnächst schaffe ich es mit eurer Hilfe auch LV zum Kaffekochen zu bewegen :-D

Liebe Grüße thomas


Daten in Logfile speichern - tt-web - 17.11.2009 13:04

So... habe das jetzt mal eingebaut. Interessanterweise funktioniert das bei mir so nicht. Ich nehme zweimal die Zeit: Außerhalb und innerhalb der Schleife. Die Zeit wird einmal als initwert an das Schieberegister gegeben, danach wird immer der Wert vom Ausgang des Registers/letzter Durchlauf übernommen. Wenn ich das Logintervall hochsetze zum Beispiel 10, wird erst dann in die Warteschlange geschrieben, wenn der Wert der Zeit größer oder gleich dem des Registereingangs ist. Mein Problem ist dann die Verdrahtung. Ich kann den Ausgang des Vergleichsoperators nicht gleichzeitig mit dem Logschalter und den beiden Eingängen der Caseschleifen verbinden, wie du es gemacht hast. Was läuft außerdem im FALSE Fall ab? Ich verstehe nur Bahn
Erklärst du es mir?
Gruß Thomas