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!
Also, Ich schaffe es zu mindest, dass er mich nicht nach jeder Schleife fragt, ob ich abspeichern möchte. Und zwar musste ich den File path außerhalb der Schleife legen. So weit, so gut (s.Anhang)!
In der gespeicherten Datei stimmen die y Werte mit den ankommenden Signalen überein. Allerdings habe ich jetzt folgedende Probleme:
- Werte werden je nach Anzahl der Messungen in Blöcke geschreiben. Jeder Block wird anschließend von einer Leerzeile getrennt. Ich denke, es wird wieder das problem sein, das er nach jeder Iteration den Block speichert --> Dataflow!
- Meine x Werte stimme nicht. Eigentlich brauche ich dort Sekunden stehen. Stattdessen steht hier irgendeine andere Zahl. (s. Test
Weitere Vorgehensweise:
Ich muss dem Programm beibringen, dass er mir alle Werte eines gesamten Programmdurchlaufs untereinander abspeichert und nicht Iteration für Iteration. Nun würde ich mich an die Arbeit machen, ein For-Schleife in das Speicherkonstrukt mit einzubinden. Wie genau, dass weiß ich noch nicht. Damit hoffe ich, dem Programm sagenn zu können alle Werte in einem Zug aufzunehmen.
Ich möchte Euch nicht nerven mit meinen Anfängerposts, ich versuche Euch nur auf den aktuellen Stand meiner (unserer) Arbeit zu bringen und hoffe dabei natürlich auf reichlich weitere Tipps.
Zitat:Jeder Block wird anschließend von einer Leerzeile getrennt.
Falsch, die Leerzeile befindet sich mitten im Datenblock - zwischen Kopfzeile und Daten.
Zitat:Ich denke, es wird wieder das problem sein, das er nach jeder Iteration den Block speichert
Falsch gedacht.
Das Problem ist, dass du eine TRUE-Konstante an den Eingang "Kopfzeile schreiben" angeschlossen hast.
Hatte ich dich schon mal auf die Hilfe zur Funktion hingewiesen?
Zitat:Meine x Werte stimme nicht. Eigentlich brauche ich dort Sekunden stehen. Stattdessen steht hier irgendeine andere Zahl. (s. Test
Die X-Werte sehen doch perfekt aus!
Da steht nicht "irgendeine" Zahl, sondern der Zeitpunkt deiner Messung!
Guck dir doch deine CSV-Datei einfach mal mit einem Editor an, dann liest du Dinge wie "15.04.2015 11:12:08,531250"…
Zitat:Ich muss dem Programm beibringen, dass er mir alle Werte eines gesamten Programmdurchlaufs untereinander abspeichert und nicht Iteration für Iteration.
Hi,
bei der Kopfzeile statt true ein false setzen habe ich versucht. Nun habe ich trotzdem eine Leerzeile mit zwei Semikolon enthalten. Außerdem hätte ich ja gerne eine Kopfzeile, wo drinne steht welche Signale zu welchen Kanal gehören, aber eben nur einmal und nicht zu jedem Messblock.
Ok Jetzt verstehe ich die Zeit z.B. 13:11:26,619375. Interessieren tut mich die aktuelle Uhrzeit eher weniger.
Ich dachte er speichert mir die Sekunden ab, die auf den Graphen zu erkennen sind. Das wäre mir lieber, um meine Daten leichter in Excell auszuwerten.
Verstehst du mein Problem?
Bsp:
Time [ms] Spannung
0 1V
1 1,5V
. .
. .
. .
Sry das Beispeil verrückt ständig.
Ich fasse also meine Probleme Zusammen:
- Leerzeilen weggbekommen
- Zeit umstellen auf akutelle Messzeit und nicht die die aktuelle Uhrzeit
Liebe Grüße
Mare
15.04.2015, 12:47 (Dieser Beitrag wurde zuletzt bearbeitet: 15.04.2015 12:49 von GerdW.)
Zitat:Außerdem hätte ich ja gerne eine Kopfzeile, wo drinne steht welche Signale zu welchen Kanal gehören, aber eben nur einmal und nicht zu jedem Messblock.
Dann musst du das auch programmieren! Wenn du eine Konstante anschließt, bekommst du eben entweder immer oder nie eine Kopfzeile!
Wenn du nur beim ersten Schreibzugriff eine Kopfzeile haben willst, dann solltest du eben keine Konstante anschließen, sondern eine entpsrechend programmierte Angabe!
Zitat:Ich dachte er speichert mir die Sekunden ab, die auf den Graphen zu erkennen sind.
Du hast doch gar keinen Graphen: du verwendest einen Chart! (Wichtiger Unterschied, sei bitte bei den Begriffen korrekt!)
Außerdem ist der File-Funktion vollkommen egal, was dein Chart anzeigt: THINK DATAFLOW bedeutet auch, dass diese Funktion eine Kopie der Daten bekommt und EBEN NICHT die Formatierung der X-Achse des Charts…
Du kannst gern eine weitere Waveform hinzufügen, die dann deine Zeit in Sekunden enthält. Die musst du dann aber selbst generieren!
Oder du programmierst dein eigenes VI zum Speichern der Daten, wenn dir das in LabVIEW vorhandene nicht gefällt…
Zitat:Ich fasse also meine Probleme Zusammen
Noch was: Ich halte es für ein großes Problem, wenn man ständig VIs vorgesetzt bekommt, wo der Programmierer es nicht schafft, die AutoCleanup-Funktion mittels Ctrl-U aufzurufen…
sry war für kurze Zeit im Ausland, hatte keine zum Antworten.
@Gerdk, das mit der Aufräumfunktion merke ich mir, ziehe das nur gerne für mich auseinander, weil ich so (Hoffe) einen besseren Überblick habe
Habe es endlich geschafft das meine Daten schön untereinander speichern, nur eben das mir der Zeit klappt nicht.
Wie würde Euer Ansatz aussehen um nicht die aktuelle Uhrzeit beim Start der Messung zu Speichern, sondern die Zeit ab der die Messug beginnt, also nur die Sekunden und Minuten die während der Messung vergehen?
Zitat:ziehe das nur gerne für mich auseinander, weil ich so (Hoffe) einen besseren Überblick habe
Solange aber dann Drähte verdeckt sind und Funktionen "über" Strukturen liegen, obwohl sie eigentlich "danach" liegen, sehe ich keine Verbesserung der Übersichtlichkeit…
Zitat:die Zeit ab der die Messug beginnt, also nur die Sekunden und Minuten die während der Messung vergehen?
Tipp: Messzeit = (aktuelle Zeit) - (Zeit bei Start der Messung)…
Das ist die allgemeine Methode, um Zeitdifferenzen zu bestimmen!
Hmm.. ja irgendwie logisch was du schreibst, danke fürn Tipp!
Aber wie ziehe ich denn Zeiten von einander ab? Ich kriege es nicht gebacken die Startzeit und die aktuelle Messzeit zu ermitteln. Meine Get Date/Time in Seconds Fuktion übernimmt doch schon diesen Part. Wie kann ich ihr sagen, dass diese beiden Zeiten haben möchte?
Habe leider noch kein richtiges Gefühl dafür, was und wieviel Infos ich LV geben muss, um dieses Problem zu lösen.
Ich denke mein Fehler liegt noch woanders. Kann es sein, dass ich zum speichern mit anderen Arrays arbeiten muss? Denn wenn ich jetzt Messungen mache, dann zeigt er mir trotzdem nur die aktuelle Zeit.
Ich glaube, dass ich aufn Holzweg mit diesem Zeitformat bin. Er spuckt mir nur dieses Zeitformat z.B. 14:38:25,381250 raus. Sprich der x-te Wert meiner Messung war um 14 uhr 38 min und 25,381250 sek. Mein Bestreben ist es vom Start aus gesehen die Zeit zu stoppen, z.B. Start Messwert0 / 0 sek | Messwert1 / 0 sek | Messwert2/ 1sek usw.
Kann mir einer sagen wo mein Fehler im Vi ist oder was ich evtl. vergessen habe? Hier im Forum stoße ich fast nur auf neuere Versionen von LV, deshalb kann ich evt. nützliche VI nur selten öffnen.
Zitat:Du kannst gern eine weitere Waveform hinzufügen, die dann deine Zeit in Sekunden enthält. Die musst du dann aber selbst generieren!
Oder du programmierst dein eigenes VI zum Speichern der Daten, wenn dir das in LabVIEW vorhandene nicht gefällt…
Wenn du eine weitere Waveform selbst generierst, die in ihren Y-Daten die gewünschte Zeitangabe enthält, kannst du sehr wohl deine Zeitachse erreichen.
Du kannst auch deine eigene Speicherroutine programmieren, wenn dir die vorhandene nicht zusagt…