LabVIEWForum.de
Oberfläche von SubVI in Main Programm einbinden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Oberfläche von SubVI in Main Programm einbinden (/Thread-Oberflaeche-von-SubVI-in-Main-Programm-einbinden)

Seiten: 1 2


Oberfläche von SubVI in Main Programm einbinden - sara2211 - 15.11.2016 17:04

Hallo Leute,

dank meiner Bachelorthesis komme ich jetzt auch zu der Ehre mich in LabView einzuarbeiten (LabView Version 2012). Dieses Forum wurde jetzt schon für viele Probleme zu Rate gezogen, jetzt bin ich das erste Mal an einer Stelle wo ich nicht mehr weiter komme (und somit meinen ersten Beitrag schreiben darf).

Zu meiner Problematik:
Das Ziel meiner Thesis ist es, einen Testautomaten zur Überprüfung von Netzteilen zu entwickeln. Der Benutzer soll über eine Oberfläche verschiedene Einstellungen auswählen können, den Test starten und am Ende soll protokolliert werden welchen Status das Netzteil erhält (Pass/Fail).
Ich hänge gerade an der Erstellung der Benutzeroberfläche. Ich habe eine Oberfläche konstruiert, die auch so funktioniert wie sie soll. Der Benutzer kann alle Einstellungen vornehmen und die Angaben sollen jetzt weiterhin im Programm verarbeitet werden. Die Steuerung der Oberfläche habe ich nun in ein SubVI gepackt (Bedienungsauswahl.vi), sodass später mein Hauptprogramm (Main.vi) übersichtlicher wird. Die Übertragung der Elemente von der SubVI habe ich (nach meinem Glauben zumindest) in das Main Programm geschafft, allerdings stehe ich jetzt vor dem Problem, dass beim Ausführen irgendwie die Funktionen des SubVIs nicht richtig ausgeführt werden (bei alleiniger Benutzung der SubVI funktioniert alles fehlerlos).

Mein Problem an einem konkreten Beispiel beschrieben:
Das Dropdownmenü ist im Status <Lastart auswählen>, somit sind alle Elemente deaktiviert und ausgegraut. Wähle ich im Dropdownmenü jetzt "Leerlauf", sollte das Dropdownmenü <Netzteil auswählen> aktiviert und bedienbar sein. Beim alleinigen Ausführen von Bedinungsauswahl.vi funktioniert dies, über Main.vi mit dem SubVI welches Bedingungsauswahl.vi beinhaltet funktioniert dieses nicht.
Wenn ich meinen Fehler versuche über die Highlight-Funktion zu entdecken, erkenne ich, dass eigentlich der Status von allen Elementen richtig übertragen wird, nur irgendwie die Veränderungen der Oberfläche bedingt durch die Funktionen in der SubVI nicht ausgeführt werden.

Woran liegt das? Kann mir jemand helfen? Angel_not


RE: Oberfläche von SubVI in Main Programm einbinden - jg - 15.11.2016 17:19

Deine PropertyNodes innerhalb deines SubVIs verweisen auf die Elemente IM SubVI, und nicht auf die Elemente in deinem Haupt-VI.

Gruß, Jens


RE: Oberfläche von SubVI in Main Programm einbinden - C.Maier - 16.11.2016 08:07

Du könntest von deinen Elementen in der Main Referenzen bilden und diese in dein SubVI einbinden.

Habe mal auf die schnelle dein Programm umgestrickt um dies zu demonstrieren. Natürlich geht das viel schöner. Aber um das Prinzip darzustellen reicht es.


RE: Oberfläche von SubVI in Main Programm einbinden - GerdW - 16.11.2016 08:19

Hallo C.,

Zitat:Natürlich geht das viel schöner.
- Referenzen in einem Cluster zusammenfassen, das spart jede Menge Draht und Terminals im ConnectorPane
- Bei den "Deaktiviert"-Eigenschaftsknoten nicht einfach "0" oder "2" anschließen, sondern passende Enums verwenden - dann verschwinden die CoercionDots!
- Wenn man etwas wie hier gleich 6mal erledigen will, sollte man mit einer Schleife arbeiten…

Außerdem:
Wenn der OP angibt, er arbeitet mit LV2012, dann solltest du deine VIs auch entsprechend kompatibel hochladen!

(Bitte nicht falsch verstehen: ich finde es gut, dass du Hilfe anbietest und VIs hochlädst! Aber etwas mehr Sorgfalt würde auch nicht schaden…)


RE: Oberfläche von SubVI in Main Programm einbinden - sara2211 - 16.11.2016 09:57

Hallo C.,

Vielen Dank für die Antwort.

(16.11.2016 08:07 )C.Maier schrieb:  Du könntest von deinen Elementen in der Main Referenzen bilden und diese in dein SubVI einbinden.

Habe mal auf die schnelle dein Programm umgestrickt um dies zu demonstrieren. Natürlich geht das viel schöner. Aber um das Prinzip darzustellen reicht es.

