Hallo zusammen,
ich habe folgendes Problem, wer kann mir weiterhelfen?
Ich schreibe während einer Messung Daten in ein Cluster, welches dann zur Weiterverarbeitung an verschiedene Sub VIs übergeben wird. Laut meinem Betreuer soll es leicht möglich sein das Cluster je nach Bedarf um einige Einträge (andere Messparameter) zu erweitern ohne die Sub VIs zur Verarbeitung einzeln ändern zu müssen. Beim erstellen eines Sub VIs lege ich aber durch die Eingangsbelegung die Clusterstruktur des Clusters fest die dieses SubVI bearbeitet. Wie kann ich das ganze variabel halten so dass ich mal schnell einen zusätzlichen Wert in das Cluster einfügen kann ohne die Datenverarbeitung ändern zu müssen?
Ich hoffe es kann mir einer weiterhelfen.
mrstrom
Oder rechts-Klick auf FP oder BD und *.ctl (im BD statt *.vi) laden...
Hallo, erstmal danke für eure Hinweise, aber klappen tut es noch nicht.
Zum Testen habe ich mir ein Haupt VI geschrieben in dem sich nur ein vordefiniertes Cluster befindet. Dieses soll in ein Sub VI gegeben werden.
Den Eingang des SubVIs habe ich wie von euch beschrieben erstellt (Habs zumindest versucht) und als ctl gespeichert. Trotzdem wird die Verbindung im HauptVI zum SubVI nicht akzeptiert wenn das Cluster im HauptVI mehr Elemente hat als das Cluster in der clt Datei. Was hab ich falsch gemacht?
Hänge die VIs mal an.
Hallo mrstrom,
du musst das ctl überall in der Kette verwenden. Dann (und nur dann) hast du den Vorteil, dass eine Änderung der Typedefinition automatisch für alle Referenzen übernommen wird...
Hallo, vielen Dank es funktioniert.
Da ich nun aber mein Cluster flexibel gestaltet habe funktioniert aber meine "in Textdatei speichern" Funktion nicht mehr, da ich hierzu das Cluster aufschlüsseln muss. Ändert sich nun die Clustergröße habe ich zu wenig oder zu viele Anschlüsse an dem Cluster aufschlüsseln VI da sich dieses nicht automatisch dem Cluster anpasst. Gibt es auch hier eine Möglichkeit das Speichern des Clusters unabhängig von der Größe zu gestalten?
Ferner würde ich gerne den Namen eines Elementes mit in die Text Datei speichern. Zum Beispiel enthält das Cluster die numerische Variable : Spannung1.
Dann sollte später in der Text Datei Spannung1 = <Wert> ausgegeben werden. Das Ganze soll natürlich ebenfalls flexibel funktionieren, so das immer die gerade im Cluster verwendeten Elementnamen mit ihrem zugehörigen Wer ausgegeben werden.
Ist dies überhaupt realisierbar und kann man auf den Elementnamen eines Elementes im Cluster zugreifen? Und wenn ja wie?
Hoffe ihr könnt mir nocheinmal weiterhelfen.
mrstrom
um das zu realisieren bräuchtest du eigentlich eine XNode ... aber das um sowas erstellen zu könnten bräuchtest du erstmal eine passende Lizenz von NI, und die bekommt man vermutlich nur, wenn man einen sehr guten Grund vorweisen kann, warum man die unbedingt braucht (kann man auch nicht kaufen ...) und du müsstest dich in LV-Scripting einarbeiten, und das ist auch eine Sch*** Arbeit einen Code zu schreiben, der für jeden erdenklichen Fall Code produziert der zu deinem Cluster passt. Also wird dir gar nichts anderes übrig bleiben als das VI, in dem du in die Datei speicherst jedesmal von Hand anzupassen, wenn du dein Typedef veränderst.
Wenn alle Daten in deinem Cluster Zahlen sind könnte man sich vielleicht noch mit dem schmutzigen Trick behelfen, den Cluster in ein Array umzuwandeln und dann die Daten in einer For-Schleife wegzuschreiben, aber das klappt halt nur, wenn es sich um ähnliche Datentypen im Typedef handelt ...
Ich möchte i2dx widersprechen, das geht auch ohne XNode.
Man könnte:
- An ein SubVI die Referenz eines Clusters übergeben.
- In dem SubVI holt man sich per PropertyNode "Controls[]" das Array of Refnum auf alle Controls des Cluster
- Jetzt kann man in einer Forschleife alle Elemente abspeichern, von mir aus auch gerne mit Label. Dazu muss man per Typecast die allgemeine Refnum eines Controls entsprechend abändern.
Insgesamt viel Arbeit, aber alles machbar.
Anbei ein nicht funktionsfähiger Dummy-Screenshot:
[
attachment=30318]
Diese Grund-Idee wurde schon öfters hier im Forum veröffentlicht, aber nicht gerade das LV-Einsteiger-Thema.
Alternativ könntest du deinen Cluster auch als XML speichern.
Gruß, Jens
' schrieb:Ferner würde ich gerne den Namen eines Elementes mit in die Text Datei speichern. Zum Beispiel enthält das Cluster die numerische Variable : Spannung1.
Für den Fall, daß das wörtlich zu nehmen ist, Du also nur den Namen
eines (oder einiger) Elemente brauchst und nicht die Namen
aller Elemente im Cluster (worauf der Vorschlag von Jens hinausläuft) - also für diesen Fall gibt es auch eine sehr einfache Möglichkeit:
Mit rechter Maustaste auf das betreffende Element im Cluster auf dem FP (!) klicken, Erstellen/Eigenschaftsknoten/Beschriftung wählen. Den Eigenschaftsknoten hat man dann natürlich im BD.
Hallo,
also die Möglichkeit mit dem xml Code geht leider nicht weil dann die Datei zu groß wird. Dann muss ich wohl auf Jens G Vorschlag eingehen. Leider verstehe ich es nicht so richtig. Könntest du es vielleicht etwas ausführlicher erläutern und den screenshot als VI hochladen damit ich mir die einzelnen Elemente in der Hilfe anschauen kann?
Ich kenne die beiden VIs die nach der Referenz auf das Cluster angeschlossen sind nicht, was ist das und wo finde ich diese damit ich sie selber mal ausprobieren kann?
Wie du schon sagst ist dies Problem nicht gerade für Einsteiger geeignet, brauche es aber unbedingt für meine Studienarbeit, vielleicht schaffe ich es ja mit euren Ratschlägen.
mrstrom