INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Problem aufruf SubVI mittels Referenz



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.05.2010, 13:10
Beitrag #1

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Problem aufruf SubVI mittels Referenz
Hallo zusammen

Ich habe für ein grösseres Programm etwas gesucht um eine nicht konstante Anzahl offener Instanzen eines SubVIs laufen zu lassen.

Bin nun auf die Ablaufinvarianten VIs gestossen und will den Datenverkehr über Queues regeln.

Hier besteht ein Problem, ich habe hierzu ein kleines Beispiel das nur ein SubVI starten soll kreiiert, das Problem scheint auch im kleinen Massstab existent, ich wäre froh, wenn sich jemand mein Beispiel ansehen und mir sagen könnte ob ich etwas grundlegendes falsch mache.

Das main-VI schreibt eine Zufallszahl in eine Queue (q1) danach soll das SubVI aufgerufen werden, welches den Wert aus q1 nach q2 umlädt. Schliesslich soll im Main-VI q2 ausgelesen werden.
Wenn das SubVI einfach als Block eingebaut wird funktioniert es, es muss also etwas mit der Referenzierung nicht in Ordnung sein.

Besten Dank und freundliche Grüsse

Andreasser


Angehängte Datei(en)
Sonstige .vi  test_main.vi (Größe: 15,22 KB / Downloads: 305)

Sonstige .vi  test_subvi.vi (Größe: 8,43 KB / Downloads: 263)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.05.2010, 14:08
Beitrag #2

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Problem aufruf SubVI mittels Referenz
...LV Version 8.5.1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.05.2010, 18:54
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Problem aufruf SubVI mittels Referenz
' schrieb:Das main-VI schreibt eine Zufallszahl in eine Queue (q1) danach soll das SubVI aufgerufen werden, welches den Wert aus q1 nach q2 umlädt. Schliesslich soll im Main-VI q2 ausgelesen werden.
Eigentlich sollte das alles so richtig sein. Beachte aber, dass zu jedem "Queue anfordern" ein "Queue freigeben" vorhanden sein muss.

Zitat:Wenn das SubVI einfach als Block eingebaut wird funktioniert es, es muss also etwas mit der Referenzierung nicht in Ordnung sein.
Also ich finde ja, du hast alles richtig gemacht. Allerdings funktioniert dein Programm tatsächlich nicht. Warum, kann ich mir jetzt nicht erklären.

Ich muss allerdings dazu sagen, ich selbst mach das nie so. Ich hab eine FGV, in der die Queue erstellt und gelöscht wird. Wer die Queue braucht, holt sich die Referenz der Queue aus der FGV. Und siehe da, auch dein Muster geht dann wieder.


Angehängte Datei(en)
Sonstige .vi  Unbenannt_1__SubVI_.vi (Größe: 9,62 KB / Downloads: 284)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.05.2010, 10:27
Beitrag #4

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Problem aufruf SubVI mittels Referenz
Du machst zwei Fehler in deiner Testapplikation. Ersten wartest du bis das Sub VI fertig ist. Da du aber danach das Sub VI stoppst, wird die Queue Referenz gelöscht und du erzeugst im Main VI eine neue Queue mit dem Namen q2 ohne Inhalt. Und, wenn ich mich nicht irre, ist eine Queue nur innerhalb eines Projekts in unterschiedlichen Instanzen verfügbar.

Gruß, abrissbirne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.05.2010, 10:36
Beitrag #5

Andreasser Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Oct 2009

8.5
-
de

2500
Schweiz
Problem aufruf SubVI mittels Referenz
Wow, super!


@IchSelbst: Danke für deinen Input, ist auch ne gute Möglichkeit, werd ich mir für die Zukunft merken. (die "Queue freigeben" habe ich im grossen Proggi drinWink

@abrissbirne:Ich bin gestern schier verzweifelt, hab alles hundert mal durchgedacht und bin trotzdem nicht drauf gekommen aber wenn du das so sagst ist es mehr als einleuchtend.

Funktioniert jetzt tadellos auch im grösseren Programm

Danke euch beiden!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.05.2010, 10:37
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Problem aufruf SubVI mittels Referenz
' schrieb:und du erzeugst im Main VI eine neue Queue mit dem Namen q2 ohne Inhalt
Warum aber funktioniert dann die Queue Q1? Damit der Queue-Inhalt trotz Freigeben der Queue-Referenz nicht verloren geht, gibt es ja den Eingang "Eliminieren (f)", der standardmäßig auf false steht.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.05.2010, 10:44 (Dieser Beitrag wurde zuletzt bearbeitet: 26.05.2010 10:48 von IchSelbst.)
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Problem aufruf SubVI mittels Referenz
' schrieb:(die "Queue freigeben" habe ich im grossen Proggi drinWink
Das zählt nicht (naja, zumindest bei mir nicht)!

Zu jeden einzelnen "Queue anfordern" muss ein "Queue freigeben" vorhanden sein. Wenn du also sieben Elemente "Queue anfordern" hast, brauchst du auch sieben "Queue freigeben". Guckst du auch Hilfe:

Zitat:Mit der Funktion Queue anfordern kann eine Referenz auf eine bestimmte Queue mehrfach abgerufen werden. Um eine Queue zu eliminieren, ist entweder die Funktion "Queue freigeben" so oft aufzurufen, wie die Queue angefordert wurde, oder es sind alle VIs abzubrechen, in denen die Queue-Refnum verwendet wird.

Zwar wird die Referenz auch beim Beenden eines VIs automatisch gelöscht (guckst du Hilfe) - das ist aber kein guter Programmierstil. Möglicherweise wird der Queue-Inhalt deswegen gelöscht, weil das VI über den VI-Server (also per Referenz) aufgerufen wird.

Nachtrag:
Es kann natürlich sein, dass eine Queue grundsätzlich eliminiert wird, wenn keine einzige Referenz mehr besteht - obwohl noch Daten in der Queue liegen. Das wäre aber ein grenzwertiges Feature.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.05.2010, 12:24
Beitrag #8

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Problem aufruf SubVI mittels Referenz
' schrieb:Warum aber funktioniert dann die Queue Q1?
Stimmt, Punkt zwei sollte also funktionieren.

' schrieb:Damit der Queue-Inhalt trotz Freigeben der Queue-Referenz nicht verloren geht, gibt es ja den Eingang "Eliminieren (f)", der standardmäßig auf false steht.
LV Hilfe sagt das: "Diese Bytes werden automatisch beim Stopp des VIs freigegeben."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Übergabe einer Referenz vom HauptVI in das SubVI alan 1 3.757 09.03.2015 16:11
Letzter Beitrag: jg
  Aufruf verschiedener SubVI´s ElektroAnne 3 5.617 01.10.2014 13:58
Letzter Beitrag: GerdW
  SubVi - Referenz Refnum vescon 2 5.298 01.10.2014 08:44
Letzter Beitrag: vescon
  Array Element als Referenz von Referenz Benjamin Fuchs 15 20.793 18.02.2014 11:56
Letzter Beitrag: RabenFlug
  SubVI Referenz blinkt ABER keine Fehlermeldung Blinky_Bill 7 5.817 28.11.2013 08:12
Letzter Beitrag: Blinky_Bill
  Aufruf über Referenz finalr 24 19.440 02.09.2013 20:07
Letzter Beitrag: finalr

Gehe zu: