"Sauberer" Sinus über DAQ ausgeben - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: "Sauberer" Sinus über DAQ ausgeben (/Thread-Sauberer-Sinus-ueber-DAQ-ausgeben) |
"Sauberer" Sinus über DAQ ausgeben - RWK - 15.05.2008 09:35 Hallo, ich habe eine PCIe-6251 DAQ Karte und ein BNC-2120 daran hängen. Ich möchte jetzt über den AO 0 knontinuierlich einen möglichst sauberen und möglichst hoch aufgelösten Sinus ausgeben. Laut dem Datenblatt der DAQ-Karte kann diese 2,86MS/s ausgeben und der Kartenspeicher fasst 8192 Samples. Der Sinus soll im Laufenden Programm in Amplitude und Frequenz geändert werden können. Im angehängten VI ist mein erster Entwurf (Lab View 8.5.1) Das VI funktioniert prinzipiell, nur ist der erzeugte Sinus nicht sauber, sondern hat Kanten und Artefakte. Ich weiß, das das mit der Sampling Rate und dem erzeugten Sinus zusammenhängt. Idealerweise würde ich gerne eine Periode eines beliebigen Sinus in 8192 Samples aufteilen, auf den Kartenspeicher schreiben und die Ausgabe-Samplingrate entsprechend anpassen (Fs=?). Geht das mit dem Express-VI? Ich habe mir aus dem NI-Beispielen "Cont Gen Volt WFM-Int-Clk-On board Regeneration" angeschaut, allerding kann man ja da im nachhinein nicht Frequenz und Amplitude beeinflussen. Ich wäre dankbar für Hinweise, auch allgemeiner Art, wenn jemand sich schon einmal Gedanken zur richtigen Ein- und Ausgabe mit DAQ-Karten gemacht hat. Danke, RWK "Sauberer" Sinus über DAQ ausgeben - Kvasir - 15.05.2008 09:56 Hi, also erstens würde ich in diesem Fall ganz schnell die Finger von den ExpressVis lassen und mir mit Hilfe der DAQmx Vis die Ausgabe selbst programmieren. Das Beispiel, das du dazu angesehen hast ist schonmal nicht schlecht. Im Prinzip solltest du deinen Task vor einer While Schleife starten und in einer Schleife dann kontinuierlich deine neuen Daten schreiben. Dazu musst du allerdings sicherstellen, dass in deiner Schleife Daten in der richtigen Geschwindigkeit an die Karte geliefert werden. Bist du zu langsam, stopt die Ausgabe zeitweise. Bist du zu schnell, hast du einen Bufferüberlauf. Die richtige Datenmenge lässt sich über die Samplerate und über die Durchlaufszeit der Schleife berechnen. Die Schleifenzeit legst du mit einem "Wait for next miliseconds" oder überhaupt mittels zeitgesteuerter Schleife fest. Etwaigen Jitter im Durchlauf fängt der Buffer ab. So mach ich das zumindest zur Zeit. Wenn dir was besseres einfallt bitte mir mitteilen Hab leider auch keine Zeit dir jetzt schnell ein Beispiel zu basteln, vielleicht komm ich später dazu. Grüße "Sauberer" Sinus über DAQ ausgeben - RWK - 15.05.2008 12:50 Hallo, danke für die schnelle Hilfe. Mit dem Beispiel-VI bekomme ich einen hinreichend sauberen Sinus hin. Jetzt habe ich das Problem, dass ich Frequenz und Amplitude zur Laufzeit verändern können muss. Meine Idee war es das Generator-VI als Sub-VI in einer übergeordneten Schleife aufzurufen und bei Änderungen an den Schiebereglern das VI abbreche (While Schleife beenden) erneut auszuführen. Kannst du mir sagen, wie ich die Ausführung der While-Schleife im Sub-VI unterbrechen kann, wenn ich in einem übergeordneten VI einen Schalter verschiebe? RWK "Sauberer" Sinus über DAQ ausgeben - Kvasir - 15.05.2008 15:01 Hallo nochmals, ich hab noch ein wenig im Examplefinder herumgesucht und ein Beispiel gefunden, was dir gefallen wird Such dir mal das "Cont Gen Voltage Wfm-Int Clk-Non Regeneration.vi" heraus. Hier schiebst du einfach die Bedienelemente für die Signalform, Amplitude und Frequenz in die Schleife und schon hast du das, was du haben willst. Grüße "Sauberer" Sinus über DAQ ausgeben - RWK - 16.05.2008 12:11 Besten Dank! Das Beispiel - VI war das richtige! Ich dachte ich würde durch die Ausgabe vom Kartenspeicher etwas gewinnen, aber hauptsache es funktioniert. RWK |