INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Zeitstempel für Messung bestimmen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

08.08.2012, 10:28
Beitrag #1

flattervieh Offline
LVF-Grünschnabel
*


Beiträge: 42
Registriert seit: Sep 2009

2011 Prof. SP1
2009
EN


Deutschland
Zeitstempel für Messung bestimmen
Hallo zusammen, ich hab mal wieder ein kleines Problem.

Ich möchte ein paar Werte messen und dabei zusätzlich die vergangene Zeit seit Programmstart mit aufzeichnen.
Mein erster Ansatz war, ich bestimme zum Start des Programms den aktuellen Zeitstempel des Systems.
Bei jeder Messung wird dann parallel zur Messung ebenfalls ein Zeitstempel bestimmt und aus diesem und dem ersten die Differenz gebildet.

An sich funktioniert das auch, aber irgendwann nach 1000-1070 Messungen ist hier öfter ein Problem aufgetreten.

Das ganze kann ich interessanterweise sogar reproduzieren. Dazu hab ich mal ein vereinfachtes VI angehängt.

Lasse ich das VI mit der "disable structure" laufen, dann bleibt die Zeitdifferenz nach 1000-2000 Sekunden stehen.
Nehme ich aber das delay von 1 ms mit hinzu, dann funktioniert es scheinbar richtig. Zumindest ist mir nach langer Laufzeit kein Problem aufgefallen.

Ich hab auch überlegt das ganze dann mit dem "Tick count" Baustein zu machen. Der liefert mir ja irgendwie einen "millisecond timer value". Jedoch weiß ich nicht genau was dieser Wert angeben soll und die Hilfe ist da auch sehr vorsichtig.

Da das VI später aber auch mehrere Monate am Stück laufen soll wäre mir das mit dem Timestamp lieber.

Hat jemand schonmal so ein ähnliches Phänomen gehabt? Und weiß vielleicht sogar woher das kommt?


Angehängte Datei(en)
11.0 .vi  Timestamp test.vi (Größe: 15 KB / Downloads: 300)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.08.2012, 10:40 (Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2012 10:40 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zeitstempel für Messung bestimmen
Hallo flattervieh,

Zitat:Lasse ich das VI mit der "disable structure" laufen, dann bleibt die Zeitdifferenz nach 1000-2000 Sekunden stehen.
Nehme ich aber das delay von 1 ms mit hinzu, dann funktioniert es scheinbar richtig.
Dein VI hat weder eine disable-Struktur noch einen Delay...
Dafür hat es ein ständig wachsendes Array, welches ungebremst in einer Schleife aufgebaut wird - was ruckzuck in einem OutOfMemory endet... (Ok, dein VI wird durch das ständige Anzeigen von Werten auf dem FP gebremst Smile )

Zitat:"millisecond timer value". Jedoch weiß ich nicht genau was dieser Wert angeben soll
Du bekommst den Wert "Millisekunden seit Rechnerstart". Damit kann man relative Zeiten berechnen, aber keine absoluten Zeitangaben...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.08.2012, 10:52
Beitrag #3

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Zeitstempel für Messung bestimmen
(08.08.2012 10:28 )flattervieh schrieb:  Hallo zusammen, ich hab mal wieder ein kleines Problem.

Ich möchte ein paar Werte messen und dabei zusätzlich die vergangene Zeit seit Programmstart mit aufzeichnen.
Mein erster Ansatz war, ich bestimme zum Start des Programms den aktuellen Zeitstempel des Systems.
Bei jeder Messung wird dann parallel zur Messung ebenfalls ein Zeitstempel bestimmt und aus diesem und dem ersten die Differenz gebildet.

Das Problem liegt sicher im Fehler den Gerd bereits angesprochen hat. Wie funktioniert bei dir denn die Messung bzw die Abspeicherung deiner Werte? Eventuell gibt es eine einfachere Lösung für dein ProblemWink

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.08.2012, 11:27
Beitrag #4

flattervieh Offline
LVF-Grünschnabel
*


Beiträge: 42
Registriert seit: Sep 2009

2011 Prof. SP1
2009
EN


Deutschland
RE: Zeitstempel für Messung bestimmen
Oh ich seh grad in dem VI war das noch nicht gespeichert. In der Diagram disable Structure war nur ein "wait ms" mit 1 ms Dauer eingebaut.

Ich hab mal das Sub-Vi angehängt, das mir die Messung durchführt. Hier wird auch das mit der zeitlichen Differenz gemacht.
Vom aufrufenden VI wird der Zeitstempel vom Programmstart übergeben und das Sub-VI liefert ein Array mit dem Messzeitpunkt und den Messwerten zurück.
Daher kommt auch das Array in meinem ersten angehängten VI.


Angehängte Datei(en)
11.0 .vi  Messung_2.vi (Größe: 19,61 KB / Downloads: 277)

11.0 .vi  AIO SubVI.vi (Größe: 22,06 KB / Downloads: 236)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.08.2012, 11:48 (Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2012 11:50 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zeitstempel für Messung bestimmen
Hallo flattervieh,

vielleicht solltest du eine weitere Grundregel beim Programmieren beachten: Jede Referenz, die man öffnet, sollte man auch wieder schließen. Die gilt für Dateien, Queues, Notifier - und eben auch für DAQmx-Referenzen. Du öffnest bei jedem Aufruf deiner Messroutine eine neue Referenz, aber du schließt die nie! Das hat ähnliche Effekte wie das ständige Anwachsenlassen eines Arrays: irgendwann reicht der Speicher nicht mehr aus (bzw. ist mit lauter Müll gefüllt)...

Nächste Grundregel: man muss nicht dauernd neue Referenzen öffnen, man kann mit der alten weiterarbeiten. Deshalb den Task nur einmal anlegen und immer damit weiterarbeiten! Und das Schließen der Referenz am Programmende nicht vergessen! Hast du dir mal die Beispiele angeschaut, die mit DAQmx/LabVIEW mitgeliefert werden?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.08.2012, 11:55
Beitrag #6

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Zeitstempel für Messung bestimmen
(08.08.2012 10:28 )flattervieh schrieb:  ...Da das VI später aber auch mehrere Monate am Stück laufen...

In welchem Intervall speicherst du deine Daten & leerst dein Array?
Gerade bei längeren Aufzeichnungszeiten kommt da ordentlich was an Daten zusammenWink

Ansonsten hat Gerd bereits alles über die Referenzen gesagt.

Gruss Marc
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.08.2012, 12:07
Beitrag #7

flattervieh Offline
LVF-Grünschnabel
*


Beiträge: 42
Registriert seit: Sep 2009

2011 Prof. SP1
2009
EN


Deutschland
RE: Zeitstempel für Messung bestimmen
Ich seh' schon, ich muss an meinem jetzigen Programm einiges umbauen.
Das vom Sub-VI ans Haupt-VI übergebene Array wird dort direkt im Anschluss in ein Spreadsheet-File geschrieben. Daher besitzt das Array immer nur die Größe 1x17 (der Messzeitpunkt und 16 Messwerte).

Das Programm misst in 2 Minuten 360 mal die 16 Signale und wartet anschließend 12 Stunden. Nach der Pause beginnt es wieder von vorne.

Aber ich denke ich werde am Programm einiges umbauen müssen. Das ist in letzter Zeit ständig um Funktionen ergänzt worden, die aber meist nur reingefrickelt wurden. So langsam bleibt mir nichts anderes übrig als das Programm komplett zu überarbeiten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: