Hallo zusammen,
ich habe grade erst mit meiner Masterarbeit angefangen und bin eigentlich andere Programmiersprachen gewöhnt, wenn ich auch zugeben muss, dass ich darin nicht besonders bewandert bin. Nun habe ich als Aufgabe, die Daten eines über USB angeschlossenen Oszilloskops auszulesen und in eine Datei zu speichern, über einen Zeitraum dessen Ende mit Betätigung der "Stop"-Taste bestimmt wird.
Mein Ziel: Auslesen der Spannung (Peak to Peak) und der Frequenz, Auflistung von Frequenz, Spannung und Zeit in einer Text-Datei.
Praktischerweise ließ sich ein Teil in den Archiven der NI-Seiten finden, doch dieser Teil führt nur zum Auslesen (und möglichen Speichern) einer Messung, entweder Frequenz ODER Spannung.
hier wäre der Link dazu:
http://forums.ni.com/t5/LabVIEW/Tektroni...82#M524778
Mein Problem ist jetzt, dass ich zum einen gerne diese Basis-Aufgabe lösen würde, mich aber leider noch wenig mit LabView auskenne, und zum anderen die Beschreibungen in der Hilfe von LabView völlig unzureichend finde.
Im Anhang lade ich meinen bisherigen Entwurf hoch, er ist umständlich, da mir nicht klar ist, was genau der Teil von NI tut. In der Hoffnung einen regelmäßigen Wechsel jede 0,5 Sekunden zu haben und entsprechend die Daten listen zu können, habe ich eine Struktur aufgebaut die leider nicht funktioniert.
Jede Art der Hilfe wäre überaus nett und erfreulich!
Danke und beste Grüße,
MisterCurry
Hm hat keiner einen oder mehrere gute Tipps?
Hätte gerne die zwei Messgrößen von dem Oszilloskop ausgegeben - da ist zur Zeit mein größtes Problem, bzw. dass ich es nicht schaffe diese zwei vernünftig zu sortieren.
Beste Grüße,
MisterCurry
Hey ich hoffe über die Osterfeiertage ist die Bereitschaft für eine Antwort etwas gestiegen!
Meine zwei größten Probleme sind folgende:
Ich möchte gerne, dass in dem Array die Daten aus der wechselnden Sequenz wie folgt gespeichert werden:
Data11 Data22
Data12 Data22
Data13 Data23
Data14 Data24
Data15 Data25
... ...
Dazu habe ich wie im Anhang zu ersehen ist, gemacht was ich für richtig gehalten habe, hier nochmal nur den Ausschnitt, vielleicht ist es dann etwas leichter in meinem Chaos zu einer Lösung zu kommen.
Hoffe auf Tipps zur Lösung meines Problems, beste Grüße
MisterCurry
Hi,
bekommst Du denn mittlerweile die Daten aus dem Oszilloskop raus? Wenn ja, welches Format haben die? Array oder Einzelwerte?
Das, was Du da machst, um das Array zu füllen ist umständlich und ehrlich gesagt auch überflüssig: LabView bietet mit den Arary-Funktionen (Array verbinden z.B.) da alle nötigen Möglichkeiten zu (Tipp: Hilfe lesen und mal die Optionen des VIs verändern). Wenn Du einzelne Werte aus dem Oszi rausbekommst, wären Schieberegister sicherlich eine gute Option, über die Du mal nachdenken könntest...
Grüße,
ch
Hallo MrCurry,
wenn du schon dabei bist, dein VI umzugestalten, kannst du deinen TRUE/FALSE-Schalter auch hiermit ersetzen:
[
attachment=39394]
Dein Konstrukt sieht schon sehr RubeGoldberg-mäßig aus
Huhu,
zunächst einmal danke für die Antworten!
Im Anhang ein weiteres "professionelles" Paintbild zur Veranschaulichung; Die abgebildete Schaltung spricht das Oszilloskop an und stellt es auf die eingebenen Einstellungen ein, dabei wird der Einstellung entsprechend ein Wert ausgegeben und abgebildet, das Ergebnis erscheint im "Measurement" bezeichneten orangenen Teil (= Array ?!); lässt man diese ausgelesenen Daten in eine Datei schreiben, ergibt es eine Tabelle der Form:
Data11
Data12
Data13
...
Vom Prinzip her erwünscht, allerdings soll das Programm eine weitere Messgröße im Optimalfall zeitgleich, im akzeptablen Fall in der selben Sekunde auslesen. Daher habe ich diese Funktion in der durchwechselnden Struktur eingebettet; das resultierende Ergebnis ist leider nicht das erwünschte, daher muss der Fehler noch im Bereich des in das Array schreibens/ Daten auslesen liegen.
An GerdW, danke ich nehme das mit dem RubeGoldberg-mäßig mal als Kompliment und baue der Übersichtlichkeit zuliebe dankend deinen Vorschlag ein! Meine Frage, i läuft von 0 (?) bis n, die Bedingung ist nun i und 1 = 0, daraus folgt true oder false -> in welchem Fall wechselt das nun zwischen true und false hin und her? Mein Fehler muss ja beim Verständnis der laufvariablen i liegen, vielleicht könnte mir da kurz jemand einen Satz zu erklären, danke in jedem Fall!
An chrissyPu, der neue Paint-teil soll zeigen, dass es sich dabei möglicherweise um ein Array handelt, was zunächst die orange Färbung erklären würde, allerdings kann man sich die Werte anzeigen lassen und eben auch in eine Datei schreiben, getestet habe ich es allerdings nur mit dem schreiben in eine Datei innerhalb der selben Schleife, nicht ausserhalb; meine neueste Idee lade ich auch im Anhang hoch, etwas geordneter, allerdings immernoch nicht funktionierend; Ich könnte auch ein Beispiel der erstellten Datei hochladen, sollte das hilfreich sein.
Beste Grüße und nochmals danke für die Antworten!
MisterCurry
Hallo MrCurry,
Zitat:Meine Frage, i läuft von 0 (?) bis n, die Bedingung ist nun i und 1 = 0, daraus folgt true oder false -> in welchem Fall wechselt das nun zwischen true und false hin und her?
Kontexthilfe lesen!
Die UND-Funktion arbeitet bei Integerwerte bitweise, d.h. "i AND 1" testet das LSB des Counters. Wenn i gerade ist, ist das LSB 0 und das Ergebnis FALSE, während bei ungeraden Zahlen das LSB gesetzt ist und das UND ein TRUE ergibt...
Hallo MrCurry,
Zitat:der neue Paint-teil soll zeigen, dass es sich dabei möglicherweise um ein Array handelt, was zunächst die orange Färbung erklären würde
Die Farbe eines Drahtes hat
nur mit dem zugrundeliegenden Datentyp zu tun. Die Aussage zu Array (Größe und überhaupt) steckt dagegen in der Dicke des Drahtes...
Hast du schon mal den Grundkurs LabVIEW absolviert?
Vielen Dank für die Aufklärung.
Ich muss zunächst gestehen, dass ich mich nur sehr widerwillig mit LabView befasse, da ich C/C++/Basic usw. gewohnt bin und es deutlich einfacher finde meinen Text (der absolut eindeutig ist) vor mir zu haben. Befehle sind zur Not einfach hinterfragt und wunderbar erklärt, während mich die unterschiedlichen Zeichnungen der Funktionen und die wirklich mehr als unzureichende Erklärung der Hilfe absoult wahnsinnig macht. Hinweise über Arrays zu lesen hat mir leider nicht geholfen, auf der Homepage von LabView, dieses Tutorial welches du angesprochen hast hat auch keinen weiteren Effekt gehabt; daher hatte ich hier auf konkrete Tipps gehofft, viele finden LabView einfach zu handeln; ich kann dem in der Ausführung der Programme nicht widersprechen, aber das erstellen mit den Problemen und Einschränkungen finde ich schrecklich. Prinzipiell müsste ich sicherlich auch einen kompletten Kurs belegen um einen Durchblick zu gewinnen, wohingegen der großteil der anderen Programmiersprachen sicherlich "einfacher" ist, da das geschriebene aus meiner Hand kommt und sich kein Code hinter einem Symbol versteckt dessen Sinn nur durch Ausprobieren zu erschließen ist.
Ich möchte hier aber keinen Frust abladen, sondern Hilfe suchen und hoffentlich finden, da sich in meiner näheren Umgebung zwar viele Leute befinden die mit LabView "arbeiten", davon aber die wenigsten mehr als einige Modifikationen an bereits existierenden Programmen haben vornehmen müssen.
Ich glaube mein aktuell drängendstes Problem auf den Array-Teil eingeschränkt zu haben. Lässt man sich anzeigen was geschrieben wird, ist es immer das letzte Element. So wird demnach nicht das gesamte Array in die Datei geschrieben. Allerdings ist auch nicht ganz klar ob die Funktionen wie sie von mir erwünscht sind stattfinden:
1 - Daten werden in Spalte 0 Zeile 0 geschrieben
2 - Daten werden in Spalte 1 Zeile 0 geschrieben
3 - Daten werden in Spalte 0 Zeile 1 geschrieben
4 - Daten werden in Spalte 1 Zeile 1 geschrieben
5 - Daten werden in Spalte 0 Zeile 2 geschrieben
6 - Daten werden in Spalte 1 Zeile 2 geschrieben
[...]
Die verwendete Arrayfunktion erstellt ein Array und sollte durch das wechselnde Indize von 0 auf 1 die Spalte entsprechend wechseln; ausserdem sollte automatisch die nächste Zeile angesprochen werden. Die Konstante mit 0 ausgegraute 0 am Eingang des Arrays wird gefordert damit es keinen Fehler gibt. Hier könnte allerdings eine Fehlerquelle liegen?
Bei der Auslese des Arrays wird nur ein Element (das letzte) geschrieben. Gibt es dort etwas zu beachten wie eine Abfrage des Arrays?
Beste Grüße,
MisterCurry
So, nachdem ich letzte Woche leider noch krank war habe ich nun folgendes erreicht:
Die Struktur ist ordentlicher und zumindest Teilweise funktionstüchtig.
Problematisch ist leider, dass nur die letzten Daten in die Datei geschrieben werden.
Ich dachte die Arrays würden gefüllt und dann ausgelesen, aber da scheint etwas noch nicht richtig zu sein.
Einmal wie eine erstellte Datei aussieht; eigentlich dachte ich würde in der Kommentarzeile bei einem laufenden Eintrag die Zeit stehen und in der letzten Zeile der Kommentar den ich als Test eingefügt habe;
Zu einem anderen Speicherpunkt hatte ich ohne die Aktivierung des in die Datei schreibens das Problem:
1 Data11 Data21
1 Data11 Data21
2 Data12 Data22
1 Data11 Data21
2 Data12 Data22
3 Data13 Data23
1 Data11 Data21
2 Data12 Data22
3 Data13 Data23
4 Data14 Data24
...
Dabei bezeichnet 1-4 die Messungsnummer, hervorgerufen durch die Schleife ergibt sich diese (unerwünschte) Struktur.
Daher die Aktivierungsvorschrift. Leider bekomme ich zur Zeit nur die letzten Daten ausgegeben.
Beste Grüße!