LabVIEWForum.de - Werte in SubVi entsprechen nicht Werten außerhalb des SubVi

LabVIEWForum.de

Normale Version: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusamm´,

folgendes Szenario macht mich seit zwei Tagen ziemlich kirre:Blink

In einer riesigen Main-Tapete (DSDL44.vi) wird das SubVi 4 (V2Force.vi) mehrfach verwendet. Eingehen tut der Cluster "Force Cal." und "Dynamic Data". Hinaus kommen "Force [N]" und "mean [V]".

Beim ausgeben der Daten geht jedoch irgendetwas reichlich schief. Was passiert, ist dem beigefügten Screenshot zu entnehmen:

Sonde 19 (Force N), außerhalb des SubVIs, zeigt einen Wert, der dem Wert an Sonde 21 (Numeric), innerhalb des SubVIs entsprechen sollte.
Sonde 20 (mean V), außerhalb des SubVIs, zeigt einen Wert, der dem Wert an Sonde 22 (mean), innerhalb des SubVIs entsprechen sollte.

Wie anhand der Sonden zu sehen ist, ist beides jedoch nicht der Fall! Ich kann mir dieses Verhalten absolut nicht erklären und bin demnach über Ideen oder sogar die Lösung sehr sehr dankbar!

Besten Gruß,
Philipp
Wenn das SubVI mehrfach aufruft, werden in den SubVI-Probes vermutlich die Werte eines anderen Aufrufe angezeigt. Setz mal einen Breakpoint und geht Schrittweise durch das Programm.
Gruß Holger
Die unterschiedlichen Werte innen und außen sind ja, wie Holger richtig analysiert hat, nur scheinbar vorhanden. Um einen Fehler handelt es sich nicht. Wirklich merkwürdig sind aber die NaN-Werte. Das liegt womöglich an faulen Eingangsdaten am SubVI. Ich würde mal an jeden Draht im SubVi eine Sonde legen, um den Fehler zu finden. (Ein primitive Methode, um immer nur eine bestimmte Instanz von z.B. 3 Instanzen zu analysieren ist: das SubVI "Sub" mehrfach kopieren und benennen in "Sub", "Sub_b", "Sub_c". Also jeder Instanz einen anderen Namen geben. Wenn der Fehler gefunden ist, das wieder rückgängig machen))
Oder das VI in den Eigenschaften auf 'Shared Clone Reentant' setzen. Einen Breakpoint auf das SubVI setzen und reinspringen.

Das spart das Kopieren.

Gruß Holger
Hallo Holger und Lucki,

vielen Dank für Eure Ideen und pardon, ich war ein paar Tage nicht im Büro.

Wenn ich Euch richtig verstanden habe, geht ihr davon aus, dass mir über die Sonden also Werte aus den anderen, gleichnamigen SubVis angezeigt werden. Ich werde den Ansatz ausprobieren, die SubVIs unterschiedlich zu benennen und schaue ob der Fehler dann immernoch auftritt. Wobei es doch eigentlich Standard, bzw. mit einer der Hauptgründe für die Bildung von SubVIs ist, diese mehrfach ins Blockdiagramm einfügen zu können, oder nicht?

Die Ansätze mit dem Breakpoint bzw. Kopieren der VIs hab ich noch nicht verstanden. (Bitte habt Nachsicht, bin noch recht frisch dabei.)

Gruß & Danke,
Philipp
Hallo Philipp,

Zitat:Wobei es doch eigentlich Standard, bzw. mit einer der Hauptgründe für die Bildung von SubVIs ist, diese mehrfach ins Blockdiagramm einfügen zu können, oder nicht? Die Ansätze mit dem Breakpoint bzw. Kopieren der VIs hab ich noch nicht verstanden.
Ja, es ist sinnvoll, subVIs zu erstellen und zu benutzen.
Aber: wenn du mehrere Instanzen eines subVIs einsetzt, dann befindet sich dieses subVI (bei Standardeinstellungen) trotzdem nur genau einmal im Speicher: scheinbar parallel laufende Aufrufe werden aber nacheinander ausgeführt. Deshalb kann es sein, dass du mit den Sonden im subVI Werte eines Aufrufs siehst und mit den Sonden im MainVI die Werte eines anderen Aufrufs eben dieses subVIs.

Der Vorschlag mit den Kopien des subVIs bzw. das Einschalten der Reentrant-Eigenschaft umgeht dieses "Problem": jetzt gibt es für jeden Aufruf des subVIs eine eigene Instanz im Speicher: nun sollten Sonden im subVI und MainVI identische Werte anzeigen.
Referenz-URLs