Hallo zusammen
Ich bin ein rechter Grünschnabel im Thema LabVIEW. Für eine Prüfsoftware, habe ich zusätzlich ein Sub VI geschrieben "Ausdampfen" welche ich im normalen Ablauf aufrufe "siehe Bild". Jetzt ist es so, der normale Ablauf ist zeitlich gesteuert und das Sub VI auch. Ich vermute, dass es hier ein Problem gibt. Aber wie kann ich das lösen?
Anhang: Sub Vi (LV 8.5.1) + Aufruf (Bild)
Danke für eure Hilfe
Grüsse Mathias
Ein paar Infos mehr wären nicht schlecht. Was erwartest Du für Probleme?
Noch was: Schließ' doch die Controls und Indicators direkt an und keine lokalen Variablen. Die sind in diesem Fall sowas von überflüssig.
Gruß Markus
Ich hab mir dein SubVI angesehen und würde dir Enums anstatt Zahlen empfehlen, erhöht die Lesbarkeit wesentlich und verringert den Dokumentationsbedarf ^_^
Die Frage ist ob du das SubVI parallel zu deinem Aufruf laufen soll, oder ob der Aufruf dein SubVI starten und anschliessend immer wieder starten soll?
Evtl wäre das VI mit dem Aufruf auch noch interessant für die Problemlösung
Also hier mal ein kleines Enum-Beispiel:
[
attachment=22487] LabVIEW Version 8.5
Zudem ist dein SubVI ziemlich schwer zu verbinden, grundsätzlich sollte man das 4x2x2x4 Pattern verwenden. Wenn man mehr Daten übergeben will so verwendet man Cluster:
Hier ein kleines Cluster Beispiel:
[
attachment=22489] LabVIEW Version 8.5
Nur mal so eine Vermutung aus der Namensgebung der lokalen Variablen:
Die Werte für Weiter1, Wiederholen1 und Abbruch1 stehen bei Aufruf des SubVI fest. Eine Änderung nach Beginn der Ausführung des SubVI hat keinen Einfluss auf die Ausführung des SubVI.
' schrieb:Nur mal so eine Vermutung aus der Namensgebung der lokalen Variablen:
Die Werte für Weiter1, Wiederholen1 und Abbruch1 stehen bei Aufruf des SubVI fest. Eine Änderung nach Beginn der Ausführung des SubVI hat keinen Einfluss auf die Ausführung des SubVI.
Nein eigentlich ist es so gedacht, dass ich mit diesen Variabeln auch während dem Aufruf die Steuerung des VI übernehmen kann. Ist das nicht möglich???
Das Sub VI soll auch die Anweisungen an das Haupt VI hoch geben und das Haupt VI soll es dann an den Benutzer weitergeben.
Verwendest du eine Eventsstruktur um die Werteveränderungen auszulesen? Oder wann wird eine Wertveränderung bemerkt?
Um während der Laufzeit Daten zwischen HauptVI und SubVI auszutauschen brauchst Du Referenzen. Hier im Forum gibt's einige Bsp. dazu.
Gruß Markus
' schrieb:Nein eigentlich ist es so gedacht, dass ich mit diesen Variabeln auch während dem Aufruf die Steuerung des VI übernehmen kann. Ist das nicht möglich???
Das Sub VI soll auch die Anweisungen an das Haupt VI hoch geben und das Haupt VI soll es dann an den Benutzer weitergeben.
' schrieb:Ich hab mir dein SubVI angesehen und würde dir Enums anstatt Zahlen empfehlen, erhöht die Lesbarkeit wesentlich und verringert den Dokumentationsbedarf ^_^
Die Frage ist ob du das SubVI parallel zu deinem Aufruf laufen soll, oder ob der Aufruf dein SubVI starten und anschliessend immer wieder starten soll?
Evtl wäre das VI mit dem Aufruf auch noch interessant für die Problemlösung
Also hier mal ein kleines Enum-Beispiel:
[attachment=50700:Statemac...mit_Enum.vi] LabVIEW Version 8.5
Zudem ist dein SubVI ziemlich schwer zu verbinden, grundsätzlich sollte man das 4x2x2x4 Pattern verwenden. Wenn man mehr Daten übergeben will so verwendet man Cluster:
Hier ein kleines Cluster Beispiel:
[attachment=50702:Beispiel_Cluster.vi] LabVIEW Version 8.5
Danke erstmal für die Infos. Der Aufruf startet das Sub VI und die Variabeln vom Aufruf sollen vom Sub VI ausgeführt werden. Bsp. Die Variabel "Weiter1" ist ein Button vom Haupt VI für die Eingabe des Benutzers. Im Schritt 24 soll jetzt der Sub VI Ausdampfen gestartet werden und auch mit dem Button "Weiter 1" bedient werden können. Aus diesem Grund verschalte ich die Variabel Weiter 1 mit der Variabel im Sub VI Weiter. Funktioniert das nicht??? wie kann ich das den sonst lösen???
Hier ist so ein Bsp. zu den Referenzen. Es sollte Dir halt noch jemand runterspeichern auf LabVIEW 7.1.
Aber hier sind schon mal die Screenshots:
[
attachment=22491][
attachment=22492]
Gruß Markus
' schrieb:Um während der Laufzeit Daten zwischen HauptVI und SubVI auszutauschen brauchst Du Referenzen. Hier im Forum gibt's einige Bsp. dazu.
Gruß Markus
Wenn Du gleichzeitig ein LabVIEWprogramm über das Userinterface steuern und Messdaten aufzeichen/verarbeiten möchtest, benötigst Du zwei Parallele Schleifen (Zwei Schleifen, die gleichzeitig abgeabeitet werden). Die eine Schleife steuert das UI, die die Datenverarbeitung. Die Kommunikation zwischen beiden findet über Queues statt. Das ist das sogenannte Producer-Cosumer-Pattern. Kann man sich bei den LV-Beispielen ansehen.
Sorry, dass ich nur die englischen Namen parat habe. Ich arbeite mit der englischen LV 8.6 Version.