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 

Elapsed Time gequantelt?



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!

15.09.2008, 17:08
Beitrag #1

Peter Knauer
Unregistered


 







Elapsed Time gequantelt?
Ich brauche für ein Projekt einen genauen Zeitstempel. (Es geht darum: Ich lasse von einem Kameratreiber Videoframes capturen und muss in LabVIEW für jeden Frame einen ms-Zeitstempel mitschreiben. Falls Frames verloren gehen, daß man für die restlichen trotzdem noch ihr Timing kennt.)

Nun habe ich festgestellt, daß sowohl das "Get Date/Time in Seconds", als auch "Elapsed Time" meine Zeit zwar nominell angeblich in Millisekunden stoppen können, aber es zeigt sich eine Quantelung. Ich erlebe mehrere Schleifendurchläufe in angeblich der selben Millisekunde, es vergeht also angeblich KEINE Zeit. Kann aber nicht sein, es vergehen in Wahrheit mindestens 1/Framerate=10ms, so mal als Beispiel.

Ich hab das in anhängendem vi (LV 8.0) einmal zusammengekocht. Man sieht am Graphen, daß die Kurve treppenförmig ist. Die Schleife wird viel öfter durchlaufen, als daß TimeElapsed auch weiterzählt.

Wie sind diese Spünge zu erklären und noch wichtiger: Wie bekomme ich Abhilfe?

Ich habe es schon mit einem TimedLoop versucht: Super, keine Treppchen, allerdings erhalte ich damit nur das Timing von Beginn oder Ende der Schleife (und alle Differenzen nach Herzenslust, ich weiß). Ich brauche aber den Zeitstempel von erst 2-3 Nodes nach Eintritt in die Schleife. Wie lange diese Nodes wiederum dauern, weiß man nicht, das schwankt.

