LabView: Pass-Wert zwischen while-Schleifen
Ich habe ein vi mit zwei unendliche while-Schleifen. Die linke Schleife kontinuierlich liest Daten von einem Gerät und plots ist es, die rechts-Schleife ruft eine benutzerdefinierte DLL und verwendet den Ausgang zu fahren, ein anderes Gerät. Der DLL-Aufruf-Blöcke für etwa eine Sekunde, so dass die beiden Schlaufen sind nicht die synchronen*. Jetzt würde ich gerne den momentanen Wert aus der ersten Schleife, als einen Beitrag zu der DLL in der zweiten. Ich versuchte nur anschließen - fügt LabVIEW-terminals an die loop-Grenzen - aber dann die zweite Schleife nicht ausgeführt. (Wenn es darauf ankommt, ist der Datentyp "dynamische Daten" - Spannungsmessung). Wie mache ich es?
(* In der Tat, ursprünglich gab es nur eine Schleife, und das Diagramm nur aktualisiert, zwischen-DLL-Aufrufe, die nicht zufriedenstellend war.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die standard-Verhalten, denn die erste Schleife ist noch nicht fertig, die Daten auf der gate-Ausgang ist nicht verfügbar für den nächsten loop zu starten.
Die Schnellste Methode, um Daten aus einer Schleife wird durch die Verwendung einer lokalen Variablen:
Es gibt mehrere andere Möglichkeiten für die Verteilung Ihrer Daten und die einheimischen könnten jetzt funktionieren, aber Sie wollen sich zu bewegen auf, wenn Sie die Skalierung für größere Anwendungen.
Andere Optionen sind Warteschlangen (verlustfreie und nicht verlustfreie) oder Melder oder Globale Variablen, und wenn Sie vorher in LabVIEW werden Sie kommen mit Ihren eigenen Regelungen.
Was du suchst ist eine "Producer-Consumer" - Schleife.
Gibt es eine Vorlage, die im Lieferumfang von LabVIEW(Datei >> Neu... >> VI >> Aus Vorlage >> Design-Patterns), das ist ein guter Ausgangspunkt.
Auch, mehr info hier:
http://zone.ni.com/devzone/cda/tut/p/id/3023
http://zone.ni.com/wv/app/doc/p/id/wv-1295
PS - der Grund der zweiten Schleife nicht ausgeführt wird, weil das Konzept der sogenannten "Data Flow". Ein Knoten (Ihre zweite Schleife) kann nicht ausgeführt werden, bis alle es-Eingänge empfangen wurden, einschließlich der Daten von der ersten Schleife. Ein Knoten (der ersten Schleife) nicht ausgeben, etwas aus ihm heraus, bis es fertig ist die Ausführung, D. H., bis die Schleife beendet.
Also im Grunde, Sie Ihre zweite Schleife würde nicht laufen, bis die erste Schleife ausgeführt und beendet eine Schleife.
Tatsächlich, Sie mag nicht, dass die extra-Anzeige auf dem front-panel, nur, um seinen Wert über lokale Variablen. Sie könnten dann eine Globale variable verwenden. Sie finden es unter "Strukturen". Dies erstellt ein neues VI, wo Sie fallen können verschiedene Indikatoren oder die Kontrollen nur zum schreiben und Lesen von Daten zu/von Ihnen. Löschen Sie diese Globale variable VI in Ihrem Blockschaltbild Zugriff auf die Daten. Dann könnten Sie die gleichen globalen Variablen VI und seine Werte in andere VIs nach Bedarf.