Min- und Max- Werte ausschließlich anzeigen lassen
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!
29.08.2010, 20:27 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2010 20:28 von Safa.)
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo,
@ Mechatronik-Ingenieur:
vielen Dank, dass Du mir das VI nachgebaut hast.
Irgendwie scheine ich nicht so richtig zu kappieren, was da genau gemacht wird.
Also am Anfang scheint Lucki die Tabelle so zu formatieren, sodass die Strings aus der Tabelle in einem Array gespeichert werden. Soweit so gut.
Ich möchte statt der Tabelle zum Beispiel eine Messkartenaufnahme da haben. Ich habe nun testweise den DAQ-Assistenten angeschlossen. Die Nummer des Zykluses wird natürlich über die For-Schleife abgegriffen. (Siehe VI). Danach entfernt Lucki die nicht benötigten Daten aus dem Array und indiziert diesen neu. Aber was passiert nun in der ersten For-Schleife? Wieso wird der Array anschließend umgekehrt?
Ich habe nun die Tabelle ersetzt und leider wird nur nach dem fünften Zyklus ein Min und Max -Wert geplottet. Ich habe mir gedacht, dass ich vielleicht ein Schieberegister einfüge und so die ankommenden Daten der For-Schleife speichere und in einen neuen Array gebe. danach wandert alles in den Graphen. Dies funktioniert leider nicht
Verstehe also leider noch nicht ganz genau wie das VI arbeitet und wäre wieder für eure Hilfe dankbar. Ich denke, wenn ich es einmal durchschaut habe ist es nicht so schwer, den Gedanken in meinem Programm umzusetzen.
Min- und Max- Werte ausschließlich anzeigen lassen
Ich habe mich vom Thread leise zurückgezogen, weil deine Antwort völlig diffus war in Bezug auf die entscheidende Aussage, ob mein VI vom Ergebnis her der Sache richtig getroffen hatte oder nicht.
Mit der Umkehrung das will ich erklären: In der ersten Schleife werden die Index-Nummern derjenigen Zeilen ermittelt, bei denen ein neuer Zyklus beginnt.
In der zweiten Schleife werden von den einzelnen Zyklen die Minima und Maxima ermittelt. Dazu muß ich aus dem großen 1D Array jeweis einen enzelnen Zyklus auswählen. Dazu trenne ich vom Gesamtarray bei jedem Schleifndurchlauf jeweile einen Zyklus ab, bis nichts mehr übrig bleibt.
Mit dem Abtrennen fange ich von hinten an (deshalb die Umkehrung) , damit sich nicht die ermittelten Indexwerte im 1D-Array verändern. Also bei 8 Zyklen sieht es so aus:
a) 8. Index...Ende = 8. Zyklus, übrig im Array bleiben Zyklen 1..7
b) 7. Index...Ende = 7. Zyklus, übrig im Array bleiben Zyklen 1..6
usw.
Wie ich schon sagte, hatte die Entstehung des VIs einen "historischen" Hintergrund. Wenn es nur darum geht, die Maxima und Minima der einzelnen Zyklen zu ermitteln, müßte das auch auch einer Schleife zu machen sein. Und die NaN-Werte fallen weg, wenn sowieso keine Linien zwischen den Punkten gezogen werden sollen.
04.09.2010, 16:40 (Dieser Beitrag wurde zuletzt bearbeitet: 04.09.2010 16:42 von Safa.)
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo,
danke an euch allen, dass ihr mir versucht habt zu helfen. Ich denke man hätte das Problem bereits mit eurer guten Unterstützung lösen müssen.
Leider schaffe ich nicht das ganze in meinem Hauptprogramm umzusetzen
Ich habe nun mein VI vereinfacht und stelle es hier online. Bitte beachtet, dass die Umsetzung mit Min/Max nur beim Graph 2 erzeugt werden soll (der Obere). Die ExpressVIs "Signal sumulieren" stellen eigentlich die Messkarte da. Damit ihr seht, wie meine Messkarte angesteuert wird hänge ich noch ein Bild an.Irgendwie erhalte ich nicht das gewünschte Ergebnis, wie es in den VIs von Lucki und Jens G gezeigt worden ist. Wäre also nochmal dankbar, wenn Ihr mir helfen könntet, ich schaff es leider nicht
Wie gesagt, das Programm zeigt bisher alle Werte an, wie in meinem Beispiel-Bild (Beitrag #5).
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo,
ich habe es immer noch nicht geschafft, dass mein Graph nur die Min-/Max - Punkte anzeigt
Könntet ihr mir vielleicht nochmal versuchen zu helfen?
Ich würde mich freuen, wenn mir jemand nochmal eine Hilfestellung geben könnte. Vielleicht kann mir einer von euch nochmal zeigen, wie ich es hinbekomme, dass mein vereinfachtes VI die Anzeige richtig darstellt. Danach würde ich nochmal versuchen das Ganze in meinem Hauptprogramm umzusetzen.
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo safa,
solange du alle Werte in deinen Graphen darstellen lässt (durch den extensiven Einsatz von lokalen Variablen) - solange wirst du auch alle Werte präsentiert bekommen...
Leider ist dein VI (selbst nach automatischem Aufräumen) mehrere Screens meines Laptops groß, und ständig hin- und herscrollen macht da keinen Spaß. Deshalb nochmal folgender Tipp: sammle deine Daten in geeigneten Datenstrukturen. Werte die Daten nach deinem gewünschten Algorithmus aus und plotte nur die interessanten Werte in den Graph! Nur 2 Punkte pro Messreihe plotten - aber durchaus mehr Punkte speichern...
Außerdem würden deinem VI ein paar Delays gut tun - so rennt es bei 100% CPU-Last los! (Zum Glück nur auf einem Core, da blieb der Rechner noch benutzbar...) Was sollen diese FOR-Schleifen, mit denen du die Plot-Properties setzt? Und die dazu noch mit dem "i" der While-Schleife gekoppelt sind? Beim 1000sten Durchlauf der While-Loop willst du 1000 Plots neu formatieren? Kein Wunder, dass LabVIEW voll ausgelastet ist und nahezu vollständig im UI-Thread bechäftigt ist...
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo GerdW.
Danke schonmal für deine Tipps mit den Delays.
LabVIEW läuft jetzt wesentlich stabiler.
Eigentlich war die Grundidee des Programmes, mir eine Längenänderung über die Zyklen in einem Graphen zu zeichnen. Das heißt, dass alle Durchläufe in einem Graph dargestellt werden müssen. (Ein Zyklus entpspricht dem Durchlauf der großen For-Schleife)
Du schreibst, das ich nach dem 1000sten Durchlauf der Schleife 1000 Plots neu formatieren möchte.
=> Mein Ziel war es, jeden Plot mit unterschiedlichen Farben darzustellen. Ich wollte also einen Graphen erhalten, welcher immer die gleichen
Plotsymbole verwendet und mir zum Beispiel 500 Zyklen über Längenänderung in einem Graphen aufzeichnet. Das Ganze soll "just in time" geschehen.
Leider wird bereits nach dem 10ten Durchlauf LabVIEW so langsam, dass einige Punkte nicht gezeichnet werden. Der Rechner "stockt" irgendwie.
Also meine Frage: Wie kann ich "just in time Plots" erstellen, ohne 1000send Bilder zu aktualisieren und keine lokalen Variablen zu verwenden? Arrays kann ich ja erst nach dem Durchlauf der Schleifen auslesen, ich brauche die Ergebnisse aber schon vorher, damit der Benutzer erkennt, was aktuell passiert.
Die For-Schleifen sollten die Anzahl der Zyklen darstellen und somit für jeden neuen Zyklus eine neue Farbe in den Graphen zeichnen.
Ich habe noch einen weiteren Graphen, der Temperaturen über Längenänderungen auffast. Dieser Graph stockt ebenfalls nach 10ten Durchlauf und LabVIEW plottet nicht mehr alle Punkte in den Graphen. Hier muss ich aber lokale Variablen verwenden, da ich, wie Du auch schreibst " alle Werte präsentiert bekommen" möchte, oder?
Die While-Schleife ist somit mit den Plot-Properties gekoppelt, sodass pro Durchlauf der Temperaturen über Längenänderungen der gesamte Graph eines Zykluses in einer Farbe geplottet wird.
Wäre wiedermal für eure Hilfe dankbar.
Gruß,
Safa
18.10.2010, 07:52 (Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2010 08:04 von GerdW.)
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo Safa,
du kannst ohne Probleme 1000e Plots erstellen. Dein Fehler ist es jedoch, in jedem Schleifendurchlauf für alle Plots die Ploteigenschaften neu einzustellen. Warum? LabVIEW vergisst diese Einstellungen nicht, wenn du einen Plot hinzufügst! Außerdem kann man auch 1000 Ploteigenschaften in einem Rutsch vordefinieren und nicht mit jeder Iteration einen Plot mehr definieren... Also: einmal vor der Schleife einstellen und gut ist. Gerade diese ständigen PropertyNode-Aufrufe kosten dich unheimlich Rechenzeit!
Außerdem halte ich es für fragwürdig, 1000 (potentiell) übereinanderliegende Plots durch unterschiedliche Farben/Symbole markieren zu wollen... Gerade zusammengehörende Plots sollten doch eine Farbe haben, oder? Oder man macht ein "Augendiagramm" draus, bei dem die Farbe signalisiert, wie oft Kurven übereinander liegen (in LabVIEW leicht mit dem Intensitätsplot zu realisieren)!
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo GerdW,
ich habe nun die PropertyNode vor der Schleife definiert.
Ich habe daraufhin leider nicht die gleichen Plotsymbole erhalten. LabVIEW zeichnet nach einigen Plots einfach Linien statt Punkte.
Daraufhin habe ich das Forum durchstöbert und bin auf einen Beitrag von Soul85 gestoßen. Er / Sie scheint das gleiche Problem gehabt zu haben,
denn meine Graphen sehen seinen / ihren Plots sehr ähnlich. (Siehe Beitrag #7 von Soul85 "Standardplot bei Graphen erstellen", http://www.labviewforum.de/index.php?act=a...t&id=57603)
Ich habe natürlich den PropertyNode etwas anders angesprochen als Soul85, aber erhalte ähnliche Bilder.
Ich versuche nun ein kleines Beispiel-Programm zu schreiben, indem der PropertyNode vor der Schleife steht und schaue, ob es an meinem Programm liegt, oder ein anderer Fehler vorliegt. Danach versuche ich deinen Vorschlag mit dem Intensitätsplot umzusetzen. Wenn schon jetzt Tipps oder mögliche Fehlerquellen bekannt sind, wäre ich für eine Rückmeldung dankbar.
Min- und Max- Werte ausschließlich anzeigen lassen
Hallo,
ich habe nun das Problem mit den unterschiedlichen Plots in den Griff bekommen. Sie werden nun einheitlich gezeichnet.
Leider habe ich es immer noch nicht geschafft, dass ausschließlich die Min/Max-Werte ausgegeben werden.
Ich habe ein Beispiel VI programmiert und wäre euch dankbar, wenn ich noch einmal eure Hilfe in Anspruch nehmen könnte.
Ich habe versucht über Min/Max-Array (wie es in dem Beispiel vom Mechatronik-Ingenieur gezeigt wurde) und speichere nun durchaus mehr Werte als nötig,
wie es von GerdW empfohlen wurde. Leider wird in LabView alles in den Graphen geplottet.