Hallo Michael,
herzlich willkommen im Forum!
Zitat:Ich muss für meine Diplomarbeit ein Programm für das Ni-USB 6002 programmieren. Dieses Programm steuert ein Messgerät und sollte folgendes können:
Es soll kontinuierlich ein analoges Spannungssignal ausgegeben werden, welches im Laufe der Messung linear ansteigt. Zusätzlich sollen die Signale am analogen Eingang aufgezeichnet werden. Dazu sollen jeweils etwa 100-1000 Werte gemittelt werden. Es soll in ein Wert pro Sekunde gespeichert werden. Wichtig ist, dass das Messintervall sehr genau ist, also nur um max. 0,1% von der Sekunde abweicht. Im Optimalfall sollte man das Messintervall noch verändern können.
- Deine NI6002 erlaubt hardware-timing sowohl beim AI als auch beim AO, was schon mal sehr gut ist…
- LabVIEW bringt jede Menge BeispielVIs mit, sehr viele davon auch zum Thema DAQmx…
- Um ein "genaues Messintervall" zu erreichen, solltest du (wie in deinem DAQAssi) eine Samplerate verwenden: damit bestimmt die Messhardware die Taktrate - und die ist ziemlich genau…
Vorschlag:
- schau dir die BeispielVIs zum Ausgeben von Waveforms an
- schau dir die BeispielVIs zum Einlesen von AI-Werten an
- schau dir die Beispiele zum Synchronisieren von AI und AO an (ist das bei deiner Aufgabe wichtig?)
- versuche die ExpressVIs zu meiden, sie bringen dir später nur Ärger ein…
- wenn du einen Wert pro Sekunde speichern willst, solltest du so viele Sample einesen, wie deine Samplerate eingestellt ist und diese dann mitteln…
Zitat:Ich kann lediglich "Samples to read" bzw. die "Rate" verändern, dann verändert sich auch die Messrate meines Programms. Aber das kann ja nicht die saubere Lösung für das Problem sein...
Doch, das ist es: wenn die Hardware das Timing bestimmt, bist du wesentlich genauer als mit Wartezeiten unter WindowsOS!
Zeit := Samplerate*Sampleanzahl…
Tipp:
- ab und zu mal AutoCleanup benutzen
- auf korrekte Datentypen achten: am einfachsten Konstanten/Controls/Anzeigen per Rechtsklick auf den jeweiligen In/Out einer Funktion erzeugen…