LabVIEWForum.de
SubVI richtig verwenden. - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: SubVI richtig verwenden. (/Thread-SubVI-richtig-verwenden)

Seiten: 1 2


SubVI richtig verwenden. - RST - 31.08.2010 08:04

Hallo,

ich bin gerade dabei mein erstes groesseres Programm zu schreiben und habe somit das erste mal mit SubVIs zu tun.
Ich habe folgendes Problem: ueber VISA lese ich Daten von einem Geraet aus. Wenn ich das SubVI alleine ausfuehre klappt das super.
Im Hauptprogramm sollen nun diese Werte auch angezeigt werden. Leider kann ich das SubVI nicht in einer Schleife ausfuehren um das aktualisieren der Messwerte zu erzwingen, da ich im SubVI am Ende das Messgeraet beende.
Gibt es denn eine Moeglichkeit, dass die Messwerte trotzdem staendig aktualisiert werden?
Mir wuerden da im Moment nur globale Variablen einfallen, aber da es sich um 36 Messwerte handelt waere das wohl etwas uebertrieben...
Ausserdem verwende ich das selbe SubVI mehrfach in parallel laufenden Schleifen. Koennte das zu Problemen fuehren?
Verstehe leider noch nciht genau wie das mit den SubVIs funktioniert und waere fuer Hilfe sehr dankbar.

Wuerde mich ueber eine Antwort sehr freuen.

MFG
RST.


SubVI richtig verwenden. - GerdW - 31.08.2010 08:13

Hallo RST,

wenn du wissen willst, wie subVIs funktionieren: gucke dir doch mal die DAQmx-Funktionen an, das sind (meist) auch nur subVIs...

Zur Kommunikation mit einem MainVI: man könnte globale Variablen nehmen. Die können aber zu Problemen führen (Race-Conditions). Deshalb solltest du dich eher früher als später mit Konzepten wie Queues oder FGV (FunctionalGlobalVariables aka LV2.style globals) auseinander setzen!

Zu allem findest du Beispiele in den LV-Examples...


SubVI richtig verwenden. - RST - 31.08.2010 09:42

Hallo GerdW,

danke fuer deine Antwort.
Ich werde mich mal in die Themen einlesen!
Ich hatte Probleme mit meinem Hauptprogramm und habe jetzt mal die SubVIs die parallel ablaufen einfach umbenannt. Also statt immer dem selben VI habe ich praktisch das selbe unter verschiedenen Namen verwendet. Muss man das so machen, oder gibt es da eine andere Moeglichkeit? Jetzt laeuft es wie gewollt, allerdings habe ich jetzt halt SubVI1, SubVI2 usw. obwohl es eigentlich immer die selben sind.
Das muss doch sinnvoller auch gehen.
Wuerde mich ueber weitere Hilfe sehr freuen.

Viele Gruesse,

RST.


SubVI richtig verwenden. - Matze - 31.08.2010 09:47

Hallo,

ja das geht ordentlicher. Der Sinn der SubVIs ist u.a. gerade die Wiederverwendbarkeit.
SOnst wäre der Wartungsaufwand enorm.

Müssen die SubVIs ablauf-invariant ausgeführt werden, kannst du das im SubVI unter "Datei ->VI-Einstellungen -> Auswahl: Ausführung" einstellen


SubVI richtig verwenden. - GerdW - 31.08.2010 09:51

Hallo RST,

ergänzend zu Mecha's Antwort:
das hängt davon ab, wie die subVIs sich verhalten sollen. Ablaufinvarianz (Reentrant) erlaubt mehrere Instanzen, die voneinander unabhängigen Speicher benutzen - die subVIs beeinflussen sich nicht gegenseitig. Muss man aber auch entsprechend planen beim Programmieren! Außerdem gibt es noch die Möglichkeit, sog. Templates zu benutzen...

Da gibt es noch viel zu lesen für dich. NI bietet auch (kostenlose) Einführungskurse, z.B. hier.


SubVI richtig verwenden. - RST - 01.09.2010 01:17

Danke fuer eure Hilfe werd das spaeter gleich aml ausprobieren und bescheid geben ob es geklappt hat.

Viele Gruesse,

RST.


SubVI richtig verwenden. - RST - 01.09.2010 06:27

Also ich habe es mal probiert und die SubVIs als Reentrant eingestellt. leider zeigt immer eins der Geraete dann ein seltsames Verhalten, dies wechselt sich komischerweise immer ab. Nunja da ich unter Zeitdruck stehe, werde ich einfach die Moeglichkeit mit den verschieden benannten SubVIs nutzen.
Damit waere das Problem geloest.
Danke fuer den Tip mit der Schulung. Die Sache ist die, dass ich das in meinem Praktikum brauche. Hatte zwar mal an meiner Uni eine Einfuehrung in LabView aber das ging nicht so weit, dass ich da grossartig mit SubVIs gearbeitet haette. Konnte diese gerade mal erstellen und die Konnektoren festlegen.
Das Praktikum geht nicht mehr so lange, dass sich eine Schulung noch lohnen wuerdeWink
Versuche einfach das Problem so einfach wie moeglich zu loesen.
Die Werte soll ich nun doch in einem Graphen anzeigen lassen. Ist es ein Problem diesen im SubVI zu erstellen und dann per GV ins Main VI zu uebergeben?

Vielen Dank fuer eure Hilfe!

RST


SubVI richtig verwenden. - Y-P - 01.09.2010 06:52

Mit einer globalen Variablen würde ich ihn nicht heraus übergeben. Entwerder machst Du das per Referenz (wenn Du das HauptVI während dem Ablauf des SubVIs aktualisieren willst). Oder Du übergibst die Werte nach dem Ablauf per Indicator an Dein HauptVI.

Grüße nach Böblingen. Wink

Gruß Markus


SubVI richtig verwenden. - RST - 06.09.2010 01:14

Hallo Markus,

danke fuer den Tip. Mit Referenzen wuerde ich es gern mal probieren, leider habe ich da noch kein gutes Beispiel dazu gefunden um das Vorgehen zu verstehen. Hast du da vielleicht ein einfach zu verstehendes Beispiel indem aus einem SubVI Daten kontinuierlich an das Main VI uebergeben werden?

Viele Gruesse zurueck nach HerrenbergWink

RST


SubVI richtig verwenden. - Y-P - 06.09.2010 08:38

Hier ein Bsp.. Statt "Visible" nimmst Du halt "Value":
[attachment=29220]
Lv85_img
[attachment=29221]
Lv85_img

Gruß Markus