LabVIEWForum.de - SubVI -Anschlüsse bocken

LabVIEWForum.de

Normale Version: SubVI -Anschlüsse bocken
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich brauche wieder mal euer Hilfe.

Um was gehts:

Ich lese über ein SubVi IP_Adressen aus einem txt file. Das VI funktioniert auch. Aus diesem VI übergebe ich ein String_Array (welches die ausgelesenden Ip´s liefert) und einen Index (welcher die Anzahl der IP-Adressen, die in der Datei sind, liefert)

soweit sogut...

Problem:

Belege ich nun beide mit einem Anschluss, werden beide immer auf 0 gesetzt. D.h das VI wird ordnungsgemäß ausgeführt und abgearbeitet. Dann allerdings werden die Werte im Array und im Index auf 0 gesetzt.

Wenn ich z.b das Array vorher noch kopiere, behät das kopierte Array die Werte aber nicht das Array was ich übergeben will. (für den Index ebenso)

Woran liegt das?

Evt. daran wie ich das VI aufgebaut habe? Wenn ja, bitte ich um einen Tip.

merci...

Lv85_img
Ich hab jetzt nicht so ganz verstanden, wo dein Problem liegt. Auch nach Durchsicht des Sourcecodes nicht. Aber eine Lösung, naja einen Ansatz dafür, hab ich trotzdem.

' schrieb:Evt. daran wie ich das VI aufgebaut habe?
Ja.

Wenn ich das BD richtig interpretiert habe, kommst du vollkommen ohne jedwede Lokale Variable aus. Es geht alles alleine nur mit Datenfluß. Auch die Sequenzstrukturen brauchst du nicht. Versuch mal, das BD so anzupassen, dass alles von links nach rechts "fließt". Allerdings brauchst du dann noch eine While-Schleife um alles herum, die auch nocht Schieberegister enthält. Darin stehen dann die Werte, die von einem VI-Aufruf zum nächsten erhalten bleiben sollen bzw. müssen.
Wenn du alle Ausgänge rechts AUSSERHALB von Strukturen platzierst und verbindest wirst du selber auf die Antwort kommen.
' schrieb:Wenn du alle Ausgänge rechts AUSSERHALB von Strukturen platzierst und verbindest wirst du selber auf die Antwort kommen.


Das is ja wieder verrückt. Es geht nun, wenn ich die Ausgängte ausserhalb von Strukturen platziere. Aber die Antwort habe ich noch nicht.

@ eg: kannst du mir das kurz erklären?

@all: wer nun wissen will, was dieses VI ausliesst, kann sich ja die txt runterladen und ausprobieren. ^_^







[attachment=14731](LV 8.5)
[attachment=14732]
Ich erkläre es so wie ich es verstehe:
wenn du die Ausgänge im Pane definiert hast, macht LabVIEW automatisch eine unsichtbare Verbindung vom Indicator im Blockdiagramm zum VI Ausgang. Diese unsichtbare Verbindung geht vom Indicator zum Pane Ausgang dirch alle möglichen Strukturen durch. Sagen wir mal, dass VI Pane Ausgang ausserhalb aller Strukturen liegt. Da ich gesagt habe, dass du deine Ausgänge ausserhalb der Strukturen legen musst, habe ich dich gezwungen, so zu denken wie es in LabVIEW ist.
Dein Fehler war, dass du gedacht hast, dass was im Indicator auf dem FP angezeigt wird, wird auch vom VI ausgegeben, in Wirklichkeit sind die Ausgänge so wie oben beschrieben verbunden.
Am besten, nimm es als Regel - alle VI Ausgänge ausserhalb von etwaigen Strukturen zu platzieren, dann wirst du solche Verständnisprobleme nicht haben.

Hier ein Beispiel: oben VI unten SubVI.
' schrieb:Ich erkläre es so wie ich es verstehe:
wenn du die Ausgänge im Pane definiert hast, macht LabVIEW automatisch eine unsichtbare Verbindung vom Indicator im Blockdiagramm zum VI Ausgang. Diese unsichtbare Verbindung geht vom Indicator zum Pane Ausgang dirch alle möglichen Strukturen durch. Sagen wir mal, dass VI Pane Ausgang ausserhalb aller Strukturen liegt. Da ich gesagt habe, dass du deine Ausgänge ausserhalb der Strukturen legen musst, habe ich dich gezwungen, so zu denken wie es in LabVIEW ist.
Dein Fehler war, dass du gedacht hast, dass was im Indicator auf dem FP angezeigt wird, wird auch vom VI ausgegeben, in Wirklichkeit sind die Ausgänge so wie oben beschrieben verbunden.
Am besten, nimm es als Regel - alle VI Ausgänge ausserhalb von etwaigen Strukturen zu platzieren, dann wirst du solche Verständnisprobleme nicht haben.

Hier ein Beispiel: oben VI unten SubVI.



hmm.... Danke. Rolleyes
So richtig gecheckt habe ich es zwar noch nicht. Aber nun weiss ich es und werde es berücksichtigen.
Ob innerhalb oder außerhalb von Strukturen ist doch egal, Haupsache ist, daß, wenn in der Struktur Cases o.ä. vorkommen, in jedem möglichen Fall trotzdem eine Wertzuweisung erfolgt. Und genau das ist bei Dir nicht der Fall.
Die Wertzuweisung in das Ausgangsarray im Inneren der verschachtelten Struktur erfolgt nur dann, wenn die Cases beide true sind, sonst nicht:
[attachment=14738]
Habs mal geändert, und zwar so, daß (i) durch Anfangsinitialisierung immer ein Wert (NaN) zugewiesen wird, und (ii) eine Debug-Meldung erscheint, wenn die Cases nicht so sind wie sie sein sollten.
Mehr kann man hier nicht tun, denn was mit den Ausgängen geschehen soll, wenn die Cases nicht true sind, das weißt allein Du. Aber einfach nichts zuzuweisen ist auf jeden Fall nicht die feine Art..
Lv85_img[attachment=14740]
Danke Lucki, genau so hab ich´s auch gemacht. ^^
Referenz-URLs