LabVIEWForum.de
WAIT, WARTEN, VERZÖGERUUNG - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: WAIT, WARTEN, VERZÖGERUUNG (/Thread-WAIT-WARTEN-VERZOeGERUUNG)



WAIT, WARTEN, VERZÖGERUUNG - Atha - 14.12.2006 10:13

Hallo zusammen,

wie man wohl an meiner Frage auch merken wird...bin ganz neu in LabVIEW und kenne mich nicht wirklich gut aus.
Bin gerade in der Einarbeitungsphase und bin auf ein Problem gestoßen, wozu ich noch keine Lösung gefunden habe.

Es geht um folgendes:

Ich möchte ein Oszilloskop ansteuern. Die Komminikation erfolgt über Ethernet (Strings).
Das funktioniert einwandfrei. Ich habe nur ein Problem mit dem Auslesen von Daten.
Dazu muss ich einem String an das Oszi schicken, und bekomme dann einen Antwort-String, den ich lesen muss.
Prinzip ok, das Problem liegt darin, dass mein Programm wohl zu schnell abläuft, und der aktuelle String noch gar nicht an der Schnittstelle liegt
um ihn lesen zu können. Dadurch bekomme ich bei jedem Programmdurchlauf den Wert der letzten Messung angeziegt.

Ich möchte nun einfach zwischen dem Senden des String "schick mir den Wert der Zeitbasis" und dem Auslesen der Schnittstelle eine kleie Pause von 500ms oder 1s einbauen.

Bestimmt ganz einfach, aber wie mach ich das Unsure


Im Voraus schon mal vielen Dank!
Gruß Atha


WAIT, WARTEN, VERZÖGERUUNG - A.Berndsen - 14.12.2006 10:33

Hallo Atha,

eine Zeitverzögerung erreichst Du indem Du im Blockdiagramm das VI "warten [wait]" einfügst.
Probier das mal, wobei ich denke daß Du noch eine Sequenz benötigst, damit der Programmablauf an der richtigen Stelle angehalten wird.
Wenn Du allerdings immer alte Werte bekommst, kann das auch an anderen Dingen liegen.

Grüße
Andreas


WAIT, WARTEN, VERZÖGERUUNG - Atha - 14.12.2006 10:45

Hallo Andreas,

Danke für deine ANtwort!
Das VI WAIT habe ich auch schon gefunden, aber ich habe mich gefragt, wie ich dass in meinem Programmablauf reinbekomme?!?!?

Mach ich denn hinteren Teil dann in ein CASE und frage die WAIT anweisung ab und ektiviere somit die CASE?!?!


Gruß Atha


WAIT, WARTEN, VERZÖGERUUNG - Kvasir - 14.12.2006 11:06

Deine Pause wird ausgeführt, sobald dein Wait abgearbeitet wird. In deinem Fall sitzt dein Wait einfach im BD. D.h. es wird irgendwann - am Anfang - ausgeführt.

Um es genau an der Stelle zu plazieren, die du möchtest nimmst du am besten eine Flat Sequenz Struktur.
Du plazierst dann die Elemente vor dem Wait in einen Step, dann das Wait, dann die restlichen Elemente.

Was in deinem Fall auch geht, ist mit dem Errorcluster arbeiten. Erstelle einfach eine Case Struktur an der Stelle, wo du das Wait haben möchtest. Dann verbinde den Errorcluster mit der Casebedingung. In den False Fall gibst du das Wait.

edit: Wichtig hierbei ist, dass du zumindest ein Element aus der Kette (Error oder Ref z.B.) durch die Case Struktur durchverbindest, damit diese auch wirklich in "Serie" mit der Kette ausgeführt wird. Habe dir einen Bsp Screenshot angehängt.

Dadurch wird dein Wait auch nur ausgeführt, wenn kein Fehler aufgetreten ist.

Gruß


WAIT, WARTEN, VERZÖGERUUNG - Atha - 14.12.2006 11:19

Hallo Kvasi,

vielen Dank, hat super funktioniert!

Aber wie du schon sagtest, liegt es vielleicht gar nicht daran, da ich immer noch den Wert der vorherigen Messung ausgelesen bekommeSad

In der Einzelschritt-Ausführung des Programms bekomm ich aber die richtigen Werte, wenn ich zwischen schreiben uns auslesen eine Weile warte, daher
habe ich gedacht, dass es daran liegen könnte...


WAIT, WARTEN, VERZÖGERUUNG - Kvasir - 14.12.2006 11:37

Keine Ereignisstruktur, sonder eine Sequenz.
Das sind 2 grundverschiedene Dinge. Sequenzen gibt es auf jeden Fall auch in der Base Version.

Wie gesagt tut es bei dir aber ein Case mit Error als Anschluß auch. Da brauchst du nichtmal das.


WAIT, WARTEN, VERZÖGERUUNG - Kvasir - 14.12.2006 11:42

Also ich habe leider keinerlei Ahnung von deiner Kommunikation über Ethernet und Strings, aber aus Erfahrungen aus anderen Kommunikationsmethoden:

- Für gewöhnlich kann man bei Read ein Timeout einstellen. Das würde dir das Wait sparen und er liest auch wirklich nur, wenn er Daten bekommt.

- Wenn ich dein Bmp richtig interpretiere rufst du einen String ab? D.h.: Wenn mehrere Im Buffer liegen verarbeitest du nur den ältesten? Wenn also beim erstmaligen abrufen schon ein String im Buffer ist, dann bist du sozusagen immer einen Schritt hinten mit den ausgelesenen Daten.

Hier würde helfen den Buffer am Anfang zu entleeren.

Gruß


WAIT, WARTEN, VERZÖGERUUNG - Atha - 14.12.2006 13:44

Es lag nun tatsächlich an der Zeit, aber nicht zwischen Sendebefehl fürs Auslesen und das Auslesen an sich, sondern zwischen Senden der Einstellungen und denden des befehls zum Auslesen, da dieser zu früh angekommen ist und das Oszoi die neuen EInstellungen noch nicht übernommen hatte!

Vielen Dank für die Unterstützung!


Gruß Atha