LabVIEWForum.de - Funktionsweise CompactDAQ

LabVIEWForum.de

Normale Version: Funktionsweise CompactDAQ
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe bei NI ein Dokument gefunden, das einiges bzgl. der Funktionsweise des CompactDAQ erläutert.
Dort steht auf Seite 7 grob, wie die Übertragung funktioniert (der Text lässt sich leider nicht hier her kopieren).

Mich würde folgendes zur Datenübertragung interessieren:

Nehmen wir als Beispiel das Einlesen über DAQmx mit einer Frequenz von 50 Hz und einer Sample-Anzahl von 10.

Was passiert vom Erzeugen eines Tasks bis zur Festlegung der Samplerate?

Meine Vermutung: Diese Konfigurationsdaten werden an das CompactDAQ übertragen, damit dieses im Endeffekt für den entsprechenden Kanal initialisiert wird.

Was passiert beim manuellen Starten des Tasks (SubVI "Task starten")?

Meine Vermutung: Das CompactDAQ beginnt, die Messdaten zu erfassen.
Nur wohin werden diese geschrieben? In einen RAM des CompactDAQ oder werden diese zum PC gestreamt bzw. alle 10 Werte erfolgt die Übertragung "als Paket" zum PC bzw. in dessen RAM?

Was passiert beim Auslesen (SubVI DAQmx - Lesen") im Modus "kontinuierlich"?

Meine Vermutung:
Sollten die Daten im CompactDAQ-RAM gepuffert werden, werden von dort 10 Werte abgeholt und an den PC übertragen.
Sollten die Daten laufend gestreamt und im PC-RAM gepuffert werden, werden vom PC-RAM 10 Werte ausgelesen, sobald diese verfügbar sind.

Was passiert beim Auslesen (SubVI DAQmx - Lesen") im Modus "endliche Anzahl"?

Meine Vermutung: Der PC schickt dem CompactDAQ ein Signal, dass 10 Messwerte erfasst werden sollen. Daher dauert der Vorgang recht lang im Vergleich zum kontinuierlichen Einlesen, wo diese Übertragung der "Trigger-Daten" nur einmal statt findet. Diese Messwerte werden daraufhin erfasst und entweder sofort gestreamt oder erst, wenn alle Werte erfasst wurden.

Ein fortlaufendes Streamen, sodass die Werte direkt im PC-RAM landen, kann ich mir nicht vorstellen. Speziell bei Abtastfrequenzen von 200 kHz. Ich vermute, das packt USB nicht. Daher kann ich mir nur vorstellen, dass die Werte generell "als Block", d.h. die Anzahl der angeforderten Werte auf einmal überträgt (im oberen Beispiel 10).

Was passiert, wenn ich die Werte langsamer Verarbeite als sie eingelesen werden?

Meine Vermutung: Die ältesten gepufferten Werte (entweder im CompactDAQ-RAM oder im PC-RAM) werden mit den neuen überschrieben (oder aus einer Art Stack herausgeschoben). Sie stehen nicht mehr zur Verfügung.
Der DAQmx-Treiber registriert, dass diese Werte neuer sind als die angeforderten und meldet daher den Fehler, dass die Daten nicht mehr zur Verfügung stehen.

Könnt ihr mich aufklären?
Hallo Mech.-Ing.,

ich hab diesen Post rausgekramt, der noch nicht beantwortet ist.

' schrieb:Was passiert vom Erzeugen eines Tasks bis zur Festlegung der Samplerate?
Meine Vermutung: Diese Konfigurationsdaten werden an das CompactDAQ übertragen, damit dieses im Endeffekt für den entsprechenden Kanal initialisiert wird.
Ohne es genau zu wissen, denke ich dass Du Recht haben könntest. Alle Initialisierungsschritte werden direkt zu der Messhardware geschickt, damit diese schrittweise konfiguriert wird und der Task bzw. die Messwerterfassung später schnell gestartet werden kann. Ich könnte mich aber auch irren.

Zitat:Was passiert beim manuellen Starten des Tasks (SubVI "Task starten")?
Die Messhardware beginnt Daten zu erfassen und schreibt die Messdaten in den internen Puffer, bis dieser voll ist. Aus diesem Puffer holt sich DAQmx Read die entsprechende Anzahl von Messdaten ab.

Zitat:Was passiert beim Auslesen (SubVI DAQmx - Lesen") im Modus "kontinuierlich"?
Deine erste Vermutung ist zutreffend.

Zitat:Was passiert beim Auslesen (SubVI DAQmx - Lesen") im Modus "endliche Anzahl"?
Auch hier stimmt Deine Vermutung. Wobei die Daten erst an den PC als Paket gesendet werden, wenn alle erfasst sind, so wie Du es geschrieben hattest.

Zitat:Was passiert, wenn ich die Werte langsamer Verarbeite als sie eingelesen werden?
Der Puffer läuft voll.
Du bekommst in Deiner Software je nach Puffergröße Daten suggeriert, die zeitlich nicht mehr zum Programmablauf passen.
Erst wenn der Puffer voll ist gibt es eine Fehlermeldung. z.B. "Sie haben versucht Daten zu lesen die nicht mehr vorhanden sind ..."
Das deckt sich mit Deiner Vermutung.

Zitat:Könnt ihr mich aufklären?
Das wäre eigentlich Aufgabe Deiner Eltern gewesen.Wink
Aber ich könnte da auch weiterhelfen.Tongue

Grüße
Andreas
Hallo Leute,
für ähnliche Fragen, hab ich oft in LabVIEW-Hilfe eklärungen gefunden..
ic aber noch eine,
was ist der Zusammenhang zwischen "Samples pro Kanal" und der "Abtastrate"?

Grüße
Sam
Wenn Du Deine Werte in z.B. einer Whileschleife ausliest und eine (Abtast-)Rate von 2000 (Messwerte pro Sekunde) einstellst und bei Samples per Channel 1000 angibst, dann wird jede halbe Sekunde ein Paket von 1000 Werten eingelesen.
Stellst Du die Rate nun auf 500, dann läuft ein Schleifendurchgang 2 s und Du hast die 1000 Werte erst nach diesen 2 s.
Hier ein Bsp.:
[attachment=28549]
Lv82_img

Gruß Markus
Danke Markus
leider hab ich noch ein Problem, ich beschreibs im neuen Thema
Referenz-URLs