31.01.2007, 14:48
Beitrag #1
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Plotlegende dynamisch anlegen
Hallo zusammen,
ich habe mir ein VI geschrieben, in dem ich die Plotlegende dynamisch anlegen kann.
Das ganze läuft wie folgt ab:
Aus einem zuvor abgearbeiteten subVI erhält dieses VI ein boolsches Array (array_all) mit insgesamt 29 "true" oder "false" Werten, je nachdem, welcher kanal gemessen werden soll.
Danach wird mit Hilfe des boolschen Array ermittelt, wie die Plotlegende heissen soll (also der Plotname). ebenfalls wird eine Zufallsfarbe pro Plot gewählt.
Die Ausgänge des VI sind für dieses Problem unwichtig.
Mein problem:
Das Anlegen der Plotlegende funktioniert nur richtig, wenn der erste Case "...7, Default" mindestens einmal aufgerufen wurde. Wird dieser Fall nicht behandelt, wird zwar trotzdem eine Plotlegende mit dem richtigen namen und einer Farbe angelegt, jedoch haben die Plots im Chart eien andere Farbe als in der Legende angezeigt. Beispielsweise zeigt die Legende an, dass ein Plot rot ist, im Chart ist er aber blau.
Meiner Meinung nach hat es nichts damit zu tun, dass noch keine Messdaten vorliegen, wenn die Plotlegende angelegt wird (Thema active plot), denn es funktioniert ja, wenn der erste Case behandelt wird. Ich lasse mich da aber gern eines besseren belehren.
Es wäre toll, wenn jemand wüsste wo das Problem ist.
Gruss André
070131_plotlegende_alle_SubVI_.vi (Größe: 55,4 KB / Downloads: 259)
|
|
|
31.01.2007, 14:50
Beitrag #2
|
|
|
31.01.2007, 15:37
Beitrag #3
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Plotlegende dynamisch anlegen
Hi,
wie kann es sein, dass der Case "..7, Default" nicht aufgerufen wird? Du startest doch immer bei "0", egal wieviele Elemente aus "array_all" kommen (Ausnahme: keine Elemente in "array_all"). Hast du schon mal im Highlight-Modus (Glühbirne!) geschaut, was passiert?
Ich hab leider nur Lv 8.0.1...kann dein VI darum nicht öffnen. Evtl. kannst du's mal runterkonvertieren (File >> Save for previous version), dann kann ich auch mal schauen...
Kleiner Tipp: Verlager doch das Zusammenbauen deines String-Array in ein SubVI, oder noch besser, mach drei kleinere String-Array-Konstanten [0.1.2.3.4.5.6.7] + [0.1.2.3.4.5.6.7] + [2.3.4.5.6.7.8.9.10] und bau diese mit "Build Array" zusammen. So sparst du Platz und es wird viel übersichtlicher!
Die Flat Sequence brauchst du auch nicht, die Reihefolge ergibt sich automatisch durch die Referenz an den Knoten!
Noch ein Tipp: Definiere doch immer die gleichen Farben (1-Rot, 2-Blau,...), dass wär für den Benutzer einfacher auf dem Graph. Du kannst ja ein Farbarray mit z.B. 150 Farben an der Schleife anschließen (wenn dir diese Anzahl reicht). Bei mehr als 50 Kurven kann man aber eh nichts mehr erkennen...
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
31.01.2007, 15:47
Beitrag #4
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Plotlegende dynamisch anlegen
070131_plotlegende_alle_SubVI_.vi (Größe: 55,72 KB / Downloads: 244)
Hallo Achim,
danke für deine Hilfe, ich habe Das VI nochmal für 8.0 gespeichert (frühere Version ging nicht).
Der case "...7, Default" wird beispeilsweise dann nicht aufgerufen, wenn im booleschen array die ersten 8 Werte false sind, also 0.
Um ein wenig den hintergrund aufzudecken:
Ich habe hier ein PXI.System mit 3 Messkarten und ich erfasse Temperaturen mit Thermoelementen, die ich alle in einem Chart visualisieren möchte. Und dazu gehört nunmal, dass die Plotlegende eigene Namen und frben hat.
du hast Recht, die Sequence kann weg.
Wie funktioniert das mit dem Farbarray??
Viele Grüße André
|
|
|
31.01.2007, 15:55
Beitrag #5
|
|
|
31.01.2007, 16:52
(Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2007 17:00 von Achim.)
Beitrag #6
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Plotlegende dynamisch anlegen
Hi,
dein Fehler rührt vermutlich daher, dass du zwar nur ausgewählte Plots einfärbst, aber wohl noch irgendwelche alten Informationen im Graph sind. Evtl. zeichnest/wählst du mehr Plots, als du haben willst. Wenn im angehängten VI der Fall "Fehler" eingestellt ist (im BD), hab ich das von dir beschriebene Verhalten!
Ich hab das mal nachvollzogen, siehe das angehängte VI. Da sollte jetzt alles funktionieren.
Probiers mal...
070131_plotlegende_alle_SubVI_NEU.vi (Größe: 59,62 KB / Downloads: 254)
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
01.02.2007, 10:31
Beitrag #7
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Plotlegende dynamisch anlegen
Hallo Achim,
danke für Deine Hilfe.
Wenn ich alles korrekt verstanden habe, dann gibst du dem Plot, den ich angezeigt haben möchte, 20 zufällig generierte Werte, und zwar BEVOR sie eingefärbt werden (Fall "Kein Fehler").
Aber im Fall "Fehler" machst du doch dasselbe, oder nicht??
Ich habe mal ein Bild anbei, vielleicht mache ich ja etwas bei der Zuweisung zum Chart falsch...
Gruss André
|
|
|
01.02.2007, 10:40
Beitrag #8
|
|
|
01.02.2007, 11:00
Beitrag #9
|
a-sl
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Nov 2006
8.2
2005
kA
71034
Deutschland
|
Plotlegende dynamisch anlegen
hi Achim,
Dein Vi funktioniert wenn ich es allein ausführe. Wenn ich es als Subvi in meinem hauptprogramm ausführe, funktioniert es nur, wenn im array_all mindestens 1 der ersten 8 Kanäle true war.
Im ángehangenen Bild siehst du wie es sich auswirkt. Siehe Plotlegendenfarbe und Plotfarbe.
Beende ich das VI und starte es neu und wähle wieder dieselben kanäle, so ist die Farbe wieder die gleiche (hier grün).
Ich prüfe nun mal, ob das array_all korrekt zusammengesetzt wird.
Gruss André
|
|
|
| |