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 

Timer in [s]



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!

18.08.2015, 09:53
Beitrag #1

grba123 Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Nov 2014

2013
-
DE



Timer in [s]
Hallo,

ich hab versucht ein Timer zu programmieren,der die Zeit des Programmablauf zählt.In diesem Fall das Programm ist eine While-Schleife,die 1s dauert und die Zähler sollte das genau messen. Wieso ist es bei mir nicht immer ganz genau 1s ?

danke


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.08.2015, 10:29 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2015 10:33 von NoWay.)
Beitrag #2

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Timer in [s]
Du wartest genau 1Sekunde plus die Zeit, die deine Schleife für die Abarbeitung des hinterlegten Codes benötigt.

*EDIT*
Das hier ist eventuell das, was du suchst?
http://zone.ni.com/reference/en-XX/help/..._multiple/

Wie "genau" willst du denn messen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 10:52
Beitrag #3

grba123 Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Nov 2014

2013
-
DE



RE: Timer in [s]
ich hab eine while-schleife definiert und in jeder Zyklus misst man Widerstand. Während des Programmablauf möchte ich gern Anzahl der Zyklen und die vergangene Zeit messen. Außerdem hab ich definiert dass jeder Durchgang in der Schliefe 1000ms dauert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 11:09
Beitrag #4

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Timer in [s]
Wie gesagt, du hast definiert, dass deine Schleife 1 Sekunde plus Abarbeitungszeit läuft.
Für die Anzahl der Zyklen kannst du den Iterationsanschluss abfragen. Das ist das blaue i unten links in der Ecke der While Schleife.
Zitat:Während des Programmablauf möchte ich gern Anzahl der Zyklen und die vergangene Zeit messen. Außerdem hab ich definiert dass jeder Durchgang in der Schliefe 1000ms dauert.
Du willst eine Genauigkeit von 1 Sekunde erreichen, lese ich daraus. Dann benutze doch einfach "Wait until next MS mutiple".
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 12:13
Beitrag #5

grba123 Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Nov 2014

2013
-
DE



RE: Timer in [s]
mein Programm sieht wie am Bild. Also ich möchte jetzt dass die Wiederholungsanzahl mit der in Zyklus definierte Zeit übereinstimmt und dass Timer richtige Zeit zeigt. Z.b Zyklusdauer 2000ms und Anzahl der Widederholungen 10. Timer solte jede sekunde eine Wiederholung zählen so dass am Ende steht 10 Wiederholungen und Teimer 20s


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 12:27
Beitrag #6

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Timer in [s]
(18.08.2015 10:29 )NoWay schrieb:  Du wartest genau 1Sekunde plus die Zeit, die deine Schleife für die Abarbeitung des hinterlegten Codes benötigt.
Der Code und die Wait-Funktion werden aber parallel ausgeführt, und das heißt bei einem Wait von 1000ms: Solange der Code weniger als 1s zur Ausführung braucht, dauert ein Schleifendurchlauf 1000ms. Wenn der Code länger braucht, bestimmt dieser die Scheifen-Durchlaufszeit, d.h es ist dann so als ob die Wait-Funktion gar nicht existieren würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 12:36 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2015 12:39 von NoWay.)
Beitrag #7

NoWay Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 241
Registriert seit: Jul 2013

LV-2019
2013
EN


Deutschland
RE: Timer in [s]
(18.08.2015 12:13 )grba123 schrieb:  mein Programm sieht wie am Bild. Also ich möchte jetzt dass die Wiederholungsanzahl mit der in Zyklus definierte Zeit übereinstimmt und dass Timer richtige Zeit zeigt. Z.b Zyklusdauer 2000ms und Anzahl der Widederholungen 10. Timer solte jede sekunde eine Wiederholung zählen so dass am Ende steht 10 Wiederholungen und Teimer 20s

Dann lies dir doch einfach mal durch, was ich geschrieben habe und denk da mal 5 Minuten drüber nach...
Das i in der Whileschleife gibt dir genau das, was du haben willst.

In der Schleife führst du dann deine Messung durch und wartest dann bis zum nächsten Vielfachen dessen, was du angegeben hast.
Beispiel: deine Schleife beinhaltet Programmcode, dessen Ausführung allein 1 Millisekunde Zeit benötigt. Du willst nach 2 Sekunden die nächste Messung starten. "Wait next MS multiple" bekommt als Wert die 2 Sekunden und muss jetzt noch 2000ms-1ms=1999ms warten. Würde dein Code z.B. 100 Millisekunden benötigen, dann wartet die Schleife noch 1900ms. Das bedingt natürlich das du dein Wait MS durch besagte Funktion ersetzt. Andernfalls hättest du den Fall 100ms+2000ms=2100ms

