LabVIEWForum.de - SubVI im Hauptprogramm

LabVIEWForum.de

Normale Version: SubVI im Hauptprogramm
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ich hab hier im Forum schon mehrmals tolle Antworten bekommen, u.a. zu den SubVI's in dem sich in der Anlage befindlichen Hauptprogramms.
Genau um dieses Hauptprogramm geht es. In diesem befindet sich ein SubVI zur Kennliniendarstellung.

Starte ich das Hauptprogramm, werden zwar die Kennlinienwerte im XY-Graph des SubVI's angezeigt, jedoch nicht im Graph des Hauptprogramms.

Ansonsten läuft das Programm (getestet im Debug-Modus).

Kann mir jemand einen Tip geben, wie die Kennlinienwerte auch im Hauptprogramm angezeigt werden können.

Im Anhang befindet sich das Hauptprogramm an erster Stelle, gefolgt vom SubVI.


Gruß
Dominik
Das geht mit Referenzen.

Hier ein Bsp. (mit Property visible), Du musst halt die Property "Value" nehmen:
[attachment=30072]
Lv86_img
[attachment=30071]
Lv86_img

Gruß Markus
Markus hat dir deine Frage ja schon beantwortet. Schön, dann hast du auch dieses Problem gelöst.
Smile

Ich möchte dir lediglich den Tipp geben, dass die inflationäre Anwendung von lokalen Variablen nicht anzuraten ist und das Datenflussprinzip unterwandert. In den Codeausschnitten könnte man sämtliche lokale Variablen durch sinnvolle Signalführung (Verdrahtung) ersetzen.

Such einfach mal nach lokale Variable hier im Forum und du wirst einige Themen finden in denen erklärt wird, weshalb (racing condition ftw!) diese möglichst vermieden werden sollen, sofern es möglich ist (geht halt nicht immer).

Grüße,
//Tobias
Was Tobias schreibt ist korrekt, wobei es in deinem Falls nicht zu Race-Conditions kommt, wenn ich es richtig sehe. Dennoch ist das direkte Verdrahten immer der bessere Weg.

Was mich aber interessieren würde: Wieso erstellst du grundsätzlich eigene Express-VIs anstelle der klassischen SubVIs?
Ich weiß, dass die ExpressVIs von NI einen relativ großen Overhead haben, u.a. auch deshalb, weil die ganzen Dialoge integriert sind, um den LabVIEW-Code zu generieren. Ich vermute, den Overhead haben eigene Express-VIs auch.
Und das Blockdiagramm wird natürlich stark vergrößert, da die Express-VIs viel mehr Platz in Anspruch nehmen. Meiner Meinung nach sinkt die Übersichtlichkeit hier deutlich.

Ich selbst habe noch nie eigene Express-VIs erstellen müssen.

Gibst du die VIs an Kunden, die einfache Konfigurationsmöglichkeiten haben sollen oder was ist der genaue Grund?
Ich lerne hier immer wieder gerne dazu.Wink
' schrieb:Was mich aber interessieren würde: Wieso erstellst du grundsätzlich eigene Express-VIs anstelle der klassischen SubVIs?

Ich glaube da gibt's ein Missverständnis. Das in den Screenshots sind keine ExpressVIs (die wären Blau), sondern nur anders dargestellte SubVIs (einfach mal den Haken bei "View as Icon" wegmachen). Diese Darstellung, hätte ihre Berechtigung, wenn dabei die Conntectornamen mit angezeigt werden, so sind's nur leicht anders verdrahtete und größere SubVIs.
Ja. Macmarvin hat Recht. Es sind einfach nur anders dargestellte SubVI's. Diese gebe ich nicht an Kunden weiter, sondern es handelt sich um ein FH-Projekt.

Werde gleich mal die Referenzvariante ausprobieren.


Gruß
Dominik
Das Problem mit den Messwerten im Hauptprogramm habe ich über Referenzen gelöst.

Jetzt ist doch noch ein kleines Problem aufgetreten:

Das Programm wechselt nicht vom SubVI "Kennlinie" zum nächsten Sequenzabschnitt mit dem SubVI "ISEL-Ansteuerung".
Die While-Schleife im SubVI wird nicht abgebrochen.
Hab schon verschiedene Abbruchmöglichkeiten durchgespielt, aber ich krieg die While-Schleife im SubVI nicht zum Stoppen.

Hat jemand ne Idee?

Im Anhang befindet sich das SubVI an zweiter Stelle.

Recht, recht herzlichen Dank für Eure Hilfe schon mal im Vorraus. Das Projekt nähert sich dem Ende.
Ohne Eure Hilfe hätte ich so manches Problem nicht lösen können. Also, toll.

Gruß
Dominik
Hallo dom,

ich vermute mal, dein subVI ist im rechten Bild dargestellt.

Das Problem sind die Werte, die du zum Schleifenabbruch vergleichst: du vergleichst den Timer-Ausgangswert mit "2000". Da wird immer "ungleich"/FALSE rauskommen und deine Schleife ewig laufen. Warum das so ist, kannst du in der Kontexthilfe zur Wait-Funktion lesen.

Was willst du hier überhaupt erreichen? Erst 2s warten und dann kontrollieren, ob auch wirklich 2s gewartet wurde???
Hallo Gerd,

ich wollte damit einfach erreichen, dass die Schleife abgebrochen wird. Funktioniert aber nicht.

Kannst du mir eine andere Variante anbieten?

Gruß
Dominik
Ich hab das Problem gelöst mit zwei Timern und Schieberegistern. Diese Variante fand ich im LabVIEW-Forum.

Eine Sache ist mir noch unklar. Die Messwerte im Graph verschwinden nach jedem Aufruf des SubVI's "Kennlinie". Es sollte jedoch im Graph des Hauptprogramms eine Kennlinie sichtbar sein.

Was muss ich noch tun, sodass auch die Messwerte im Graph abgespeichert sind.

Gruß
Dominik
Seiten: 1 2
Referenz-URLs