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 folgendes Problem mit der VI, die ich im Anhang habe. Ich steuer zwei Schrittmotoren nacheinander und will, wenn Motor 1 sich dreht, Messwerte aufnehmen und in einer Liste oder Tabelle speichern. Mein Problem ist, dass ich diesen Messablauf erstmal 10 mal durchlaufen lassen will. Somit will ich 10 Spalten mit den ganzen Messwerten als CSV oder TXT auf dem Desktop speichern und mir mit den Werten ein 3D-Plott in LabVIEW ausgeben lassen.
Was ich nicht hinkriege ist, dass beim zweiten Durchlauf die 80 Messwerte in die 2. Spalte zu schreiben. In der VI ist der Ablauf mit den Schrittmotoren zweimal in einer For-Schleife. Solange sich Motor 1 dreht, sollen die Werte gespeichert werden. Ich hoffe, dass ihr den Ansatz erstmal verstanden habt. Da ich ein LabVIEW Anfänger bin, ist die VI wahrscheinlich unübersichtlich. Ich habe die VI schon paar mal komprimiert und vielleicht gibt es ja von den einen oder anderen paar Tipps.
Ablauf der VI:
->AGILENT auf den lokalen Zustand bringen
-> Motor 1 auf Position 60000 || Messwerte aufnehmen
-> Motor 1 dreht sich zurück
-> Motor 2 dreht sich einmal um dich Achse (Winkel wird dardurch verändert)
das ganze dann erstmal 10 mal
-> Ausgangszustand
Plot der 10 Spalten mit den 80 Messwerten.
Vielleicht könnt ihr ja kleine VI's anhängen oder Bilder mit hochladen. Vielen Dank erstmal und wegen der VI nicht schimpfen. Ich versuche das übersichtlich zu halten
In eine ASCII-Datei (und nichts anderes ist eine csv-Datei) kannst du nicht Spalte nach Spalte schreiben, nur Zeile nach Zeile.
Lösungsmöglichkeiten:
- Zeilenweise schreiben, später umformatieren.
- Keine csv-Datei verwenden, sondern z.B. ein tdms-Format. Hier kannst du Gruppen definieren, jeder Scan wäre eine neue Gruppe.
- Erst einmal alle Daten im RAM halten und am Ende in Datei schreiben.
- sonstige andere Ideen...
Gruß, Jens
P.S.: Das nächste Mal in Übereinstimmung mit den LVF-Regeln ein wenig mehr Geduld. Du darfst einen Thread frühestens nach 24 h ohne Antwort hochpushen. Bei dir waren es nur 19 h.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Danke erstmal für die Anwort
Zeilenweise habe ich es ausprobiert, allerdings fangen da wieder die Kopfschmerzen an. Nach dem zweiten Messablauf, stehen insgesamt 160 Messwerte untereinander, die ich dann in Excel kopiere und in zwei Spalten trenne. Den Punkt ersetze ich dann mit einem Komma und füge danach ein XY-Graph ein.
Wenn ich jetzt wüsste, wie ich das in Labview vereinfach kann, wäre das super. Aber ich denke, dass das noch einfacher geht.
Wie funktioniert das mit TDMS? Speichere ich die ersten 80 Messwerte im RAM ab und schreibe die dann in eine TDMS-Datei? Oder werden alle 160 in jeweils zwei Gruppen gespeichert und dann erst geschrieben?...
Wie zähle ich die Gruppe denn hoch? Wie muss die VI aussehen?
(18.04.2013 19:13 )Pawel2012 schrieb: Zeilenweise habe ich es ausprobiert, allerdings fangen da wieder die Kopfschmerzen an. Nach dem zweiten Messablauf, stehen insgesamt 160 Messwerte untereinander...
Du könntest deine 80 Messwerte als kompletten Datensatz nach der Messung abspeichern:
Dann hast du alle Messwerte in einer Zeile. Vorausgesetzt du entfernst etwaige Steuerzeichen, die mitgeschickt werden. Das nächste Messwertepaket kommt dann in die nächste Zeile.
(18.04.2013 19:13 )Pawel2012 schrieb: ...die ich dann in Excel kopiere und in zwei Spalten trenne. Den Punkt ersetze ich dann mit einem Komma und füge danach ein XY-Graph ein.
Wenn ich jetzt wüsste, wie ich das in Labview vereinfach kann, wäre das super. Aber ich denke, dass das noch einfacher geht
Du kommst auch ohne Excel aus. Du kannst die Datei ja wieder in LabVIEW einlesen und die Daten plotten. Schön wäre jetzt gewesen zu sehen, wie du die Daten wieder einliest (Read from Spreadsheet sollte in deinem Fall ausreichen)?
Zusätzlich: Soll die Anzeige der Messwerte im gleichen VI erfolgen, oder in einem separaten?
Ein paar Anmerkungen zu deinem VI, die mir auf die Schnelle aufgefallen sind:
Die TRUE-Konstante am Caseselktor ist Unsinn, den Case kannst du komplett weglassen
Die Sequenzstrukturen kannst du ebenfalls weglassen. Der Datenfluss bestimmt die Abarbeitungsreihenfolge
VISA-Resource immer am Anfang initalisieren und nicht innerhalb einer Schleife
VISA-Close fehlt
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
Wenn ich das so mache, wie es auf dem Bild zu sehen ist, bekomme ich die Werte untereinander und nach 6 (habe von 80 auf 6 reduziert) Messpunkten ein ";" (s.Anhang).
Kann ich diese Datei dann problemlos einlesen und in der gleichen VI Plotten? Ich würde es ganz gut finden, wenn das alles in der gleichen VI erfolgt.
Read from Spreadsheet werde ich mal eben ausprobieren.
So sieht das dann mit Read from Spreadsheet aus.
So..ich habe mir jetzt mal die Messdaten.csv so geändert, dass das in der Tabelle richtig angezeigt wird.
Die erste "Saplte" soll der erste Messvorgang sein, und die zweite "Spalte" soll der zweite Messvorgang sein. Ich muss jetzt nur versuchen die Messwerte so in die CSV zu kriegen.....Wieso ist das so komplizerit??
(19.04.2013 18:20 )Pawel2012 schrieb: Wieso ist das so komplizerit??
So kompliziert ist das Ganze überhaupt nicht. Nur hast du uns nicht mitgeteilt, in welchem Format die Messwertepakete ankommen, also inklusive eines Line-Feeds nach jedem Messpunkt.
Die Lösung, um die Messwertpakete in einem File zu speichern ist, den String in ein Array konvertieren und dann als Zeile in die Datei schreiben:
Die Datei kannst du dann mit 'Read from Spreadsheet' dann genaus einlesen und hast damit alle Messwerte auf einmal eingelesen
Anmerkung: Spaltenweises Schreiben einer *.csv (*.txt, usw) ist nicht möglich, das geht direkt nur zeilenweise. Indirekt geht es nur, wenn du die Datei einließt, die Datenpunkte des neuen Datensatzes an jede Zeile anhängts (also das eingelesen Array um eine Spalte erweiterst) und dann wieder abspeichert. Ist aber IMHO zuviel Aufwand.
Beste Grüße,
NWO
9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris.
NI schrieb:To use the abort button is like using a tree to stop a car!
Umständlich aber es funktioniert Danke NWO Jetzt kann ich den Graphen sehen und jetzt suche ich natürlich eine andere Graphenansicht. So soll das dann in etwa aussehen (s. Anhang).
Bis jetzt ist dieser nicht schöne LabView Graph mit dem schwarzen Hintergrund. Ich weiss nicht, ob ich das als neues Thema oder ob man das vielleicht hier diskutieren sollte.
22.04.2013, 11:18 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2013 11:18 von jg.)
(22.04.2013 11:11 )Pawel2012 schrieb: Bis jetzt ist dieser nicht schöne LabView Graph mit dem schwarzen Hintergrund. Ich weiss nicht, ob ich das als neues Thema oder ob man das vielleicht hier diskutieren sollte.
Neues Thema! Bisher ging es um Speicherung von Daten in einem File (deshalb auch ), jetzt um eine Graph-Darstellung.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!