Dein "i" in der Whileschleife ist dein Zyklenzähler. Abhängig davon, wie groß deine definierte Wartezeit ist, musst du nun nur noch deinen Iterationszähler mit einem Faktor versehen und schon hast du deine Wartezeit in Sekunden als Ausgabewert.

(18.08.2015 12:27 )Lucki schrieb:  
(18.08.2015 10:29 )NoWay schrieb:  Du wartest genau 1Sekunde plus die Zeit, die deine Schleife für die Abarbeitung des hinterlegten Codes benötigt.
Der Code und die Wait-Funktion werden aber parallel ausgeführt, und das heißt bei einem Wait von 1000ms: Solange der Code weniger als 1s zur Ausführung braucht, dauert ein Schleifendurchlauf 1000ms. Wenn der Code länger braucht, bestimmt dieser die Scheifen-Durchlaufszeit, d.h es ist dann so als ob die Wait-Funktion gar nicht existieren würde.
Wenn man das aber mal im Vergleich laufen lässt, also zwei parallele Whileschleifen, die eine mit wait MS und die andere mit wait next MS mutiple sieht man sehr deutlich einen Versatz, der sich durchzieht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 13:05
Beitrag #8

grba123 Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Nov 2014

2013
-
DE



RE: Timer in [s]
Zitat:Dein "i" in der Whileschleife ist dein Zyklenzähler. Abhängig davon, wie groß deine definierte Wartezeit ist, musst du nun nur noch deinen Iterationszähler mit einem Faktor versehen und schon hast du deine Wartezeit in Sekunden als Ausgabewert.

wie kann ich ein Iterationszähler mit einem Faktor definieren ? Ich verstehe das nicht ganz.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 13:30
Beitrag #9

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: Timer in [s]
(18.08.2015 13:05 )grba123 schrieb:  
Zitat:Dein "i" in der Whileschleife ist dein Zyklenzähler. Abhängig davon, wie groß deine definierte Wartezeit ist, musst du nun nur noch deinen Iterationszähler mit einem Faktor versehen und schon hast du deine Wartezeit in Sekunden als Ausgabewert.

wie kann ich ein Iterationszähler mit einem Faktor definieren ? Ich verstehe das nicht ganz.

Wenn eine Schleife 10 mal Durchläuft und jede Iteration 500ms dauert, dann dauert das ganze 10 mal 500ms = 5s.
D.h., du multiplizierst deinen I count mit der Wartezeit und hast nach Beenden der Schleife die Gesamtzeit in ms.

Das hat nun aber schon fast nix mehr mit LabView zu tunBig Grin


Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2015, 15:14 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2015 15:22 von Lucki.)
Beitrag #10

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Timer in [s]
(18.08.2015 12:36 )NoWay schrieb:  Wenn man das aber mal im Vergleich laufen lässt, also zwei parallele Whileschleifen, die eine mit wait MS und die andere mit wait next MS mutiple sieht man sehr deutlich einen Versatz, der sich durchzieht.
Das ist richtig, hat aber nichts mit dem in der Schleife vorhandenen Code zu tun. Es liegt daran, dass die Wait-Funktion nur auf plus minus eine Milisekunde genau ist, und bei vielfachen Schleifendurchlauf wird sich dieser Fehler irgendwie akkumulieren. Bei Wait multiple ms kann das nicht passieren, da die ms immer mit der Uhrzeit synchronisiert werden. Dafür hat man - wenn man im Programm nichts dagegen tut - beim ersten Schleifenduchlauf (oder überhaupt bei nur einmaliger Anwendung) einen groben Fehler. Bei z.B. 1000ms Warten und zufälligem Start ist es bis zur nächsten vollen Uhr-Sekunde nicht 1000 ms, sondern irgendeine zufällige Zeitdauer zwischen 0 und 1000ms. Ab zweitem Schleifendurchlauf passiert das dann nicht mehr.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2 Parallele While-Schleifen mit unterschiedlichen Timer beenden Tomate27 3 2.356 18.08.2020 13:29
Letzter Beitrag: GerdW
  Timer macht was er will :-) Natalie1984 6 3.180 04.07.2019 12:49
Letzter Beitrag: IchSelbst
  While-Schleife anhalten ohne Timer valerian 2 3.610 04.10.2017 09:28
Letzter Beitrag: valerian
  Bedingung mit Timer verknüpfen ETechnik 7 5.491 28.05.2015 19:31
Letzter Beitrag: ETechnik
  (Absoluter) Bezug des VIs Timer-Wert RadioactiveMan 1 3.617 22.07.2014 13:17
Letzter Beitrag: jg
  Timer Spearmint 3 3.499 24.03.2014 21:12
Letzter Beitrag: Spearmint

Gehe zu: