LabVIEWForum.de
Gleiches VI mehrfach starten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Gleiches VI mehrfach starten (/Thread-Gleiches-VI-mehrfach-starten)



Gleiches VI mehrfach starten - DarthZiu - 23.08.2006 08:43

Heho.

Ich habe ein VI, dass ich mehrfach aus einem anderen VI starten möchte. Per Invoke Node. Das klappt auch bei einer Instanz der VI wunderbar.
Wenn ich jedoch die VI nocheinmal parallel dazu starten möchte, kommt die Fehlermeldung
"Error 1000 - LabVIEW: The VI is not in a state compatible with this operation."

Was muss ich machen um die gleiche VI mehrfach ausführen zu können?


Gleiches VI mehrfach starten - A.Berndsen - 23.08.2006 08:57

Hallo,

Du musst in den VI-Einstellungen. (Datei -> VI-Einstellungen)
Im Unterpunkt "Ausführung" den Punkt "Ablaufinvariante Ausführung" auswählen, dann geht's.

Gruß
Andreas


Gleiches VI mehrfach starten - DarthZiu - 25.08.2006 09:20

Danke für die fixe Antwort, aber das behebt mein Problem nicht.

"Ablaufinvariante Ausführung" wird wohl in meiner englischen Version (8.0) "Reentrant Execution" sein. Das bedeutet doch aber nicht, dass ich mehrere Instanzen dieser VI offen haben kann. Oder?


Gleiches VI mehrfach starten - eg - 25.08.2006 09:26

Das, was du brauchst heisst .vit

Da kannst du ein VI machen und quasi Kopien davon starten. In LV gibt es ein Beispiel dazu mit zwei Gauges. Suche mal das Beispiel "Subpanel Templates.vi" in Examples von LV.

Gruss


Gleiches VI mehrfach starten - jg - 25.08.2006 10:10

<div align="left">Hallo,

du hast recht, "Ablaufinvariante Ausführung" ist "Reentrant Execution"!

Meines Wissens nach sollte es damit möglich sein, ein Vi mehrfach parallel zu öffnen.

Mein Vorschlag, einfach mal probieren!!

MfG, Jens</div>


Gleiches VI mehrfach starten - Lucki - 25.08.2006 10:38

Das Einfachste ist, daß, wenn Du das VI drei mal aufrufen möchtest, Du statt dessen drei indentische Kopien des VIs mit unterschiedlichem Namen verwendest. Damit umgehst Du das Problem des mehrfachen Aufrufs und es funktioniert totsicher.
@eugen
das ist vielleicht dasselbse was Du auch schon gesagt hat, mich irritiert nur wenn Du schreibst:
Zitat:Das, was du brauchst heisst .vit
Für das Erzeugen identischer Kopien braucht man doch schlichtweg gar nichts...


Gleiches VI mehrfach starten - DarthZiu - 25.08.2006 11:17

@Jens G
So habe ich es ja probiert, aber dann kommt die Fehlermeldung, die ich im ersten Beitrag beschrieben habe.

@Lucki
Das habe ich auch schon in Erwägung gezogen, ist mir aber zu statisch. Muss ja auch dynamisch gehen, oder?

Zum Verständnis ist hier mal die VI, mit der ich beliebig viele Instanzen einer anderen VI öffnen möchte.[attachment=3078]


Gleiches VI mehrfach starten - DoubleU - 25.08.2006 11:25

' schrieb:Danke für die fixe Antwort, aber das behebt mein Problem nicht.

"Ablaufinvariante Ausführung" wird wohl in meiner englischen Version (8.0) "Reentrant Execution" sein. Das bedeutet doch aber nicht, dass ich mehrere Instanzen dieser VI offen haben kann. Oder?
Hi,
doch genau das bedeudet es. Das deutsche Wort scheint mir auch nicht gerade die beste Wahl. Reentrant Execution, wiedereinkehrend oder so ähnlich.
Das heißt im klartext, du kannst ein VI wieder und wieder starten auch wenn eine ältere Instanz noch läuft. Es wird jedes mal im Speicher neue Variablen, etc.. dafür angelegt!
Während bei not-reentrant (normalen) VIs, das mehrfache starten nur nacheinander möglich ist. Kommt LabVIEW an das VI (welches bereits läuft) im Blockdiagramm wartet es bis die offene Instanz fertig abgelaufen ist und startet es erst dann. Alle Schieberegister, Speicherbelegung, etc bleiben erhalten.


.....ups war wohl zu langsam...


So und jetzt zu deinem eigentlichen ProblemWink

du machst eine Referenz für das VI auf, hier macht er standardmäßig immer die Referenz zum selben VI auf, du brauchst aber verschiedene für die reentrant möglichkeit!

Das machst du in dem du bei open reference eine Option mit übergibst - in der online Hilfe siehst du die Opitonen die du hast.

Das wäre passend:
0x08 Prepare for reentrant run. Reserves the target VI so it cannot be edited and if the target VI is reentrant, allocates a dedicated parallel data space for this VI reference. If the target VI is not reentrant, the function returns an error.

hoffe dir geholfen zu haben und es läuft damit.

Gruss
Uli


Gleiches VI mehrfach starten - DarthZiu - 25.08.2006 11:31

Unendlich geil ... das klappt wirklich mit der Option 0x08.

Obwohl die ni-Doku sagt, dass es eigentlich nicht klappen kann: NI Doku

Aber das hängt vielleicht mit den Versionsunterschieden zusammen? Habe 8.0 und das Dokument beschreibt für 7.1.