LabVIEWForum.de - kontinuierlich Messung, Abbruch bestimmer Zeit.

LabVIEWForum.de

Normale Version: kontinuierlich Messung, Abbruch bestimmer Zeit.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo allerseits!

Ich habe ein VI erstellt, welches in einem Langzeittest Spannungen messen soll. Das Problem ist nun, dass das VI nach 4d 23:18:08 abbricht. Und das jedesmal. Und ohne Fehlermelung. Große Datenmengen werden dabei eigentlich nicht angesammelt. Zumindest habe ich das nicht explizit vorgesehen.

Das VI startet eine While-Schleife, die immer wieder eine Messung vornimmt und diese Werte dann mit anderen vergleicht. Nur in bestimmten Fällen werden die Daten in eine Datei geschrieben. Die gemessenen Daten werden also nach jedem Durchlauf wieder verworfen und nicht immer wieder gespeichert, so dass eigentlich auch keine Datenstrukturen überlaufen können.....

An einer Stelle verwende ich ein Shiftregister, welches in bestimmten Fällen einen neuen Wert in den nächsten Schleifendurchlauf mitnehmen soll. Könnte sowas Probleme bereiten?

Habe ich vielleicht bei diesem VI einen prinzipiellen Denkfehler? Kann man Lanzeitmessungen nicht per while-Schleife realisieren?

Messkarte: IOTech DaqBoard 3031 USB

Vielen Dank schon mal und viele Grüße
Hört sich (für mich) alles richtig an, was aber nichts heißen soll. Kannst Du mal Dein VI hochladen?

Gruß Markus
Falls Deine Erfassungsrate 5000 Samples/s beträgt, würden in der von Dir genannten Zeit genau 2^31 Samples erfasst. Der Schleifenindex i mit dem Format I32 würde dann überlaufen. Ich weiß zwar bisher nicht, was dann passiert. Vielleicht bricht die Schleife dann ganz einfach sang- und klanglos ab, so wie es bei Dir hier geschieht....

Nachtrag: Inzwischen habe ich mal probiert, was passiert, wenn der Schleifenindex den Wert 2^31 - 1 erreicht. Ergebnis: Die Schleife läuft ohne Fehlermeldung weiter, aber der Schleifenindex wird nicht mehr inkrementiert, sondern behält seinen Wert.

Trotzdem könnte es sein, daß ich mit meiner Vermutung nicht ganz falsch liege. Vielleicht hast Du den Schleifenindex angeschlossen und machst irgendwas damit, und wenn sich der Index nicht mehr erhöht, dann funktioniert etwas nicht mehr.
Vielen Dank erstmal für eure Antworten.
Die Idee mit dem Schleifenzähler ist mir auch schon mal gekommen. Was genau meinst du mit der Erfassungsrate? Die Samplerate der Messkarte? Hat diese denn direkten Einfluss auf die Dauer eines Schleifendurchlaufs?
Zwischenzeitlich habe ich auch mal das VI verändert und den Berechnungsaufwand innerhalb der Schleifen erhöht, durch weitere VIs usw. Hätte sich dadurch die Dauer bis zum Abbruch nicht verändern müssen, da nun ein Schleifendurchlauf länger dauert?

Okay. und nun das wichtigste. Angenommen es liegt wirklich am Schleifenzähler: Was kann ich denn machen, um dieses Problem zu beseitigen? Einen Zähler benötige ich nicht zwingend....

Das VI kann ich gerade nicht hochladen, da ich im Moment keinen Zugriff darauf habe.

Viele Dank für eure Hilfe!!!
' schrieb:Die Idee mit dem Schleifenzähler ist mir auch schon mal gekommen. Was genau meinst du mit der Erfassungsrate? Die Samplerate der Messkarte? Hat diese denn direkten Einfluss auf die Dauer eines Schleifendurchlaufs?
Ja natürlich, denn das Lesen der DAQ-Werte erfolgt ja in der Schleife, und die Schleifendurchlauf-Dauer muß sich ja mit der Samplerate synchronisieren. Unprofessionell oder falsch ist es, in so einer Schleife Wartezeiten vorzusehen, die Synchronisation besorgt das DAQ-Lesen selbst.
Ich gehe mal von kontinuierlicher Datenerfassung aus. Die Schleife synchronisiert sich so:
1) DAQmx Lesen Anzahl der zu lesenden Werte: -1
Es werden alle Werte aus dem Buffer gelesen. Wenn allerdings noch kein Wert im Buffer ist, dann wartet das Vi Lesen, bis ein Wert im Buffer ist. Die Schleifen- Durchlaufrate kann als nicht schneller sein, als die Samplerate.
2) DAQmx Lesen, Anzahl der zu lesenden Werte: 1
Es ist das gleich wie 1.), allerdings ist hier ein Buffer-Überlauf nicht ausgeschlossen. Wenn beispielweise bei 1kHz Abtastrate die Verarbeitungszeit in der Schleife größer asl 1ms ist (oder wenn Anfänger darin eine sowieso überflüssige Wartezeit von >= 1ms einprogrammiert hat), dann sammelt sich im Buffer natürlich mehr an, als abgeholt wird, und je nach Buffergröße kommt es nach Sekunden oder Stunden zum Überlauf. (Allerdings mit Fehlermeldungen und nicht wie bei Dir ohne)
3.) DAQmx Lesen, Anzahl der zu lesenden Werte: 10
Das DAQnx Lesen wartet, bis 10 Werte im Buffer sind. Die Schleifen-Durchlaufzeit ist hier 10mal größer als die DAQ-Abtastzeit. Uhren zur Synchronisation braucht man aber auch hier nicht, da, wie gesagt, das Lese-VI wartet.

Zitat:Okay. und nun das wichtigste. Angenommen es liegt wirklich am Schleifenzähler: Was kann ich denn machen, um dieses Problem zu beseitigen? Einen Zähler benötige ich nicht zwingend....

Du hättest wenigsten verraten könne, ob Deine Abtastrate 5kHz ist, wie ich vermutet habe. Jede While-Schliefe hat einen Zähler, den kannst Du nicht herauslöschen. Wenn Du ihn nicht brauchst, dann schließe ihn doch einfach nicht an. Wie gesagt, bei LV8.2 bleibt das i bei 10^31 stehen, aber es passiert sonst nichts, die Schleife läuft weiter. Und wie gesagt, man kann auch die anfallenden Werte z.B 1000-Stückweise in der Schleife abholen, dann ist die Zeit bis zum Überlauf des Schleifenzälers 1000 fach größer.
Sorry.... Die Abtastrate hatte ich ja ganz vergessen.

Diese liegt bei 1kHz wenn ich keinen Fehler gemacht habe.

Vielen Dank für deine Hilfe und deine ausführlichen Erläuterungen. Ich werde das Vi erstmal dahingehend überarbeiten und es dann nochmal testen, insbesondere werde ich dabei einen Überlauf des Schleifenzählers checken.

Wenn ich dazu genaueres habe, werde ich es posten.
Referenz-URLs