Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe vor ein Auswahlmenü zu realisieren. Nach Folgendem Layout (siehe Bild 1-3).
1. Drei Messreihen werden in xy Graphen wiedergegeben (Bild1). (Das Funktioniert)
2. Kann mir per Auswahl Botten 1-3 eine Messreihe Auswählen (Bild1). (Das Funktioniert)
3. Das Auswahl mit vier Messsignalen (Auslenkungen) werden je als paar in neuem xy Graphen abgebildet (Bild2). (Das Funktioniert)
4. Als nächstes will ich aus dem Vier Messsignalen (Bild 2) zwei Signalekurven (Y1, Y2, Y3 und Y4) auswählen und sie mit Ihrem x, z, x, z Werten
(Quasi Y1/x, Y2/z, Y3/x und Y4/z) zusammen in zwei xy Graphen wiedergeben (Bild3). (Punkt vier Funktioniert nicht)
Punkt 4. habe ich nicht lösen können. Habe mir schon alle Ereignisstruktur Beispiele angeschaut und viele möglichkeiten ausprobiert. Trotzdem bin ich nicht weiter gekommen. Wäre sehr Dankbar für Hilfe. Mein Programm habe ich mit eingefügt
warum dieses ganze konvertieren nach DDT? Kannst du nicht mit den Waveform weiterarbeiten???
Zwei Event-Strukturen in einer Schleife. Tststs. Und beide warte auf ein bestimmtes Event und blockieren den Rest der Schleife. Warum nicht eine einfache Case-Struktur zum Auswählen der Daten?
Ich habe schon mal ein paar kleine Änderungen vorgenommen, um zu zeigen wie man ohne DDT durchs Leben kommt...
Was du noch machen müsstest:
Du solltest eine Auswahlmöglichkeit anbieten, bei der der User einmal den Wert für die X-Achse auswählt und eine zweite für die Y-Achse. Momentan hat man da 4 Knöpfe, aber keine Zuordnung, was wohin gehört...
erstmals vielen Dank für deine Hilfe. Ich habe deine Tipps umgesetzt und die Signal Verläufe auf Wave geändert.
Auswahl Möglichkeiten für X Werte gibt es nicht. Die Signale sind Auslenkungen (Amplituden) in xyz Richtungen aufgenommen im Zeitverlauf. Die X Achse ist die Zeit Achse und alle Auslenkungen werden auf der Y Achse abgebildet. X Auslenkungen nicht mit X Werten für die X Achse verwechseln.
Die Y Auslenkungen habe paare wie y1/x1, y2/z2, y3/x3 und y4/z4. Alle sind Auslenkungen und werde auf der Y Achse abgebildet. Wir betrachten als erstes nur die Auslenkungen in y Richtung (y1, y2, y3, y4). Dann wählen wir eine Messreihe mit Auswahl 1-3. Auswahl wir in zwei paare gesplitet Y1/Y3 und Y2/Y4. Dann werden einzelne Y Signale ausgewählt jeweils von den paaren und werden im Bild drei mit Ihrem zugehörigem x/z werden im Bild 3 wiedergegeben.
Habe das Programm versucht zu ändern ohne erfolg. Beim Start des Programms werden die Messdaten schon vorher weiter gegeben und Graphisch abgebildet wegen der 1. Voreinstellung im Case Struktur. (siehe Bild 4). Das sollte nach einer Auswahl geschehen. Wählt man anschließen ein Auswahl 1-3 Button passiert als erstes nichts, bis später mit Y1-Y4 ein Auswahl getroffen wurde. Sobald aber ein zweiter Y 1-Y4 Botton gedrückt wird startet das Programm mit Case 1.Voreinstellung erneut und nicht mit dem Ausgewähltem Button.
Ist es möglich das Programm so zu gestallten wie oben von 1 bis 4 beschrieben bzw. nach dem Abläufen von Bild 1 bis Bild3 (siehe oben) ?? Oder denke ich zu kompliziert und handele kompliziert aus meiner Ahnunglosigkeit?
Eine Reihenfolge erzwingt man im Programm nicht dadurch, dass man 2 Eventstrukturen nacheinander programmiert. Erstens sollte man eh nur eine Eventstruktur pro VI verwenden (siehe dazu die LV-Hilfe), zwietens musst du den Benutzer entsprechend steuern: z.B. könnte man die entsprechenden Buttons ausgrauen/disablen, wenn der Benutzer erst eine andere Aktion ausführen muss...
' schrieb:Eine Reihenfolge erzwingt man im Programm nicht dadurch, dass man 2 Eventstrukturen nacheinander programmiert. Erstens sollte man eh nur eine Eventstruktur pro VI verwenden (siehe dazu die LV-Hilfe), zwietens musst du den Benutzer entsprechend steuern: z.B. könnte man die entsprechenden Buttons ausgrauen/disablen, wenn der Benutzer erst eine andere Aktion ausführen muss...
Hallo GerdW,
das mit zwei Ereignisstrukturen in einem Vi, dass es nicht möglich ist leuchtet mir langsam ein. Nun habe ich deine weiteren Tipps Teils umgesetzt. Heraus kamen Kurvenauswahl6_3 und Kurvenauswahl6_4.
Beim Kurvenauswahl6_3 denke ich dass es so funktioniert wie ich es anfänglich haben wollte. Ich bin mir aber nicht sicher ob es richtig war mit zwei Case Strukturen.
Kurvenauswahl6_4 wollte ich mit einer Case Struktur realisieren. ich weis nicht wie ich die offenen Schleifen Tunnels belegen soll. Kann man da 0 als Wert übergeben, irgendwoher?
Eines noch zu den Case Fällen mit Voreinstellung, ist es möglich als aller erstens eine Voreinstellung Case mit 0 Wert zu schreiben?
Kannst du mir bitte Feedback über die Programme geben Kurvenauswahl6_3 und Kurvenauswahl6_4, ob ich auf dem richtigen Weg bin oder auf dem Holzweg.
Und nochmals vielen dank für deine Tatkräftige Unterstützung.
Beispiel 6_3 sieht doch schon gut aus? Warum sollten 2 Case-Strukturen nicht richtig sein, wenn du damit auch 2 verschiedene Datensenken bedienst?
Bei 6_4 siehst du ja selbst, dass du Probleme bekommst, wenn du diese beiden Case-Strukturen vereinigen willst... (Alternativ könntest du jeweils die nötigen Waveforms für beide Anzeigen aus dem Array nehmen und verdrahten, musst das dann aber in jedem Case für beide Ausgänge machen.)
Jetzt kannst du noch die IndexArray-Funktionen (die ich der Einfachheit halber jeweils mit 8 Ausgängen angelegt hatte), auf 2 Ausgänge verkleinern und den richtigen Indexwert am ersten Index-Eingang anschließen...
"Ist es möglich als aller erstens eine Voreinstellung Case mit 0 Wert zu schreiben?"
Was genau willst du hier?
- Willst du einen zusätzlichen Case, der keinen (oder: einen leeren Plot) ausgibt? Dann einfach einen Default-Case anlegen, der einen leeren Plot ausgibt...
- Willst du deine Plots löschen, wenn der Benutzer das VI startet und neue Daten lädt? Dann such dir einen Thread, wo das schon mal erläutert wurde... (Charts haben eine History-Property zum löschen, Graphs bekommen einen leeren Plot zum löschen der Anzeige...)
' schrieb:"Ist es möglich als aller erstens eine Voreinstellung Case mit 0 Wert zu schreiben?"
Was genau willst du hier?
- Willst du einen zusätzlichen Case, der keinen (oder: einen leeren Plot) ausgibt? Dann einfach einen Default-Case anlegen, der einen leeren Plot ausgibt...
- Willst du deine Plots löschen, wenn der Benutzer das VI startet und neue Daten lädt? Dann such dir einen Thread, wo das schon mal erläutert wurde... (Charts haben eine History-Property zum löschen, Graphs bekommen einen leeren Plot zum löschen der Anzeige...)
Hallo GerdW,
ich wollte das beim Neustart des Vi's ein Automatischen "Clear Graph" ohne Reset Button. Habe bezüglich deiner Tipps oben, einige Vorträge
(Link1Link2Link3) im Forum gelesen und mein Programm Code versucht zu ergänzen, ohne Erfolg.
Das zweite was ich nicht hinbekommen habe. Wenn ich z.B. das Auswahl Y3 für den Graphen XY- Auslenkung treffe und Anschließend für den Graphen ZY-Auslenkung zwischen Y2 und Y4 treffe ändern sich auch gleichzeitig die Werte im Graphen XY- Auslenkung. Sie wird auf Voreinstellung (Y1) gesetzt. Das soll ja nicht passieren. Wenn ich für den Graphen XY- Auslenkung ein Y Wert (Y1 oder Y3) wähle soll sie auch bleiben und nicht durch das Wählen von Y2 oder Y3 in den Voreinstellung zustand gesetzt wird.
Um ein bestimmtes Event zu erzwingen, kann man eine PropertyNode "Value (signalling)" verwenden... (Ich habe auch noch die Array-Konstante wirklich "leer" gemacht, also Array mit 0 (null) Einträgen statt Array mit einer leeren Waveform.)
Zu deinem 2. Problem:
Du hast nur jeweils einen Case pro "XY-Auslenkung"-Graph definiert. Ändert sich die Auswahl (Y1-Y4), wird natürlich der Default-Case verwendet. Hier musst du (für beide Graphen) mehr Cases definieren, um alle möglichen Benutzereingaben zu berücksichtigen...
Edit:
Zu deiner Info: Da ich SignalExpress nicht installiert habe, kann ich dein VI nicht ausführen und somit nicht testen...
habe meine Ergänzungen (in meinem LabVIEW Programm Kurvenauswahl6_9.vi) bzw. Probleme in Bild 1 und Bild 2 von 1. bis 4. in Roten Kreisen markiert, teils auch dort die Fragen gestellt.
1. Das was ich wollte dass die Diagramme bei jedem neuem Start geleert werden habe ich wie auf dem Bild 1 zu sehen ist gelöst. Ich hoffe
das die Lösung richtig ist. (siehe Bild 1 Kreis 1.)
' schrieb:Um ein bestimmtes Event zu erzwingen, kann man eine PropertyNode "Value (signalling)" verwenden... (Ich habe auch noch die Array-Konstante wirklich "leer" gemacht, also Array mit 0 (null) Einträgen statt Array mit einer leeren Waveform.)
2. Wozu weitere erzwungene Ereignisse. Sind die im Ereignissstruktur nicht ausreichend. Die waren ja Funktional. Welche Wirkung haben die
erzwungene Ereignisse? (siehe Bild 2 Kreis 2.)
' schrieb:Zu deinem 2. Problem:
Du hast nur jeweils einen Case pro "XY-Auslenkung"-Graph definiert. Ändert sich die Auswahl (Y1-Y4), wird natürlich der Default-Case verwendet. Hier musst du (für beide Graphen) mehr Cases definieren, um alle möglichen Benutzereingaben zu berücksichtigen...
3. Wuste nicht ganz wie ich dein Tipp umsetzten soll (habe nicht ganz Verstanden). Habe nun in die vorhandenen beiden Case Strukturen
mit den benötigtem jeweiligen Case Fällen ausgefüllt. Desweiterem habe ich die Integer 0 Konstanten im Default Case (Voreinstellung) mit
Double "NaN" ausgetauscht (bin mir nicht sicher ob es richtig war). Der Integer 0 hat immer Werte geliefert der Double Konstante gibt nun
den Graphen leer. (siehe Bild 2 Kreis 3.)
4. Zudem funktioniert es mit der Auswahl von Y1 oder Y3 und Y2 oder Y4 nicht richtig. Wenn ich Y1 wähle und anschließend Y2 oder Y4,
ändert sich Y1 sie wird in Default Case gesetzt. Gerade das soll es ja nicht. Das was gewählt wurde soll auch angezeigt werden. Also
wenn ich Y1 wähle und dann Y4 sollen mir beide in irrem jeweiligem Graphen angezeigt werden. Die Default Cases machen das was
ich gerade nicht will.
Meine Hauptprobleme waren das ich beim neu Start immer Clear Diagramm haben wollte, das ist mir gelungen unter Bild 1. Kreis1. Das zweite Problem mit dem Wechsel Wirkung zwischen [Y1oderY3] und [Y2oderY4] (Bild 2 Kreis 4.) konnte ich nicht lösen.
Ich wäre sehr Dankbar wenn du bei diesem Problem helfen könntest.
kann mir jemand weiter helfen bezüglich meiner letzten Anfrage. Ich komme nicht weiter. Ich glaube der GerdW hat mich verlassen oder ist im Urlaub am Strand . Trotzdem eine Dankeschön an GerdW für seine bisherige Konstruktive Hilfestellungen.
Mein Problem habe ich ein Beitrag ein darüber geschildert, auch Bildlich. Vieleicht kann mir jemand weiter helfen. Ansonsten muss ich mich damit abfinden das es nicht geht was ich mir so vorgestellt habe. Aus Verzweiflung habe ich aus dem Letzten Version Kurvenauswahl6_9.vi eine neue Kreiert. Was auch mein Problem nicht gelöst hat.
Ich dachte mir aus der ersten Schleife übernehme ich per Schieberegister der Letzten Auswahl bevor die Schleife in Default Case Stellung geht. Ich glaube da mache ich was falsch oder habe den Schieberegister nicht ganz verstanden. In meinem Fall wird am Ende der Schleifendurchgang der Default Case (0) übertragen und nicht das Auswahl (Auswahl 1-3).
Gibt es die Möglichkeit wenn ich in der ersten Schleife ein Auswahl Treffe, z.B. Auswahl 1 und diese als Schleifenbeendigungsbedingung wie das Stopp Element setze und aus der Schleife mein letzten Auswahl, in diesem Fall mein Beispiel Auswahl 1, per Schieberegister (bzw. andere Methode ?) an das zweite Schleife übergeben kann? Quasi aus der ersten schleife soll der Auswahl (und nicht der Default Case) an die zweite Schleife übergeben werden.
Ich tue beide Programme. Programm Kurvenauswahl6_9.vi ist zurzeit mein Basis Programm. Kurvenauswahl6_10.vi veränderter Typ, was nicht so hinhaut.