LabVIEWForum.de - LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende

LabVIEWForum.de

Normale Version: LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo miteinder

Ich habe ein Subvi erstellt, in welchem ich Signalwerte in einem Array zwischenspeichere.
Nun hat LV (Version 8.6) Probleme damit, wenn ich das Subvi zweimal verwende. Sprich es verwendet jeweils in beiden Subvi die eigenen und die Daten des anderen (Subvi's).

Hat jemand eine Idee an was das liegen kann?

Anbei das Subvi.


Bin für jeden Tipp dankbar!

Gruss
angori
Hallo,

also schön ist dei code nicht.Smile

Aber das war nicht deine Frage.

Versuch mal Bei den Eigenschaften deines Vis (Datei/VI einstellungen ) Kategorie (Ausführung), Ablaufinvariante Ausführung zu wählen.
Vielleicht gehts damit.

Grüße
' schrieb:also schön ist dei code nicht.Smile
Vor allem, wenn man das VI einmal auf die Standard-Form eines FGV reduziert:
[attachment=21899]

Gruß, Jens
Hallo Besten Dank für den Tipp..doch es geht leider immer noch nicht...
Lad mal ein Bsp-VI und das SubVI hoch, wo es nicht so funktioniert, wie du willst.

Gruß, Jens
Anbei ein Beispiel. Das Problem taucht nicht immer auf .. aber die Variable valueIN in buffer.vi scheint wohl Probleme zu machen. Auf jeden Fall sollte das eine Array immer nur 1 und das andere 0 enthalten...aber irgendwie werden die Werte durchmischt.

Danke schon mal für die Bemühungen.
Main.Vi
dein Taster First sitzt auserhalb der schleife. wenn der True ist und du das programm startest bleibt die variable am schleifeneingang immer true egal ob dur "First" zurücksetzt oder nicht.
Pack das in die schleife.
Mach aus der Konstante die an dem Bedingungsanschlus auch einen taster, sonst läuft die ewig, zumindest solange du LV nicht mit dem Roten Knopf abwürgst (Was mann auser im Fehlerfall sowiso nie machen sollte).
Ändere dein Schaltferhalten des Tasters "First" (rechtsklick-schaltverhalten) dann musst du ihn nicht so furchtbar über eine lokale Variable zurücksetzten.

Buffer VI
stell es so ein wie ich es schon geschreiben hab (Ablaufinvariant) dann gehts.

Gruß Achimedes
' schrieb:Hallo Besten Dank für den Tipp..doch es geht leider immer noch nicht...
Und wieso wurde keiner der Tipps umgesetzt?
Ich hab dir deinen Code verbessert, und Achimedes hat dir den wichtigen Hinweis mit der "Reentrant"-Funktionalität gegeben.
Nix, aber dann kommt die Aussage, geht immer noch nicht.Sad

Mal ein wenig LabVIEW-Hintergrund:

Ein normales VI existiert (zusammen mit seinem VI-eigenen Speicherbereich) zur Laufzeit nur einmal im Speicher von LabVIEW. Somit kann das, was du vorhast, nicht funktionieren. Beide SubVI-Aufrufe greifen auf denselben Speicherbereich zu, einmal setzt du einen Wert 0, dann gleich wieder 1, das kann nicht gehen (ganz zu schweigen von der dauernden Initialiserung, die du durchführst, dazu ist zu sagen: DATENFLUSS!).

Dieses Verhalten ist sehr nützlich, z.B. bei der Erstellung sogenannter "Funktionaler Globaler Variablen" oder FGV (Beispiele zu diesem Konzept im Forum).

Du willst aber den SubVI-Speicher 2x parallel verwenden. Auch das geht, ist aber nicht die Standard-Einstellung für ein SubVI. Hierzu geht man in die VI-Eigenschaften (Rechtsklick auf das VI-Icon->VI-Eigenschaften) und dann auf die Execution Seite. Dort Haken bei Reentrant setzen:
[attachment=21948]
Jetzt ist jeder Aufruf des VIs unabhängig von anderen Aufrufen.

Gruß, Jens
Referenz-URLs