LabVIEWForum.de
SubVi erstellen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: SubVi erstellen (/Thread-SubVi-erstellen--18877)

Seiten: 1 2


SubVi erstellen - Santos L. Helper - 02.05.2011 16:43

Hallo zusammen!

Ich habe folgendes Problem: Ich habe, um es kurz zu fassen ein Programm geschrieben, dass ein Textdokument mit Daten ausliest und diese in zwei Arrays schreiben soll. Da ich so eine Art Live Datenerfassung realisieren will, habe ich diese Arrays in eine Schleife gepackt, somit werden die Daten immer wieder aneinander gehangen. Das Programm funktioniert eigentlich ganz gut, aber wenn ich ein SubVI daraus erstelle, kommt nichts mehr in meinen Arrays an. Eigentlich dachte ich, dass ich das mit den SubVis verstanden hatte, aber anscheinend stimmt da irgendwas nicht. Um ein Subvi zu erstellen,muss ich doch eigentlich nur unter Funktionen VI auswählen machen und dann mein VI angeben.und natürlich vorher die Anschlüsse festlegen.Oder muss ich noch irgendwelche Einstellungen vornehmen?
Liegt es vielleicht daran, dass sich die Arrays in mehreren Schleifen befinden?
Ich habe mein VI angehangen Lv09_img2. und dazu noch ein Textdokument mit Daten,dass zum ausführen nötig ist. Ich will als Ausgang die Arrays 32-Bit-Integer-Ch1 und 32-Bit-Integer-Ch2 haben.und der RunOn Button sollte auch im subVi auftachen,um das ganze zu Starten.
Vielen Dank schonmal für jede Antwort!


RE: SubVi erstellen - Lucki - 02.05.2011 18:59

Bei flüchtiger Betrachtung des VIs habe ich den Eindruck, das hier viele unnötige Umständlichkeiten drin sind, z.B. bei der Entfernung des Headers.
Deshalb statt einer Antwort erst mal ein Beispiel, wie man die Daten ganz einfach einliest und darstellt.
(Tip: Das VI "Textdokumant lesen" läßt sich mit der rechten Maustaste auf "Zeilen lesen" umkonfigurieren)
[attachment=33609]
[attachment=33608]


RE: SubVi erstellen - Santos L. Helper - 04.05.2011 08:38

Ok schon mal vielen dank dafür.Dass ich es mir ganz schön umständlich gemacht habe war mir schon klar, aber ich war erstmal froh,dass es überhaup läuft.Ich arbeite noch nicht so lange mit LabView. Da sind bestimmt auch noch ne Menge weitere Ungereimheiten drin.
Aber mal noch ne Frage zu deinem VI: wie lese ich denn jetzt aus dem String Array bzw. Header die einzelnen Werte aus. Ich kann ja nicht mit dem String weiterrechnen? Von daher fand ich meine Methode mit dem Tabellen String nach Array gar nicht so übel. Abgesehen davon, dass es definitiv umständlich ist dann alles einzeln aus dem Array auszuschneiden.


RE: SubVi erstellen - GerdW - 04.05.2011 08:43

Hallo Santos,

dein Header besteht aus 9 Zeilen, von denen nur 7 Werte enthalten. Diese müssen auch noch jeweils unterschiedlich "geparst" werden...

Aber du kannst doch trotzdem ein StringToArray an den Header anschließen um deine Werte zu erhalten!


RE: SubVi erstellen - Lucki - 04.05.2011 09:05

(04.05.2011 08:38 )Santos L. Helper schrieb:  Aber mal noch ne Frage zu deinem VI: wie lese ich denn jetzt aus dem String Array bzw. Header die einzelnen Werte aus.
Ein meinem VI sind die Werte Anzeigen. Wenn Du sie weiter benutzen willst, dann zapfe doch einfach den entprechenden Draht an. Es geht aber auch mit lokalen Variablen dieser Anzeigen, oder man erstellt Shift-Register. (Man kann auch von einem Graphen ein lokale Veriable erstellen und kann damit die Daten wieder herauslesen)
Der Header ist übrigens schon in ein Array of Zeilen konvertiert. Um an eine bestimmte Zeile zu kommen, muß nicht geparst werden, man braucht nur noch die Funktion "Array indizieren"


