LabVIEWForum.de - Instanzen identischer SubVi's, Verhalten unerklärbar

LabVIEWForum.de

Normale Version: Instanzen identischer SubVi's, Verhalten unerklärbar
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich habe hier ein mehr oder weniger kleineres Problem, hauptsächlich weil ich die Aktion von Labview nicht verstehe.

Ich habe ein Subvi erstellt mit folgenden Eingängen:

N: Schleifenzählwert
"Elem" : Integerzahl

Realisiert wird in diesem Subvi:
1. Ab dem Wert von Elem wird Elem N-mal inkrementiert
2. Speicherung der Werte in einem Array von Elem bis (Elem+N)
3. Löschung des Arrays auf Buttondruck

Mit hinblick auf mein Programm realisiert das SubVi, dass Koordinaten eines Rechtecks das gezeichnet wird erkannt werden. Hier sind Anfangs- & Endpunkt des Rechtecks bekannt, dabei gibt es 4 SubVis die konstante Koordinaten N mal übernehmen:
Yoben - Y der oberen Linie
Yunten - Y der unteren Linie
Xlinks - X der linken Linie
Xrechts - X der rechten Linie

dazu brauche ich dann noch die inkrement Subvi's wodurch ich mir später die Koordinaten aller Linien des Rechtecks zusammensuchen kann.

Problem:
Das Subvi des Y-inkrements scheint das Subvi des X-inkrements nachzuahmen Blink anstatt mit den eigens gegeben Eingangswerten N und Elem zu inkrementieren, macht es das gleiche wie das Subvi des X-inkrements.
Alle Eingänge habe ich zudem Überprüft und Verhalten sich wie sie sollten.

Ich werde jetzt das Projekt so aufbauen dass innerhalb der While und Eventstruktur des kleinen Paint Programm nichts mehr berechnet wird, eventuell schafft dies Abhilfe.

[attachment=53678]
Wenn du einer Erklärung/Lösung willst, dann lade bitte deine VIs hoch.

Gruß, Jens
Danke habe ich ganz vergessen

Edit
Logisch gibt das Ärger, durch die Feedback-Node in deinen SubVIs erzeugst du einen VI-internen Speicher. Solange das SubVI aber nicht als reentrant definiert ist, existiert dieser Zwischenspeicher auch nur einmal und wird somit zwischen den Aufrufen für deine X- und Y-Arrays ausgetauscht.

Oder anders, ein Nicht-Reentrant VI (und das ist der Standard in LabVIEW) ist nur 1x im Speicher vorhanden und kann nicht mehrmals parallel ausgeführt werden, auch wenn es vielleicht so programmiert ist.

Lösung: Definiere die beiden SubVIs aus deinem Screenshot als reentrant (VI-Properties -> Execution).

Außerdem würde ich, da du unbedingt auf lokale Variable setzt, noch dafür sorgen, dass auf jeden Fall aktuelle Werte im Abschnitt deines Screenshots verwendet werden, z.B. so:
[attachment=53679]
THINK Dataflow...

Gruß, Jens

EDIT: Oder anders: du hast nicht unterschiedliche Instanzen, solange deine SubVIs auf non-reentrant eingestellt sind.
Ok danke, dass mit dem Zwischenspeicher war mir nicht bewusst Big Grin
Edit: gelöscht

hat sich erledigt Smile
Referenz-URLs