LabVIEWForum.de - VI samt SubVis und globalen Variablen duplizieren?

LabVIEWForum.de

Normale Version: VI samt SubVis und globalen Variablen duplizieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo allerseits, ich schildere zunächst mein Problem:
Also ich habe ein funktionierendes LVprogramm zur Datenerfassung und Steuerung eines Mess-Platine, das über USB angebunden ist. Das Vi enthält rund 15 SubVis und rund 40 globaler Variablen, die zum Datenaustausch unter den VIs dienen.
Jetzt möchte ich ein 2es gleiches Messboard parallel betreiben(später insgesamt 4Boards). Das soll über ein zentrales VI geschehen, welches das vorherige "Haupt"VI und das eigentlich gleiche VI für das 2te Board dann als subVi verwaltet. Beim VI für das 2te Board könnte ich natürlich einfach alle subVIs und globale Variablen umbenenen auf z.B. "xxxxx2.vi" + alle Verlinkungen zw. gl Var und Blockdiagramm neu festlegen und somit parallel ausführbar machen. Außerdem kann ich einzenes Programm zu einer ".exe" compilieren, was allerdings große Einbusen beim Bediencomfort bedeuten würde und für mich nur die 1ste Möglichkeit in Frage kommt.
Die Frage:
Kann man dieses Vorhaben besser lösen bzw. elegantere Mthode vewenden? Vll. gibt in LabVIEW eine Möglichkeit die VIs und globale Variablen mit gleichen Namen voneinander "virtuell" zu kapseln, damit diese parallel ausfürbar werden?

Ich danke im voraus für eine Hilfestellung

grüße
ed123
Idee, aber ohne Gewähr, ob das wirklich hinhaut.

Haupt-VI (und mglw. alle Sub-VI's) auf "reentrant" stellen (d.h. sie dürfen mehrfach aufgerufen werden und laufen dann auch in verschiedenen Speicherbereichen). LV erstellt dann automatisch "clone"-VI's.

Weiss jetzt nicht genau, ob das schon langt, oder ob du dann noch Aufrufe per VI-Server machen müsstest. Bitte ausprobieren.

MfG, Jens
Danke für die Antwort!

Ich muss aber da direkt fragen wo man "reentrant" finden kann. Ich habe ein wenig gesucht und so etwas weder in VI-Einstelluungen noch in Werkzeuge-->Optionen gefunden. Das kann aber auch an meiner deutschen Version von LV liegen. Wenn du mir da ein Tip geben könntest? Rolleyes
Das findest Du in den VI-Eigenschaften. Im FP Rechtsklick auf das Icon und dann VI-Eigenschaften (Properties) auswählen. Dann auf "Execution", bei Dir wohl "Ausführung" oder so ähnlich.... aber Du siehst es auch im Screenshot.
Da kannst Du dann ein Häkchen bei "reentrant Execution" machen. Wie es bei Dir heißt würde mich jetzt aber auch interessieren. Big Grin

Gruß Markus

' schrieb:Danke für die Antwort!

Ich muss aber da direkt fragen wo man "reentrant" finden kann. Ich habe ein wenig gesucht und so etwas weder in VI-Einstelluungen noch in Werkzeuge-->Optionen gefunden. Das kann aber auch an meiner deutschen Version von LV liegen. Wenn du mir da ein Tip geben könntest? Rolleyes
' schrieb:Da kannst Du dann ein Häkchen bei "reentrant Execution" machen. Wie es bei Dir heißt würde mich jetzt aber auch interessieren. Big Grin

Ich glaube, "Ausführungsinvariant"
' schrieb:Ich glaube, "Ausführungsinvariant"

Die genaue Bezeichnung wäre "Ablaufinvariante Ausführung".
Aber mit dem Tipp von Achim sollte man auch ans Ziel kommen.
@ Y-P
danke für den Hinweis.
Habe vorher die "ablaufinvariante Ausführung" zwar gesehen, konnte aber nicht direkt etwas darunter vorstellen. Habe es auch gleich ausprobiert, ist echt eine feine Möglichkeit gleiches VI mit verschiedenen Instanzen gleichzeitig auszuführenSmile

Jedoch brigt es mich nur zum teil weiter. Die "Global.vi" haben z.B keine Einstellungen zur Ausführung (logischerweise), da müsste ich mir noch etwas überlegen. Außerdem macht eine Semaphore eine fehlermeldung und bricht das Programm ab bei paraller Ausführung, könnte aber auch andere Ursachen haben. Werde aber weiter testen und hier posten falls ich dann doch eine elegante Lösung finde.

Aber der Tip ist super auch für meine andere Programme!
Die Community hier im Forum ist top, habe mit solch schneller Hilfe nicht gerechnet Dais

grüße ed123

Edit:
Probleme machen die gl Variablen: Sobald ein VI eine globale Variable beinhaltet und von 2 Instanzen gleichzeitig als Clone ausgeführt wird entsteht ein Konflikt beim schreiben auf diese "nur eine" globale Variable, diese wird anscheinend nicht mit "geclont"
Referenz-URLs