LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende (/Thread-LV-kommt-nicht-damit-klar-wenn-ich-ein-Subvi-zweimal-verwende) |
LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - angori - 21.10.2009 14:13 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 LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - Achimedes - 21.10.2009 16:12 Hallo, also schön ist dei code nicht. 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 LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - jg - 21.10.2009 19:45 ' schrieb:also schön ist dei code nicht.Vor allem, wenn man das VI einmal auf die Standard-Form eines FGV reduziert: [attachment=21899] Gruß, Jens LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - angori - 22.10.2009 11:05 Hallo Besten Dank für den Tipp..doch es geht leider immer noch nicht... LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - jg - 22.10.2009 11:34 Lad mal ein Bsp-VI und das SubVI hoch, wo es nicht so funktioniert, wie du willst. Gruß, Jens LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - angori - 22.10.2009 13:12 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. LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - Achimedes - 22.10.2009 15:07 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 LV kommt nicht damit klar, wenn ich ein Subvi zweimal verwende - jg - 22.10.2009 18:35 ' 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. 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 |