LabVIEWForum.de - Shared Variables -> Zeit bis aktueller Wert verfügbar?

LabVIEWForum.de

Normale Version: Shared Variables -> Zeit bis aktueller Wert verfügbar?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Wie oben beschrieben möchte ich gerne wissen wie lange es dauert, wenn auf eine SV geschrieben wurde, bis dieser Wert verfügbar ist. Bzw. ob es möglich ist, dass erst dann weitergemacht wird, wenn die SV upgedated ist.

Hier die genaue Beschreibung meines Programmes (siehe Bild):
Ich benutze die SV "Dev2_DataSentAI"als Handshake-Variable. Wenn sie TRUE ist, hat der Erzeuger neue Daten geschickt, dann soll die SV "Dev2_DataAI" ausgelesen werden. Ist das Lesen beendet, wird die SV "Dev2_DataSentAI" wieder rückgesetzt. Somit sollte jeder Wert nur einmal gelesen werden, doch genau das ist nicht der Fall. Schuld daran ist, dass es eben eine gewisse Zeit dauert, bis sich der Wert der SV "Dev2_DataSentAI" geändert hat. Erhöhe ich die Zeitverzögerung auf bspw. 150ms ist genug Zeit vorhanden; jedoch macht das das gesammte Programm langsamer.
Weiß vlt. jemand eine Lösung, dass dieser Case erst dann beendet wird, wenn der neue Wert der SV verfügbar ist?

[attachment=13361]
Version: LV8.5

Danke im Voraus!

lg. Philipp
Ich kenne Dein Problem, weil ich mein Programm auch mit "Handshake-Variablen" aufgebaut habe.
Ich verwende auch einfach nur eine größere Verzögerungszeit. Was anderes habe ich auch nicht gefunden.

Gruß Markus
' schrieb:Ich kenne Dein Problem, weil ich mein Programm auch mit "Handshake-Variablen" aufgebaut habe.
Ich verwende auch einfach nur eine größere Verzögerungszeit. Was anderes habe ich auch nicht gefunden.

Gruß Markus

Vielleicht hat ja sonst jemand eine Lösung. Dann werde ich mein Programm zusätzlich so umbauen, dass in dem Case-Teil garantiert als erstes (stacked-sequence) dieser Auslese- und Handshake-Part ausgeführt wird. Vielleicht kann ich die Zeit ja so heruntersetzen. Aber ich muss schon sagen, das ist nicht so gut gelöst. Eine Möglichkeit der Realisierung wäre mit Zeitstempeln zu arbeiten und so zu erkennen, ob der Wert bereits gelesen wurde. Oder ist das zu rechenintensiv?

lg. philipp
Wäre es evtl. eine Variante, an der Lesestelle zu prüfen, ob sich der Wert zum vorhergehenden Wert geändert hat? Nur wenn das der Fall ist, muss ja überhaupt gelesen werden. Damit kannst du dir den Handshake eigentlich auch sparen...Den alten Wert hälst du dir in nem Schieberegister, und aktualisierst in diesem SR dann im Falle einer Änderung!

Gruß
Achim
' schrieb:Wäre es evtl. eine Variante, an der Lesestelle zu prüfen, ob sich der Wert zum vorhergehenden Wert geändert hat? Nur wenn das der Fall ist, muss ja überhaupt gelesen werden. Damit kannst du dir den Handshake eigentlich auch sparen...Den alten Wert hälst du dir in nem Schieberegister, und aktualisierst in diesem SR dann im Falle einer Änderung!

Gruß
Achim

Du hast mich auf eine gute Idee gebracht; danke!
Das mit der Wertänderung ist an sich eine gute Idee. Die HS-Variable brauche ich aber noch, da der Datenerzeuger wissen muss, wann er neue Daten reinschreiben darf.
Aber ich kann in einer While-Schleife abfragen ob sich der Wert bereits geändert hat, und nur dann geht es weiter im Programm.

lg. philipp
Referenz-URLs