Hallo nochmal,
Weiss jemand, wann startet der Timer ('Wait # ms'
in einer While Schleife ? Ganz am Anfang und läuft parallel zu anderen Operationen,
oder am Ende bevor BedingungsPrüfung ?
Danke!
Gruß
Oleg
Wenn ich mich richtig erinnere, wird nach dem Abarbeiten des Codes die gesamte Zeit gewartet, die Du an "Wait (ms)" (Armbanduhr) angeschlossen hast.
Dagegen wartet "Wait until Next ms Multiple" (Metronom) so lange, bis der Schleifendurchlauf (Code und Warten) so lange dauert, wie der angeschlossene Wert.
Gruß Markus
' schrieb:Wenn ich mich richtig erinnere, wird nach dem Abarbeiten des Codes die gesamte Zeit gewartet, die Du an "Wait (ms)" (Armbanduhr) angeschlossen hast.
Dagegen wartet "Wait until Next ms Multiple" (Metronom) so lange, bis der Schleifendurchlauf (Code und Warten) so lange dauert, wie der angeschlossene Wert.
Nein, falsch, nein!
Wait wartet einfach die angeschlossene Zeit. Wann das ausgeführt wird, hängt vom Aufbau des VI ab!
Wait until Next.... wartet solange, bis der interne ms-Counter ein ganzzahliges Vielfaches des angeschlossenen Wertes ist. Es kann also sein, dass dieses VI nur 20 ms wartet, obwohl 100 als Eingang angeschlossen ist.
Gruß, Jens
Das wäre mir aber neu....
Da les' ich doch gleich mal nach.
Gruß Markus
' schrieb:Wait wartet einfach die angeschlossene Zeit. Wann das ausgeführt wird, hängt vom Aufbau des VI ab!
Wait until Next.... wartet solange, bis der interne ms-Counter ein ganzzahliges Vielfaches des angeschlossenen Wertes ist. Es kann also sein, dass dieses VI nur 20 ms wartet, obwohl 100 als Eingang angeschlossen ist.
Gruß, Jens
Es ist bei "Wait until Next ms Multiple" so, dass wenn der Code 20 ms dauert, dass dann gewartet wird, bis die 100 ms voll sind, dauert der Code z.B. 102 ms, dann wird 200 ms gewartet, weil 200 ein Vielfaches von 100 ist.
Hier der Link:
http://digital.ni.com/public.nsf/allkb/12B...6256257004DD8E2
Gruß Markus
' schrieb:Wait until Next.... wartet solange, bis der interne ms-Counter ein ganzzahliges Vielfaches des angeschlossenen Wertes ist. Es kann also sein, dass dieses VI nur 20 ms wartet, obwohl 100 als Eingang angeschlossen ist.
' schrieb:Nein, falsch, nein!
Was würde dann besser zu meinem Fall passen? : Eine Schleife soll nicht kürze als 1 sekunde sein, wenn nötig kann aber länger.
Oleg
Allgemein, lohnt es sich, für solches ein SubVi zu erstellen wie in dem Bild.
- durch denn Errorcluster kann genau bestimmt werden, wann gewartet werden soll.
- bei einem Fehler wird nicht gewartet, was besonders bei langen Wartezeiten sinnvoll ist.
Der Timer ist ein VI wie jedes andere und niemand kann garantieren, daß bei der parallelen Verabarbeitung des Codes in der Schleife der Timer zuerst aufgerufen wird.
Andererseits kann man sich eigentlich immer darauf verlassen, daß innerhalb einer Struktur zuerst die einfachen Dinge wie Lesen von Variablen, Addieren usw. erledigt werden und erst dann die in der Struktur verschachtelten weiteren Strukturen. Und zu den einfachen Dingen gehört auch der Timer.
Also auf Dein Beipiel bezogen heißt das: Man kann nicht sagen, ob zuerst der Timer gestartet wird oder zuerst die Subtraktionen/Divisionen ausgeführt werden. Das ist auch uninteressant, weil dies Operationen weit weniger als 1µs beanspruchen. Aber auf jeden Fall wird Wait gestartet, bevor die internen Strukturen im rechten Teil des Bildes abgearbeitet werden.
Im Übrigen läßt sich die Reihenfolge mittels Einzelschrittanalyse ganz leicht feststellen.
Au keinen Fall ist es so, daß die Gesamt-Wartezeit in der Schleife die Summe von Timerzeit und Code-Bearbeitungszeit ist. Die Gesamt-Auführungszeit wird eher durch die längere der beiden Zeiten bestimmt.
@Role:
Ein mikroskopisch kleines VI mit fast genau diesem Inhalt gibt es ja bereits in der Timer-Palette, aber da dieses unter "Express-VI" firmiert, werden sich manche hier eher die Hand abhacken, bevor sie es verwenden
(Und ich weiß, daß es unvornehm ist, auf die Existenz eines solchen No-GO-VI überhaupt hinzuweisen:mellow:Hoffentlich verliere ich jetz meinen "Expert"-Status nicht)
' schrieb:@Role:
Ein mikroskopisch kleines VI mit fast genau diesem Inhalt gibt es ja bereits in der Timer-Palette, aber da dieses unter "Express-VI" firmiert, werden sich manche hier eher die Hand abhacken, bevor sie es verwenden
Express-Design ist nicht das Problem, sondern,
- wartet auch bei Fehler.
- Zeitangabe mit DBL (s) (wer braucht den sowas)