LabVIEWForum.de - Problem mit Variablen und Sub-VI's

LabVIEWForum.de

Normale Version: Problem mit Variablen und Sub-VI's
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
<div align="left">Hallo,

Ich möchte an einem Messgerät Relais schalten. Die dafür vorgesehnen Einschubkarte besitzt 20 von diesen.
Die einzelnen Schalter werden über eine Event-Structure abgefragt (20 Schalter-> 20 Fälle). Nun gibt es hin
und wieder allerdings den unschönen Effekt, dass das Gerät den Schaltbefehl nicht mitbekommt, mein
Front-Panel Element allerdings den umgeschalteten Zustand anzeigt. Zu diesem Zweck habe ich für jeden
Schalter eine Variable angelegt. Wird nun ein Schaltbefehl gesendet werden danach alle Relaiszustände
ausgelesen und auf die Variable geschrieben. Somit erreiche, dass meine Anzeige immer richtig ist. Allerdings
nimmt diese Vorgehensweise jede Menge Platz im Blockdiagramm weg und ich würde gerne so viel wie möglich
in Sub-VI's verpacken, vor allem weil es theoretisch möglich ist 3 solcher Relaiskarten zu verwenden wobei die
Anzahl der Schalter auf 60 ansteigen würde. Dabei besteht natürlich jetzt das Problem mit der Variablenzuordnung.
Ich habe versucht dieses über Globale Variablen zu lösen, leider ohne Erfolg.
Ich erläutere kurz wie ich vorgegangen bin.

1. Globale Variable im Hauptprogramm erstellt
2. Frontpanelelemente (20 Schalter) kopiert und auf Global-FP eingefügt
3. Variable in SubVi verschoben
4. Variable verzwanzigfacht
5. jeder der 20 Var. einen Schalter zugeordnet
6. "Change to write" für alle Variablen
7. Anschließen an entsprechenden Boolschen Wert

Wie schon zu Anfang gesagt ging der Plan nicht auf. Ich würde mich freuen wenn jemand eine Idee hat
aus einem Sub-VI mittels Variable ein Element im Hauptprogramm zu beschreiben.

THX

RR</div>
<div align="left">Hallo,

wie wäre es denn, deine 20 Schaltzustandsvariablen in ein Array oder alternativ in einen Cluster zu packen? Dann hast du nur eine Variable.

MfG,
Jens</div>
<div align="left">Ich habe schon fast befürchtet, dass diese Antwort kommt. Dies ist leider nicht so einfach möglich.
Zu jedem Schalter wird ein String mit der zugehörigen Kanalnummer an die VI gesendet, die mit
dem Gerät kommuniziert. Ausserdem muss ich den spezifischen Zustand dieses einen Schalters
an das VI senden. Würde ich einen Cluster verwenden müsste ich für jeden Schalter den Boolschen
Wert aus dem Cluster herausfädeln, womit die Kompaktheit dann auch wieder dahin wäre.
Ich benötige für meine Geräte-VI EINEN Boolschen Wert und eine Kanalliste.
Meine Kanalliste enthält natürlich nur einen Kanal.

RR</div>[attachment=2540]
<div align="left">Auf Grund der mangelnden Ideen bin ich doch noch einmal auf den Vorschlag mit dem Cluster eingegangen.
Ich habe also nun alle 20 Schalter in einen Cluster gepackt. Der Cluster wird an eine Event-Structure angeschlossen. Die Ereignisse werden auf "Mouse Down" für jeden einzelnen Schalter gelegt. Wird nun eines der Elemente betätigt läuft die Eventstructure ab. Dabei wird der Boolsche Wert des entsprechenden Schalters mittels "Unbundle by name" aus dem Cluster herausgeführt und auf die Geräte-VI geleitet. Dies funktioniert, therotisch jedenfalls. Der Wermutstropfen an der Geschichte ist, dass ich den Schalter immer 2mal betätigen muss bis der Wert gesetzt wird. Ich vermute, dass dies hat damit zu tun, dass sich der Cluster nicht in der Event-Structure befindet. Wenn ich mit der Glühbirne debugge stelle ich fest, dass die Werte nach dem ersten betätigen am Ausgang der Event-structure "warten" (??). Bei nochmaligem schalten wird der Wert zu Geräte-VI weitergeleitet.
Wenn jemand gern das Programm ausprobieren möchte werde ich es hochladen, muss allerdings darauf hinweisen, dass eine korrekte Ausführung ohne die entsprechende Hardware nicht möglich ist. Deshalb müssen es erstmal 2 Bilder tun.

THX

RR
alte Version
[attachment=2543]
neue Version
[attachment=2544]</div>
Referenz-URLs