Ich habe jetzt versucht dein Bild mal nachzubauen und hänge gerade an der Einbindung von der Main Referenz in die SubVI. Eine Referenz in der MainVI zu erstellen (und diese dann mit dem Element des SubVI verbinden) ist kein Problem. Die Erstellung vom Eigenschaftsknoten und dann ausschneiden und in die SubVI einbauen ging auch. Wie kriege ich diese "türkisenen Bausteine" in der SubVI erstellt?
Sonst wäre ich auch sehr dankbar wenn du deine kurze Umstickung als 2012 Version hochladen könntest Angel_not

(16.11.2016 08:19 )GerdW schrieb:  - Referenzen in einem Cluster zusammenfassen, das spart jede Menge Draht und Terminals im ConnectorPane
- Bei den "Deaktiviert"-Eigenschaftsknoten nicht einfach "0" oder "2" anschließen, sondern passende Enums verwenden - dann verschwinden die CoercionDots!
- Wenn man etwas wie hier gleich 6mal erledigen will, sollte man mit einer Schleife arbeiten…

Vielen Dank für die Tipps, ich werde sie versuchen umzusetzen Smile
Danke auch an jg für die schnelle Antwort!


RE: Oberfläche von SubVI in Main Programm einbinden - GerdW - 16.11.2016 10:00

Hallo sara,

Zitat:Wie kriege ich diese "türkisenen Bausteine" in der SubVI erstellt?
- Rechtsklick auf die im Main-VI-Blockdiagramm erstellte Referenz -> Erstelle -> Control
- Dieses Control in dein subVI verschieben…


RE: Oberfläche von SubVI in Main Programm einbinden - C.Maier - 16.11.2016 10:34

Danke für die Anregungen. Habe dann mal meinen Vorschlag überarbeitet Wink


RE: Oberfläche von SubVI in Main Programm einbinden - sara2211 - 16.11.2016 11:57

Vielen Dank für die Tipps und das Beispiel.
Mittlerweile bin ich soweit gekommen (siehe Anhang)
Das mit den Clustern macht das ganze viel übersichtlicher - wenn mal alles funktioniert werde ich mich an diese definitiv machen.

Ein Problem besteht allerdings noch:
Die Auswahl der Spannungen, Lastart/Netzteil habe ich glaube ich geschafft, mir fehlt nur noch das Klicken von einem Button (Bestätigungen). Hier komme ich nicht weiter. Ich habe zwei Vorangehensweisen versucht, einmal am Beispiel von C. orientiert (siehe "Auswahl der Voltage under test") und einmal an der Vorangehensweise der Auswahl von den Spannungen (siehe "Testbedingungen festgelegt"). Leider sind beide Arten nicht wirklich zufriedenstellend. Bei "Auswahl der Voltage under test" wird die Auswahl auf der Main Oberfläche nicht aktivert, sondern nur bei der Bedingungsauswahl Oberfläche. Wenn ich aber so vorgehe wie bei den Spannungen, kann ich diesen "türkisenen Baustein" von "Auswahl Voltage under Test" nicht mit den Auswahlfunktionen verbinden, da ich zwei Anschlüsse mit unterschiedlichem Typ verbinde.
Ich vermute mal die Herangehensweise von C. ist die Richtige, allerdings ist meine Verknüpfung vom Blockschaltbild mit den Oberflächenelementen wohl nicht gelungen (obwohl das Blockschaltbildelement in Main mit dem Ausgang von meiner SubVI verbunden ist).
Wie schaffe ich die Verknüpfung richtig?


RE: Oberfläche von SubVI in Main Programm einbinden - GerdW - 16.11.2016 12:45

Hallo sara,

Zitat:Bei "Auswahl der Voltage under test" wird die Auswahl auf der Main Oberfläche nicht aktivert, sondern nur bei der Bedingungsauswahl Oberfläche.
Weil du es so programmiert hast: du hast eine Property des Bedienelements im subVI verwendet!

Zitat:Wenn ich aber so vorgehe wie bei den Spannungen, kann ich diesen "türkisenen Baustein" von "Auswahl Voltage under Test" nicht mit den Auswahlfunktionen verbinden, da ich zwei Anschlüsse mit unterschiedlichem Typ verbinde.
Wie schaffe ich die Verknüpfung richtig?
Du musst eine Referenz auf das Bedienelement an dein subVI weiterreichen - nicht den Wert aus diesem Bedienelement!


RE: Oberfläche von SubVI in Main Programm einbinden - C.Maier - 16.11.2016 12:57

Du musst von deinem Bedienelement aus der Main eine Referenz zum SubVI weiterleiten.

Im SubVI leitest du diese Referenz auf einen Eigenschaftsknoten.
[attachment=56919]

Du benutzt bisher einen Eigenschaftsknoten mit der Referenz aus dem SubVI. Du musst also eine Referenz mit einem Eigenschaftsknoten verbinden damit die 2 Funktionen zusammengehören.