X Bildlaufleiste bei Signalverlaufsdiagram stoppen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: X Bildlaufleiste bei Signalverlaufsdiagram stoppen (/Thread-X-Bildlaufleiste-bei-Signalverlaufsdiagram-stoppen) Seiten: 1 2 |
X Bildlaufleiste bei Signalverlaufsdiagram stoppen - Carp - 24.04.2016 13:08 Hallo, zunächst einmal möchte ich sagen, dass ich noch nicht lange mit LabVIEW arbeite. Deshalb bitte ich um Verständnis, falls ich eure Lösungen/Ratschläge evtl nicht sofort verstehe. Ich habe im Rahmen eines Projektes ein schon bestehendes Programm bekommen. Dieses möchte ich soweit es geht verbessern und neue Funktionen implementieren. Soweit ich das beurteilen kann, ist das Programm sehr unsauber und teilweise verwirrend (für mich) gestaltet wurden. Beispielsweise ist das Main VI ca. 8 Bildschirme groß und es ist wenig bis gar nicht kommentiert. Der Screenshot unten ist daher nur ein kleiner Teil des Main VI. Zu meinem Problem: Wie in dem Bild zusehen ist, gibt es sehr viele Diagramme (D5 bis D33) die den Verlauf von einer Messtrecke angeben. Ich möchte allen Diagrammen eine X-Bildlaufleiste hinzufügen umd den Verlauf besser beobachten zu können. Wenn ich einfach nur die Bildlaufleiste hinzufüge, springt mir der Graph bei jeder Aktualisierung zurück zum neusten Wert. Um dies zu verhindern dachte ich mir, dass ich das Diagramm per Button stoppe und die Historie in eine Queue speicher. Funktioniert auch soweit wie ich mir das vorgestellt habe und ist für D5 bereits implementiert (Case Struckutr links mit Queue). Wenn ich das jetzt für jedes Diagramm einzeln erstelle, wird das VI meiner Meinung nach nur noch unübersichtlicher. Auch wenn ich ein SubVI daraus erstelle, bleiben immer noch die vielen Queues. Habt ihr eine Idee wie ich das schöner/besser gestalten kann? Gerne auch bezogen auf alles was ihr seht. Ich hatte mir überlegt die größere rechte Casestruktur durch eine Eventstruktur zu ersetzen, aus irgendeinem Grund wurden die Diagramme dann aber nicht mehr mit Werten gefüllt.Das ist aber ein anderes Thema. Vielen Dank schonmal im Voraus. RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - GerdW - 24.04.2016 16:56 Hallo Carp, herzlich willkommen im Forum! Zitat:Soweit ich das beurteilen kann, ist das Programm sehr unsauber und teilweise verwirrend (für mich) gestaltet wurden. Beispielsweise ist das Main VI ca. 8 Bildschirme groß und es ist wenig bis gar nicht kommentiert.Ich würde damit anfangen, dieses MainVI aufzuräumen und in sinnvolle subVIs zu gliedern. Erst wenn das geschafft ist und die Funktion dann immer noch gegeben ist, würde ich mich um das Hinzufügen weiterer Funktionen kümmern! Zitat:Wenn ich einfach nur die Bildlaufleiste hinzufüge, springt mir der Graph bei jeder Aktualisierung zurück zum neusten Wert.Probiere mal die Autoskalierung der X-Achse zu deaktivieren… Zitat:Habt ihr eine Idee wie ich das schöner/besser gestalten kann?In meiner Software gibt es einen globalen Datenspeicher, der die letzten 15-60min an Messdaten vorhält (je nach Rechenleistung). Daraus werden dann die jeweils benötigten Messdaten geholt und in Graphen (!) dargestellt. Ist etwas mehr initialer Aufwand, dafür aber recht flexibel… (Die Messdaten selbst sind je Messkanal in einem 1D-Array abgelegt. Die Messkanäle werden in Variant-Attributen verwaltet.) RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - Carp - 24.04.2016 19:42 Vielen Dank für deine schnelle Antwort Gerd! Mein erster Gedanke war auch das MainVI aufzuräumen. Aufgrund meiner er dürftig vorhanden Kenntnisse, stelle ich mir das aber sehr Zeitaufwendig vor. Und Zeit ist eine Ressource die bei mir Momentan nur begrenzt vorhanden ist. Trotzdem möchte ich da wo es geht natürlich verbessern. Deshalb auch meine Frage ob ihr explizite Vorschläge für den angehängten VI Ausschnitt habt. Ich denke, dass ich mit meinem derzeitigen Know-How zwar die reinen Funktionen implementieren kann, aber es dadurch nicht grade schöner wird. Vielleicht könntet ihr mir einmal ein paar Tipps geben, wie ihr diesen Bereich "aufräumen" würdet. Einfach damit ich mal ein bisschen inspiriert werde wie man so etwas angeht. Autoscale ist aus. Sonst wäre doch die x-Bildlaufleiste eh überflüssig oder? Oder meinst du etwas anderes? Wahrscheinlich habe ich mich unklar ausgedrückt deshalb noch mal ein neuer Versuch: Das Diagramm ist z.B. auf der X-Achse von 0 bis 100 skaliert. Sobald das Maximum erreicht ist, erweitert sich ja der Bereich jeweils um den neusten Wert. Sprich 1 bis 101, 2 bis 102 usw.. Dafür möchte ich die Bildlaufleiste nutzen um beispielsweise wieder auf 0 bis 100 zu kommen. Solange ich die Leiste mit der Maustaste gedrückt halte, funktioniert das auch. Wenn ich die Maustaste loslasse, springt das Diagramm aber direkt zum neustens Wertebereich und läuft weiter. Ich möchte mir diesen Bereich aber etwas länger ansehen und außerdem nicht die ganze Zeit die Maus gedrückt halten. Aus diesem Grund die Queue als Puffer für die neusten Werte und der Stop Button. Wie gesagt: es funktioniert soweit wie ich es mir vorgestellt habe. Jetzt ist es aber so, dass ich ca. 17 dieser Diagramme habe. In dem Screenshot habe ich meine Lösung nur für das Diagramm D5 realisiert. Wenn ich jetzt für jedes der 17 Diagramme meinen Lösungsweg beibehalte, wird das VI noch unübersichtlicher als es jetzt schon ist. Meine Frage ist also: Gibt es einen anderen "besseren/schöneren" Weg meine Funktion zu realisieren? Kannst du mir vielleicht deinen globalen Datenspeicher noch ein wenig genauer erläutern? Gern auch Links zum schlau machen zu diesem Thema. RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - GerdW - 25.04.2016 17:43 Hallo Carp, Zitat:Mein erster Gedanke war auch das MainVI aufzuräumen.Wenn das auch dein erster Gedanke war, dann solltest du diesen umsetzen. Ein schlechtes Programm wird nicht dadurch besser, dass man noch weiteren Code hinzufügt! Zitat:Wenn ich die Maustaste loslasse, springt das Diagramm aber direkt zum neustens Wertebereich und läuft weiter.Das ist so eine Eigenart der Charts. Lässt sich durch Nutzung von Graphen umgehen. Dann brauchst du sowieso einen eigenen Datenspeicher… Zitat:Kannst du mir vielleicht deinen globalen Datenspeicher noch ein wenig genauer erläutern? Gern auch Links zum schlau machen zu diesem Thema.Google mal nach "LabVIEw red black tree", dann findest du ein "Darrens Nugget" zum Thema… RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - Lucki - 26.04.2016 08:55 (24.04.2016 13:08 )Carp schrieb: Habt ihr eine Idee wie ich das schöner/besser gestalten kann? Gerne auch bezogen auf alles was ihr seht.Durch Verwendung von mehr Clustern, den Funktionen Array2Cluster, Cluster2Array, Zusammenfassuung von Anzeigegruppen auf dem FP in Cluster ließe sich etwa 90% Draht auf dem BD einsparen und die benötigte Fläche drastisch verringern. Vieleicht kannst Du einen Teil des VIs mal posten, dann könnte man das mal demonstrieren. Wahnsinn ist auch das SubVI mit (gefühlt) 1000 Ausgängen. Solche Daten wird man immer als Clusterstrang ausgeben - und dann natürlich auch als Cluster weiterverarbeiten und auf dem FP darstellen. Gruß Ludwig RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - Carp - 10.05.2016 08:34 Hallo Lucki, wenn auch ein bisschen verspätet. Im Anhang ist das teil VI (einfach ausgeschnitten) also nicht über das FP darin wundern. Das eigentliche FP ist im Screenshot dargestellt. Ich hatte das mit den Clustern schonmal überlegt, es aber nicht geschafft die ganzen Diagramme zu clustern. Deshalb gehe ich gerne auf dein Angebot bezüglich der Demonstration ein. Vielen Dank schonmal RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - GerdW - 10.05.2016 08:50 Hallo Carp, "missing subVI Kali.vi"… RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - Carp - 10.05.2016 09:16 Hi, im Anhang sind die enthaltenen SubVI´s im Zip. Hoffe dass es jetzt geht. Falls es immer noch nicht geht, bitte ich um Hilfe. RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - GerdW - 10.05.2016 09:36 Hallo Carp, erste Hinweise: - in Kali.vi liest du mit jeder Iteration erneut zwei Dateien ein: ändern die sich wirklich so oft? Würde es nicht ausreichen, diese einmal zum Start einzulesen? - Diese Kalibrierwerte werden zu einem 1D-Array zusammengebaut. Warum wandelst du dieses Array in einen Cluster um, um dann den Cluster in seine Elemente zu zerlegen? Warum nicht einfach IndexArray??? - Alle "Kali Dxx.vi" sind identisch aufgebaut, nur die Rechenparameter sind unterschiedlich. Warum also so viele unterschiedliche subVIs? Warum nicht einfach ein subVI, welches noch zwei Inputs für die jeweilige Skalierung bekommt? Warum nicht diese Skalierungsparameter als 2D-Array bereitstellen? Warum keine FOR-Loop, die die Umrechnung über die nötigen Kanäle autoindizierend vornimmt? - Warum FormulaNodes, um eine einfache Subtraktion zu berechnen? - Es ist nicht gut, wenn Inputs/Outputs eines subVIs in Case-Strukturen versteckt werden. Die jeweiligen In/Out-Werte sind je nach aufgerufenem Case undefiniert! Grundregel: mit dem ConnectorPane verbundene FP-Elemente immer außerhalb aller Strukturen platzieren! - Warum lokale Variablen in Kali.vi - wenn daneben die Terminals ungenutzt im BD liegen? ("Masse", "Temperatur") - Warum wird der DAQmx-Task in Kali.vi andauernd gestartet und gestopp? Warum nicht einfach einen Task anlegen, der "auf Anforderung" Daten einliest? Jetzt hast du erstmal genug aufzuräumen. Poste bitte dein Resultat nach diesen Änderungen! RE: X Bildlaufleiste bei Signalverlausdiagram stoppen - Carp - 20.05.2016 14:50 (10.05.2016 09:36 )GerdW schrieb: Hallo Carp, Im Anhang befindet sich die neue Version. Gibt es eine Möglichkeit eine Registerkarte in ein Cluster zu stecken ? Ich möchte die Diagramme gerne weiter zusammen fassen ohne das Layout stark zu verändern. Wenn ich an das Ausgangsarray ''Messwerte'' vom SubVI ein arraytocluster hänge und dann unbundle, gibt er mir nur Anschlüsse für die Werte 0-8 und nicht bis 15 (eigentliche Array länge) ? Kann mir das einer erklären? Ich brauch im Moment sehr lange für alles, da ich zur Zeit nur meine linke Hand zur Verfügung habe, was sehr mühselig ist. Daher danke für eure Geduld. |