RE: SubVi erstellen - Santos L. Helper - 04.05.2011 11:56

Nun Gut. Und hat jemand noch ne Idee wieso das mit meinem SubVi nicht klappt.


RE: SubVi erstellen - GerdW - 04.05.2011 12:03

Hallo Santos,

Zitat:wieso das mit meinem SubVi nicht klappt.
Was klappt nicht? Fehlermeldungen?

- Wieso verwendest du Matrix-Operationen, wenn du mit Arrays hantierst?
- Wieso verwendest du lokale Variablen, statt Drähte zu ziehen?


RE: SubVi erstellen - Santos L. Helper - 04.05.2011 12:42

Also was nicht klappt: wenn ich die Arrays 32-Bit-Integer-Ch1 und 32-Bit-Integer-Ch2 als Ausgang meines SubVis wähle, kommt in meinem Hauptprogramm nix raus. Bzw es kommt schon was raus, aber nur die Werte die im SubVi in dem Moment angezeigt werden in dem ich die Verbindung herstelle. Und wenn ich mein Hauptprogramm laufen lasse, dann ändern sich die Werte auch nicht entsprechend.Im unterprogramm schon, aber im Hauptprogramm nicht.

Zitat:Wieso verwendest du Matrix-Operationen, wenn du mit Arrays hantierst?
Ich dachte immer, dass nen mehrdimensionales Array das selbe wie ne Matrix ist, da du ja auch Spalten und Zeilen hast.Keine Ahnung.Ist das denn weiter schlimm?

Zitat:- Wieso verwendest du lokale Variablen, statt Drähte zu ziehen?
Weil ich für meinen Teil das übersichtlicher finde als kreuz und quer die Drähte zu haben


RE: SubVi erstellen - GerdW - 04.05.2011 12:45

Hallo Santos,

Zitat:Und wenn ich mein Hauptprogramm laufen lasse, dann ändern sich die Werte auch nicht entsprechend.Im unterprogramm schon, aber im Hauptprogramm nicht.
Datenfluss-Problem? Oder "Run-On" nicht gesetzt?

Zitat:Weil ich für meinen Teil das übersichtlicher finde als kreuz und quer die Drähte zu haben
Und weil du dir damit ruck-zuck Datenfluss-Probleme einhandelst, besser bekannt als RaceConditions...

Zitat:Ich dachte immer, dass nen mehrdimensionales Array das selbe wie ne Matrix ist, da du ja auch Spalten und Zeilen hast.
Falsch. Eine Matrix ist (in LabVIEW) ein 2D-Array mit besonderen Eigenschaften - und nicht umgekehrt!

Zitat:Keine Ahnung. Ist das denn weiter schlimm?
Keine Ahnung haben ist schlimm. Smile
Matrix-Operationen anstatt Array-Operationen zu benutzen eher nicht. Könnte vielleicht eine Rechenzeit-Penalty mit sich bringen...


RE: SubVi erstellen - Santos L. Helper - 04.05.2011 13:15

Also ich habe jetzt alle lokalen Variablen entfernt und die Drähte so gezogen, aber das hat leider nichts geändert. Der Run-On Button ist definitiv auch gesetzt. Daran hatte ich selber schon gedacht. ich hatte ihn auch schon komplett rausgenommen und durch ne True Konstante ersetzt. wie gesagt im SubVi schreibt er ja was neues in die Arrays rein, aber im Hauptprogramm passiert nix. Wenn man es im debugging Mode laufen lässt, kommt aus dem SubVi nichts raus.