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!
21.05.2010, 14:44 (Dieser Beitrag wurde zuletzt bearbeitet: 21.05.2010 14:45 von GerdW.)
bitte trenne dich von diesem Express-Schei***, man weiß ja gar nicht, mit welchen Datentypen dort hantiert wird...
(Man beachte den Größenunterschied des VIs nach Austauschen von zwei ExpressVIs gegen einfache Funktionen!)
Guckst du bitte in Anhang, wie man vernünftig Graphen baut. Autoindexing is your friend
So weit ich weiß, kann man pro Hardware-Kanal nur einen DAQ-Assistenten benutzen. (Bitte um KOrrektur, falls dies nicht zutrifft!) Warum sollte man auch zwei Routinen in einem Programm haben, die auf die gleiche Resource zugreifen wollen...
Hallo GerdW, vielen vielen Dank, damit hast Du mir sehr geholfen, aber ich würde gerne verstehen, warum die ganze Aufzeichnung so funktioniert. Also in der Schleife sind die Abläufe klar, aber wieso wird das erzeugte Array nicht weiter verwendet? Also es wird lediglich das "Bundle-Element" weitergegeben.
Ich habe versucht das ganze nun für mein Problem umzubauen. Leider werden hier erneut nach Durchlaufen der Seuquenz der Graph überschrieben (ich habe also noch nicht ganz verstanden, wie dein Programmbeispiel arbeitet). Das heißt nach dem ersten Durchlauf der For-Schleife werden Werte geplottet und nach dem zweiten Durchlauf wird der Graph geleert und mit den aktuell ankommenden Werten überschrieben. Ich brauche aber alle Werte
Habe mal das Umgebaute VI angehangen. Würde gerne verstehen, wie genau das Programm die Daten weiterverarbeitet, um mein Problem zu bewältigen.
Zum Hardware-Kanal:
Wie kann ich dann aus einer Digitalkarte zwei Werte abrufen? In dem Beispiel von Y-P werden anscheinend beide Werte gleichzeitig verarbeitet. brauche aber die einzelnen Werte, um sie weiter zu verarbeiten. Also ich möchte zum Beispiel an dem ersten Ausgang (ai0) die Temperatur erfassen und an einem zweiten (ai1) eine Länge. Nun habe ich aber nur einen Strang, der aus dem Assistenten rauskommt
Gibt es hier eine Lösung?
das wäre super,
Gruß,
Safa
21.05.2010, 19:40 (Dieser Beitrag wurde zuletzt bearbeitet: 21.05.2010 19:42 von GerdW.)
"Also in der Schleife sind die Abläufe klar, aber wieso wird das erzeugte Array nicht weiter verwendet? Also es wird lediglich das "Bundle-Element" weitergegeben."
Mmhh weiß nicht, was du meinst... In der Schleife werden zwei Arrays erzeugt, welche jeweils die Mittelwerte der DAQ- und der Sinuswerte enthalten. Diese beiden Arrays werden nach der Schleife gebundelt und weitergereicht...
"nach Durchlaufen der Seuquenz"
Wieso benutzt du eine Sequenz? Geht doch auch ohne...
"nach dem ersten Durchlauf der For-Schleife werden Werte geplottet und nach dem zweiten Durchlauf wird der Graph geleert und mit den aktuell ankommenden Werten überschrieben."
Ja, so funktioniert nun mal ein Graph. Der stellt immer nur das dar, was du ihm an Daten anbietest. Warum sollte er sich etwas merken??? Das ist deine Aufgabe...
Edit: Meinst du mit "zweitem Durchlauf" ein zweites Aufrufen des VIs? Wenn du dann Daten sammeln willst, musst du die Konstante vor'm Shiftregister entfernen...
"Wie kann ich dann aus einer Digitalkarte zwei Wmerte abrufen? In dem Beispiel von Y-P..."
So wie Y-P dir es dir gezeigt hat. Ohne DAQ-Assistent (ich wiederhole mich: "Trenne dich von diesem Express-Schei***!") geht das doch ganz einfach - siehe obiges Beispiel. Du bekommst ein 1D-Array of Waveform, je "Kanal" eine Waveform. Du gibst zwei Kanäle vor und bekommst für jeden Kanal eine Waceform - was willst du denn noch haben??? Array lassen sich doch recht einfach indizieren...
"an dem ersten Ausgang (ai0) die Temperatur erfassen und an einem zweiten (ai1) eine Länge"
Es ist (für uns)unerheblich, was deine Signale beinhalten. Du willst 2 Signale messen...
"Gibt es hier eine Lösung?"
Siehe Y-P's Beispiel...
Super GerdW. Genau das habe ich gesucht. Bin ich froh, dass es dieses Forum gibt
Habe dein Beispiel nun nachvollziehen können. Das VI, welches ich Dir hochgeladen habe, war ein Beispiel, welches ich erfunden habe. Dieses Beispiel wollte ich verstehen, um es in meinem Hauptprogramm einzubauen. Ich versuche immer anhand eines einfachen Beispiels die "Logik des Programmes" zu verstehen und dann umzusetzen. Denke, dass man so am besten etwas lernt, als sich alles fertig geben zu lassen.
Die Sequenz ist also ein fester Bestandteil meines Hauptprogrammes und muss somit vorhanden sein.
Zweiter Aufruf:
hier war gemeint, dass die Forschleife mehrmals durchlaufen werden kann, d.h., dass die Werte nach dem ersten Durchlauf der Schleife geplottet werden und beim Zweiten Durchlauf durch die neue ankommenden Werte überschrieben werden. Die Lösung mit dem Shiftregister ist genau das was ich gesucht habe. Danke dafür
Nun zu dem Beispiel von Y-P:
Ich verstehe irgendwie leider nicht, wo ich die zwei Signale separat erhalte. Ich sehe an diesem Beispiel, dass beide Kanäle abgerufen werden, jedoch nur der Eingang ai2 geplottet wird. Ich würde gerne beide Signale erfassen und in eine txt-Datei speichern.
Wenn ich das Programm von Y-P laufen lasse, so werden nur (in meinem Fall) die Längenwerte geplottet. Die Temperaturwerte sind nicht zu sehen => wo kann ich diese "abzweigen"?
und nochmals vielen vielen Dank für die gute Unterstützung.
Gruß,
Safa
22.05.2010, 18:05 (Dieser Beitrag wurde zuletzt bearbeitet: 22.05.2010 18:06 von Biohazard.)
reicht überhaupt die genauigkeit deines NI 6009 aus um Temperaturdaten sinnvoll zu erfassen ?
Bei meinen USB 6009 er war das noise so groß, dass ich temperaturschwankungen von bis zu ±7°C hatte.
So zu deiner Frage:
Den 2. Dataoutput kannst du erhalten, wenn du den Task Out von dem ersten "DAQ create virtual channel" ( das mit Dev2/ai0) weiterführst... und das ganze prozedere mit der sample clock und read wiederholst.....
Für die ausgabe in .txt files gibt es schon vorgefertigte vi's wie z.B. "write to Spreatsheet file" (das appendend to file mit T wiren, dass alles in eine File kommt) oder den "write to mesurement file manager"...
Also zu deiner Frage der Messgenauigkeit. Das Signal streut sehr stark, aber wenn du das Signal mit einem Median hinterlegst, wird es eigentlich sehr genau. Die zweite Nachkommastelle variiert. Dies ist für meine Messungen mehr als ausreichend.
Zu deinem Tipp mit dem Zweiten Kanal. Es funktioniert leider nicht so einfach, wie Du gesagt hast, denn ich erhalte beim erneuten Erstellen eines DAQmx-Lesen-Objektes (Objekt in der Schleife) den gleichen Fehler, den ich erhalte, wenn ich zwei DAQ-Assistenten verwende: "Ressource bereits belegt" => hab ich Dich falsch verstanden?
Die Datenerfassung habe ich fast hinbekommen, allerdings die Reihenfolge in der erstellten txt-Datei nicht
=> im Moment werden die Daten der zwei-While Schleifen nebeneinander ausgegeben. Ich möchte gerne, dass die Daten der Schleifen untereinander sortiert werden. Ich hänge mal eine Textdateien an, um den Unterschied zu zeigen.
Vielleicht könnte man als Beispiel das letzte VI von GerdW modifizieren?
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Ni 6009 Analog-Ausgang doppelt belegen?
Hab' gesehen, dass vorne eine Verbindung gefehlt hat (zwischen den beiden "Create Channel"). Hab' das Bsp. nun abgeändert, d.h. die Verbindung eingefügt. Kannst Du es nochmal versuchen?
Gruß Markus
' schrieb:Nun zu dem Beispiel von Y-P:
Ich verstehe irgendwie leider nicht, wo ich die zwei Signale separat erhalte. Ich sehe an diesem Beispiel, dass beide Kanäle abgerufen werden, jedoch nur der Eingang ai2 geplottet wird. Ich würde gerne beide Signale erfassen und in eine txt-Datei speichern.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Hallo Y-P,
ich habe nun die fehlende Verbindung ergänzt. Im Graphen sieht man nun zwei Linien, allerdings bewegt sich die zweite Linie nicht.
Ich habe nun versucht die Werte abzugreifen. Leider ohne Erfolg. Dachte vielleicht, dass er beide Werte ausgibt, wenn ich am DAQmx-Lesen jeweils ein Anzeigeelement verbinde (ist natürlich quatsch, aber wusste sonst nicht, wo die Daten rauskommen sollen => vgl. VI)
Kannst Du bitte nochmal drüber schauen und mir sagen, wo ich die Werte der Analog-Eingänge einzelnd abgreifen kann?
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------