Hallo,
ich bin blutiger Anfaenger in Labview und habe mich die letzten Wochen ein wenig eingearbeitet. Zur Zeit arbeite ich an einem Projekt, dass quasi zwei Naehrungsschalter zur Geschwindigkeitsmessung nutzt. Hierbei sollen die Werte anschließend in eine Tabelle abgelegt werden.
Das Problem ist, dass die Messung in einer While Schleife stattfindet. Logischerweise speichert das Programm die Werte kontinuierlich in der .csv Datei. Es soll aber so sein, dass nur ein Messwert pro Messung in die Tabelle eingefuegt werden soll.
Waere wirklich klasse wenn mir jemand helfen koennte. Zum Verstaendnis das Blockdiagramm.
Ich bin mir ziemlich sicher, dass man das Programm auch weitaus eleganter aufbauen kann. Ich bin, wie gesagt, Anfaenger und hoffe, dass ihr versteht, was ich da zusammengefummelt hab. Ich finde einfach keinen vernuenftigen Weg eine Bedingung zu schaffen, die den Messwert einmalig abspeichert.
Vielen Dank im voraus!!!
Hallo evil,
Zitat:Das Problem ist, dass die Messung in einer While Schleife stattfindet.
Nein, das ist kein Problem.
Zitat:Logischerweise speichert das Programm die Werte kontinuierlich in der .csv Datei.
Wieso soll das logisch sein?
Das Programm speichert die Werte kontinuierlich, weil du es so programmiert hast!
Zitat:Es soll aber so sein, dass nur ein Messwert pro Messung in die Tabelle eingefuegt werden soll.
Dann musst du es auch so programmieren!
Einfache Lösung: Speichere den letzten "v2"-Wert - und zwar nach der Messschleife (zeitlich und im BD)!
Zitat:Ich bin mir ziemlich sicher, dass man das Programm auch weitaus eleganter aufbauen kann.
Ja.
1. Schritt: Ctrl-U drücken…
2. Schritt: statt lokaler Variablen Drähte verwenden! THINK DATAFLOW!
3. Schritt:
RubeGoldbergs entfernen. Ein Vergleich eines boolschen Wertes mit einer Konstanten ist IMMER RubeGoldberg…
(13.05.2015 09:43 )GerdW schrieb: [ -> ]Hallo evil,
Zitat:Das Problem ist, dass die Messung in einer While Schleife stattfindet.
Nein, das ist kein Problem.
Zitat:Logischerweise speichert das Programm die Werte kontinuierlich in der .csv Datei.
Wieso soll das logisch sein?
Das Programm speichert die Werte kontinuierlich, weil du es so programmiert hast!
Zitat:Es soll aber so sein, dass nur ein Messwert pro Messung in die Tabelle eingefuegt werden soll.
Dann musst du es auch so programmieren!
Einfache Lösung: Speichere den letzten "v2"-Wert - und zwar nach der Messschleife (zeitlich und im BD)!
Zitat:Ich bin mir ziemlich sicher, dass man das Programm auch weitaus eleganter aufbauen kann.
Ja.
1. Schritt: Ctrl-U drücken…
2. Schritt: statt lokaler Variablen Drähte verwenden! THINK DATAFLOW!
3. Schritt: RubeGoldbergs entfernen. Ein Vergleich eines boolschen Wertes mit einer Konstanten ist IMMER RubeGoldberg…
Danke fuer deine Hilfe. Ich stand gedanklich wohl ziemlich auf dem Schlauch. Das Programm funktioniert nun, wie es soll - es speichert außerhalb der Schleife die Messwerte ab. Ich habe in dem Zuge wohl viel zu kompliziert gedacht. Tausend Dank!
Ich nochmal - ich habe es scheinbar doch noch nicht ganz verstanden.
Die Abspeicherung findet jetzt außerhalb der While Schleife satt. Nichtsdestotrotz speichert er mir die Werte kontinuerlich in die Tabelle ab und ich verstehe nicht warum.
Wenn ich den Block, der fuer das Tabellenspeichern verantwortlich ist in den True Rahmen ziehe, funktioniert es. Problem ist nur, dass dort der v Wert noch nicht berechnet wird und er quasi nach der zweiten Messung, die Daten der ersten Messung einfuegt.
Koenntest du mir nochmal auf die Spruenge helfen?
Hallo evil,
Zitat:Koenntest du mir nochmal auf die Spruenge helfen?
Da sind ja immer noch so viele lokale Variablen! Und daneben liegen ungenutzte Terminals im BD rum!
Und der RubeGoldberg ist auch immer noch enthalten…
Zitat:Problem ist nur, dass dort der v Wert noch nicht berechnet wird und er quasi nach der zweiten Messung, die Daten der ersten Messung einfuegt.
Falsch: das Problem ist die exzessive Verwendung lokaler Variablen.
Mit THINK DATAFLOW wäre das alles nicht passiert…
Zitat:Die Abspeicherung findet jetzt außerhalb der While Schleife satt.
Da ist ganz klar eine While-Loop um dein ganzes VI herum. also läuft dies alles IN einer Schleife…
Schau dir dein VI doch mal mit Highlight-Debugging an! So solltest du sehr schnell erkennen, was wann und warum ausgeführt wird!
Ich tippe ja auf einen Fehler bei den boolschen Verknüpfungen deiner beiden Bedienbuttons…
Zitat:ich bin blutiger Anfaenger in Labview
Dann lege ich dir explizit noch die Links in meiner Signatur ans Herz!