Hat jemand noch eine andere Idee? Kann man irgendwie per kernel32.dll-Aufruf die Systemzeit abgreifen? Vielleicht ist die ja präziser? Wird leider als struct geliefert. :-(

Vielen Dank schonmal!


Angehängte Datei(en)
Sonstige .vi  ElapsedTimeTest.vi (Größe: 40,01 KB / Downloads: 217)
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.09.2008, 17:50
Beitrag #2

MikeS81 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 231
Registriert seit: Aug 2008

8.5
2005
de_en

81xxx
Deutschland
Elapsed Time gequantelt?
Hallo Peter,
hast du es schon mit dem "Tick Count (ms)" versucht?

Mike
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.09.2008, 22:37
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Elapsed Time gequantelt?
Wa Du beschreibst, kann ich an Deinem VI weder beobachten noch wäre es plausibel. Das Updaten eines Graphen oder Diagramms dauert mehrere Millisekunden, und es ist noch mehr, wenn Du die automatischen Skalenanpassung aktiviert hast. Demzufolge ist die Laufzeit für einen Schleifendurchgang erheblich größer als der Timerwert von 1 ms. Und das zeigt die elapsad Time auch an, also viel zu große Werte und nicht wie Du sagst zu kleine Werte.

Außerdem war meines Wissens auf den 1ms-Wert bei den Timerangaben noch nie Verlass, es scheint erst ab 2ms richtig zu funktionieren. Das nachfolgende Beispiel zeigt, daß 1000 Durchlaufe zu 1ms insgesamt fast 2 sec beanspruchen. Bei Timerwerten ab 2ms stimmt dann alles exakt.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 07:09
Beitrag #4

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Elapsed Time gequantelt?
' schrieb:Außerdem war meines Wissens auf den 1ms-Wert bei den Timerangaben noch nie Verlass, es scheint erst ab 2ms richtig zu funktionieren. Das nachfolgende Beispiel zeigt, daß 1000 Durchlaufe zu 1ms insgesamt fast 2 sec beanspruchen. Bei Timerwerten ab 2ms stimmt dann alles exakt.
[attachment=41926:Zeit5.png]

da kann ich nur zustimmen. Unter Windows darf man nicht erwarten, dass ein Timing "um die" 1000 Hz wirklich "genau" ist. Vielleicht geht das mit der Timed Loop? bestätigen kann ich das nicht, ich hab noch keine wirklich sinnvolle Anwendung für die Timed Loop unter Windows gefunden.

Unter RT dagegen ist auf eine 1 ms Angabe tatsächlich verlass. Wenn man das benchmarkt steht die Anzeige wie ne 1 (Achtung, WochtwitzWink)

@Peter: ich denke, dass die Funktion "Get System Time" genau diesen DLL-Aufruf durchführt und das Strukt in einen LabVIEW Zeitstempel (aus C-Programmierer-Sicht ebenfalls ein StructWink) umwandelt

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 10:49 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2008 12:31 von Lucki.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Elapsed Time gequantelt?
Habe mich noch mal mit der Sache beschäftigt. Was ich über den zusätzlichen Zeitbedarf für das Updating des Graphen sagte, gilt zwar weiterhin. Aber trotzdem hatte Peter auch recht. Unglaublich aber wahr: Die Zeitausgabe des Elapsed-Time-VI ist tatsächlich geqantelt. Genau gesagt: Ein Zeitquant ist 1/60 s und nicht, wie mam annehmen sollte 1/1000 s.
Mit dem VI "Timerwert auslesen" hat man das nicht. Also: Problemlösung = Tipp von Mike + Updatezeit der Graphen besser managen.
Man könnte ja das Express-Vi öffnen und die Ursache erforschen. Habe ich jetzt nicht getan.
Hier das abgewandelte Elapsed Time-VI, welches das beweist:
Lv85_img
Sonstige .vi  ElapsedTimeTest_1_.vi (Größe: 53,63 KB / Downloads: 205)

Und hier noch zwei Schnappschüsse von den Ergebnissen - es könnte ja sein, daß der Effekt bei besseren Rechnern als dem meinigen nicht auftritt:
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 11:50
Beitrag #6

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Elapsed Time gequantelt?
' schrieb:Man könnte ja das Express-Vi öffnen und die Ursache erforschen. Habe ich jetzt nicht getan.

ich hab das mal gemacht und man sieht: NICHTS

bzw. im Inneren wird auch die Funktion "Get System Time" aufgerufen und verrechnet . ..
   

das ist aber sehr misteriös ...

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 12:01
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Elapsed Time gequantelt?
Wenn ich so zurück denke ... gibt es drei Möglichkeiten für eine Zeitauflösung.

QueryPerformanceCounter - ist von der Prozessorfrequenz abgeleitet und prinzipiell auf ns genau. Dann gibt es GetTickCount, der auf ms genau ist. Und drittens gibt es aus alten Zeiten, als Prozessoren noch mit 4,77MHz liefen, ein Raster so um die 18ms. Dieses Raster taucht ab und zu noch mal auf. Das letzte mal hatte ich es unter W2K gesehen. Ob es noch immer einen API-Befehl gibt um diesen Wert zu lesen weiß ich nicht.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 12:47 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2008 12:57 von Lucki.)
Beitrag #8

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Elapsed Time gequantelt?
' schrieb:ich hab das mal gemacht und man sieht: NICHTS
Nach den Gesetzen der Logik heißt das doch, daß die dort verwendete Funktion Gettime bereits dieses mysteriöse Verhalten an sich haben muß. (Und das deckt sich mit dem, was Peter ganz oben schon festgestellt hat)
Und das stimmt wirklich, habe das VI weiter oben erweitert um den Fall: "Zeiterfassung mit Get Time" und das VI oben ersetzt.
Und IchSelbst hat uns auch die Augen geöffent, warum das so ist: 1/60 s = 16.7 ms = Wert um die von Ich Selbst genannten 18 ms. Die Windows-Zeitanzeige benutzt offenbar bis heute diesen Takt.
Das ist ja alles nicht so schlimm, wenn man es weiß. Ein entsprechender Hinweis in der LV-Hilfe bei diesen Funktionen wäre wirklich nicht schlecht.
Hier der Schnappschuss bei Zeiterfassung mit Get Time:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 13:05
Beitrag #9

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
Elapsed Time gequantelt?
Ich kann das Bsp. nicht öffnen, (ev. gehe ich von was falschem aus) aber was hier geschrieben wird kann ich nicht so glauben.

Warum geht den das (siehe Bild)?


Angehängte Datei(en) Thumbnail(s)
   

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2008, 13:40
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Elapsed Time gequantelt?
' schrieb:Warum geht den das (siehe Bild)?
Weils anders ist als die Vorlage?

Probier mal eine 10000er-For-Schleife herum einmal mit Wait, einmal mit Metronom und kuck ob die Differenz dann das 10000fache ist.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Steuerung der Messdatenaufzeichnung mit Elapsed-Time-SubVI lempy 6 4.164 08.07.2021 10:18
Letzter Beitrag: lempy
  Elapsed Time verbunden mit ansteigender Flanke Gesetzt 11 9.013 02.12.2015 14:19
Letzter Beitrag: GerdW
  Kann das Express-VI "Elapsed Time" umprogrammiert werden? Dommas 4 6.648 20.07.2010 06:23
Letzter Beitrag: Achim
  Starten von elapsed time me007 8 8.023 06.05.2008 13:49
Letzter Beitrag: me007
  Pausieren des Elapsed Timers? Array löschen? knutroggers 17 13.707 18.10.2007 07:41
Letzter Beitrag: Achim
  Nochmal die "Elapsed Time" Klamotte Sven77 9 7.684 11.10.2007 08:12
Letzter Beitrag: Sven77

Gehe zu: