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

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi (/Thread-Werte-in-SubVi-entsprechen-nicht-Werten-ausserhalb-des-SubVi)



Werte in SubVi entsprechen nicht Werten außerhalb des SubVi - Philipp841 - 06.06.2018 12:38

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


RE: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi - BNT - 06.06.2018 13:54

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


RE: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi - Lucki - 06.06.2018 18:58

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))


RE: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi - BNT - 06.06.2018 20:35

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


RE: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi - Philipp841 - 13.06.2018 14:59

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


RE: Werte in SubVi entsprechen nicht Werten außerhalb des SubVi - GerdW - 13.06.2018 15:12

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.