INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

"Sauberer" Sinus über DAQ ausgeben



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!

15.05.2008, 09:35
Beitrag #1

RWK Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Nov 2007

2011
2006
DE

13629
Deutschland
"Sauberer" Sinus über DAQ ausgeben
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


Angehängte Datei(en)
Sonstige .vi  SinusDAQ.vi (Größe: 216,19 KB / Downloads: 429)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.05.2008, 09:56
Beitrag #2

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
"Sauberer" Sinus über DAQ ausgeben
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 mitteilenSmile
Hab leider auch keine Zeit dir jetzt schnell ein Beispiel zu basteln, vielleicht komm ich später dazu.

Grüße

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.05.2008, 12:50
Beitrag #3

RWK Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Nov 2007

2011
2006
DE

13629
Deutschland
"Sauberer" Sinus über DAQ ausgeben
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.05.2008, 15:01
Beitrag #4

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
"Sauberer" Sinus über DAQ ausgeben
Hallo nochmals,

ich hab noch ein wenig im Examplefinder herumgesucht und ein Beispiel gefunden, was dir gefallen wirdWink

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

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.05.2008, 12:11
Beitrag #5

RWK Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Nov 2007

2011
2006
DE

13629
Deutschland
"Sauberer" Sinus über DAQ ausgeben
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sinus Sweep Auswerten janso 1 2.727 03.11.2020 16:55
Letzter Beitrag: Freddy
  Encoder - Sinus / Cosinus auswerten nxitimi 17 15.663 25.01.2018 19:26
Letzter Beitrag: Lucki
  Sinus unterbrechungsfrei ausgeben Chris_EG2 5 5.196 29.07.2015 13:29
Letzter Beitrag: GerdW
  PWM über DO mit USB-6221 ausgeben Mace 9 7.890 12.06.2013 14:28
Letzter Beitrag: Mace
  absoluter Anfänger: analoge Spannung über USB-6215 ausgeben sohnpotsdams 1 6.922 08.08.2011 15:22
Letzter Beitrag: jg
  Sinus Signal ausgeben mit USB 6009 TobiasSch 3 6.012 21.03.2011 12:03
Letzter Beitrag: jg

Gehe zu: