Hallo LabVIEW-Forum,
ich habe wieder einige Verstaendnisfragen zu LabVIEW.
1. Lokale Variablen:
Meine VI hat eine While-Schleife, in der zwei Case-Abfragen verschachtelt sind. In der untersten Case-Struktur werden Werte ausgelesen, die ich gerne an anderer Stelle noch einmal auslesen moechte und irgendwo abspeichern wuerde.
Ich dachte, man macht das mit lokalen Variabeln? Ich wollte nicht ein Drahtchaos durch die verschiedenen Case-Strukturen.
Allerdings komme ich nicht weiter, weil es mir nicht gelingt meine lokalen Variabeln als Elemente in ein Array hineinzufuettern. Das Drahttool moechte sich nicht verbinden.
2. Arrays:
Wie kann man einzelne Elemente (lokale Variabeln) in ein Array hineinfuettern?
In Matlab kenne ich das so, dass man das Array baut und dann die Werte in die Zellen abspeichert.
Meine lokalen Variablen wollen sich aber nicht mit meinem Array verbinden.
Ein Aray habe ich initialisiert, indem ich die Werte und die Dimension vorgegeben habe. Muss man wirklich ueber eine Schleife ein Array aufbauen?
Ich haenge einmal meine aktuelle Version als Screenshot an, da die VI nicht funktioniert. Die lokalen Variablen sind infused and withdrawn volume.
LabVIEW is 8.5 (Wie haengt man das LabVIEW Symbol mit der Version eigentlich an?).
Vielen Dank und viele Gruesse
Blue
' schrieb:irgendwo abspeichern wuerde.
Die zwei Werte sollen also in einem 2D-Array abgelegt werden?
Zitat:Ich dachte, man macht das mit lokalen Variabeln? Ich wollte nicht ein Drahtchaos durch die verschiedenen Case-Strukturen.
Das geht ohne lokale Variablen, ohne Drahtchaos und sieht trotzdem noch schön aus.
Zitat:Muss man wirklich ueber eine Schleife ein Array aufbauen?
In deinem Falle hier nicht.
Zitat:Ich haenge einmal meine aktuelle Version als Screenshot an, da die VI nicht funktioniert. Die lokalen Variablen sind infused and withdrawn volume.
Hängt das VI, auch wenn es nicht funktioniert, hier an. Dann kann nämlich jeder hier seine Lösung gleich in dieses VI einbauen.
' schrieb:..
2. Arrays:
Wie kann man einzelne Elemente (lokale Variabeln) in ein Array hineinfuettern?
In Matlab kenne ich das so, dass man das Array baut und dann die Werte in die Zellen abspeichert.
Meine lokalen Variablen wollen sich aber nicht mit meinem Array verbinden.
Ein Aray habe ich initialisiert, indem ich die Werte und die Dimension vorgegeben habe. Muss man wirklich ueber eine Schleife ein Array aufbauen?
..
Man kann die Elemente einfach über Build Array (Array-Palette) hinten anhängen (Siehe angehängtes Bild) oder man benutzt das "Replace Array Subset.VI" und tauscht das gewünschte Element oder Sub-Array aus. Letzteres entspricht dem Matlab-Vorgehen.
Du kannst ein 2D Array erstellen und mit Daten füttern. Von diesem 2D Array kannst du eine lokale Variable erstellen und an anderer Stelle wieder auslesen. Bedenke das diese Art anfällig für Race-Conditions ist. Ich verwende nie lokale Variablen sonder FGV's. Darüber kannst du hier im Forum auch einiges finden.
Guten Tag
@IchSelbst:
Die Idee war, Sachen in einem Array zu speichern. Mittlerweile habe ich aber herausgefunden, dass man dort nur einen Typ von Variable abspeichern kann. Gibt es in LabVIEW auch etwas, was sich in Matlab cell nennt? Dort konnte man munter Strings, Matritzen etc abspeichern. Cell erlaubte das Abspeichern verschiedener Variabeltypen.
Ich moechte gerne folgendes aufzeichen:
Sample 5 ml
Air 20 ml
Buffer 10 ml
Air 20 ml
Diese Daten sollen dann in der Haupt-VI zu Verfuegung stehen. Sowas habe ich immer mit cells erledigt.
@Unicorn:
Habe ich das richtig verstanden, dass man an ein Array nur andere Arrays anhaengen kann?
Meine Elemente, in diesem Fall Skalare oder Strings, habe ich immer in Arrays umgewandelt.
Hierzu habe ich mir ein 1x1 Array mit dem String oder dem Skalar mit Hilfe von Initialize Array gebaut. Ich weiss es sonst nicht besser. Ich glaube, ich verwechsle auch gerade Cell and Array.
Replace Array Subset benutze ich jetzt auch, um die zuvor initialisierten Arrays zu fuellen. Wenn Du schreibst, das ist das Matlab-Vorgehen, wie sieht denn das LabVIEW-Vorgehen bitte aus?
@Abrissbirne: Ich habe gestern zu lokalen Variablen und FGCs einige Diskussionen gelesen. Das ist noch ganz schoen kompliziert. Ich habe die lokalen Variablen jetzt auch erstmal wieder entfernt.
Tut mir leid, dass ich hier solche Fragen stelle, aber an der Uni nutzt niemand LabVIEW.
Vielen Dank fuer Eure Geduld.
Gruesse
Blue
' schrieb:Guten Tag
@IchSelbst:
Die Idee war, Sachen in einem Array zu speichern. Mittlerweile habe ich aber herausgefunden, dass man dort nur einen Typ von Variable abspeichern kann. Gibt es in LabVIEW auch etwas, was sich in Matlab cell nennt? Dort konnte man munter Strings, Matritzen etc abspeichern. Cell erlaubte das Abspeichern verschiedener Variabeltypen.
Dafür sind Cluster geeignet.
' schrieb:Mittlerweile habe ich aber herausgefunden, dass man dort nur einen Typ von Variable abspeichern kann.
Richtig: Alle Elemente eines Arrays haben immer den selben Typ. Das ist ein Kennzeichen von Array: Ein einziger Basistyp. Was aber noch nichts über den Basistyp selbst aussagt: der kann noch so kompliziert sein.
Zitat:Gibt es in LabVIEW auch etwas, was sich in Matlab cell nennt?
Matlab kenn ich nicht.
Zitat:Dort konnte man munter Strings, Matritzen etc abspeichern.
Geht in LV auch: Array of Variant. Würde ich aber nicht verwenden. Besser einen entsprechenden Algorithmus oder Datensatz ausdenken. Als Basistyp kann man z.B. Cluster(String, String, I32,I32) nehmen.
Zitat:Ich moechte gerne folgendes aufzeichen:
Mit dieser Aufzählung kann ich leider nichts anfangen. Ich weis z.B. nicht, ob das vier Datensätze sind oder nur einer. Und auch nicht, ob "Sample 5 ml" drei Variablen sind oder ob nur die 5 variabel ist. Wenn du sagst, wie
ein Datensatz aufgebaut ist, und zwar an hand der Typen der einzelnen Daten, kann ich hier was genaueres sagen.
Zitat:Habe ich das richtig verstanden, dass man an ein Array nur andere Arrays anhaengen kann?
(Fast) Alle LabVIEW-Elemente sind polymorph aufgebaut. D.h. du kannst an den Eingängen anschließen, was möglich ist. Bei dem Element "Array erstellen" kann man sowohl ein Array als auch den Basistyp anschließen.
Hi Abrissbirne.
Vielen Dank. Das schaue ich mir gleich noch einmal an.
Ich habe hier wieder eine Verstaendnisfage.
Angehaengt ein Beispiel1.vi in 8.5.
Das initialisierte Array hat die Dim 1x3. Jetzt ersetze ich array (index 0x0) mit einem String (dim 1x1). LabVIEW hat mir die Verbindung zu dem Array INdicator am Ende nur erlaubt, wenn dessen Dim 2x3 war. Wieso? Warum ging das nicht mit 1x3 Indicatorarray?
Tut mir leid, ich verstehe es nicht. Ich habe schon Probe benutzt. Ich bin aber verwirrt, weil Probe Arrays anzeigt, bei denen man sich durch alle Dimensionen durchklicken kann. Daher weiss ich nicht, wie gross mein Array tatsaechlich ist.
Koenntest du mir bitte sagen, was ich falsch mache?
Danke schoen.
Gruss
Blue
Du allokierst bereits ein 2D Array, desshalb.
Die Lösung:
' schrieb:Du allokierst bereits ein 2D Array, desshalb.
Die Lösung:
Hallo Abrissbirne.
Danke fuer die Loesung. Aber rein vom Verstaendnis her, muss ich noch einmal nachfragen: Warum habe ich ein 2D Array allokiert?
Ist 1x3 nicht von der Dimension her 1? Oder zaehlt das schon als 2D Array, weil ich Reihen und Spalten angebe? Mir faellt auf, dass du in deinem Beispiel den Zeilenindex weglaesst. Oder irre ich mich?
Viele Gruesse
Blue