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!
Ich möchte Analogdaten mit der USB-6259 erfassen. Für Multichannelanwendungen habe bereits herausgefunden, dass die Samplerate durch die Anzahl der Kanäle, die ich einem Task zuweise, dividiert wird. Weiß jemand was mit der Samplerate passiert, wenn ich jedem Kanal einen eigenen Task zuweise? Etwa dasselbe?
Anzeige
11.09.2007, 08:40 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2007 09:07 von Lucki.)
Das ist ja ganz neu, bist Du Dir da ganz sicher? Wie hast Du das herausgefunden? Bei Karten der E- und M- Serie, die ich kenne, ist das nicht so, und ich kann mir nicht vorstellen, daß NI hier eine grundlegende Philosophie plötzlich ändert.
Natürlich verringert sich, bedingt durch Multiplexing, die maximal mögliche Samplingrate so wie Du gesagt hast. Aber das ist ja etwas ganz anderes. Und es ist eine Hardwaregrenze, an der man sich nicht mit Software-Tricks (also z.B. mit mehreren Tasks) vorbeimogeln kann.
D.h. eine Möglichkeit gibt es doch, und zwar liegst Du mit Deiner Idee, mehrere Tasks einzurichten, nicht schlecht: Kanalmultiplexing anstelle von Zeitmultiplexing
Zeitmultiplexing:
Abtastpunkt 1 (alle Kanäle); Abtastpunkt 2 (alle Kanäle)....
Kanalmutiplexing:
Kanal 1 (alle Abtastpunkte), Kanal 2 (alle Abtastpunkte)....
Dazu mußt Du für jeden Kannal eine eigene Task einrichten und die Tasks nacheinander abarbeiten.
Natürlich funktioniert das nur bei Vorgängen, die sich periodisch wiederholen, und natürlich verringert sich dann die Refresh-Rate (die Zeit, bis derselbe Kanal wieder abgetastet wird), entsprechend der Anzahl der Kanäle.
Also noch mal zusammengefaßt:
Zeitmultiplexing
Vorteil: für einmalige Vorgänge geeignet; hohe Refreshrate bei sich wiederholenden Vorgängen
Nachteil: verringerte max. Abtastrate pro Kanal; Phasenverschiebungen zwischen den Kanälen
Kanalmultiplexing
Vorteil: Max. Abtastrate auch bei mehreren Kanälen; keine Phasenverschiebungen zwischen den Kanälen
Nachteil: verringerte Refreshrate; nur für sich wiederholende Vorgänge geeignet
' schrieb:Das ist ja ganz neu, bist Du Dir da ganz sicher? Wie hast Du das herausgefunden? Bei Karten der E- und M- Serie, die ich kenne, ist das nicht so, und ich kann mir nicht vorstellen, daß NI hier eine grundlegende Philosophie plötzlich ändert.
Im User Manual M Serie habe ich folgende Anmerkung gefunden: The sampling rate is the fastest you can aquire data on the device and still achieve accurate results. For example, if an M Series device has a sampling rate of 250kS/s, this sampling rate is aggregate - one channel at 250kS/s or two channels at 125kS/s per channel illustrates the relationship. (Kap. Analog Input Timing Signals, S. 4-27). Aber Deiner Reaktion nach habe ich da wohl etwas falsch verstanden. Allerdings steht in den Spezifikationen bei Sampling Rate Maximum unter Multi-Channel auch "aggregate", also insgesamt. Wie soll ich das denn verstehen?
Ansonsten danke für den Tipp mit Kanal- und Zeitmultiplexing. Das ist etwas, was ich in meinem Programm doch nochmal überdenken sollte.
ich denke, du hast schon alles richtig verstanden.
Die maximale Datenerfassungsrate der 6259 liegt bei 1-Kanal-Erfassung bei 1,25 MS/s, bei Mehrkanal-Erfassung bei 1 MS/s. Dies ist die maximale Rate für alle Kanäle gemeinsam, also bei 2 Kanälen dann also 500 kS/s, 3 = 333 kS/s usw. Hintergrund: Die M-Serien (wie auch viele andere Karten) haben nur einen AD-Wandler, und bei Mehrkanal-Erfassung muss dann halt zwischen den Kanälen hin- und hergeschaltet werden.
Was Lucki vorschlägt, ist nur eine andere Abfolge der Datenerfassung:
Bsp:
Zeitmultiplexing (Erfassung mehrere Kanäle in einem Task): 1 Wert Kanal 1, 1 Wert Kanal 2, 1 Wert Kanal 3, 1 Wert Kanal 1, usw. Das läuft dann mit einer gewissen Erfassungsrate, wobei dann jeder Kanal "nur" mit der Rate "Gesamtrate"/"Anzahl Kanäle" erfasst wird.
Kanal-Multiplexing, dann könnte man mehrere Tasks hintereinanderfügen: Erfasse 1000 Samples Kanal 1, dann 1000 Samples Kanal 2, dann 1000 Samples Kanal 3, dann wieder Kanal 1 usw.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Ansonsten danke für den Tipp mit Kanal- und Zeitmultiplexing. Das ist etwas, was ich in meinem Programm doch nochmal überdenken sollte.
Mit meinem Beitrag wollte ich klarstellen, daß Du in der DAQ-Timing-Konfiguration bei 10kHz gewünschter Abtastrate, unabhängig von der Anzahl der Kanäle, 10kHz vorgeben mußt, und nicht etwa 10kHz * Anzahl der Kanäle. Dein Beitrag erweckte den Eindruck, daß Du so denkst, und Deine Antwort den, daß ich Dich nicht von etwas anderem überzeugen konnte.
Deshalb hier noch 2 Beispiele, um zu zeigen wie die Karte funktioniert. Die Karte möge kann max. 1Mhz abtasten, es sind 10 Kanäle selektiert
1. Beispiel: gewünschte Abtastrate 10kHz (für jeden Kanal).
In der DAQ-Timing-Konfiguration ist 10KHz Abtastrte einzustellen (und nicht 10Hz*10Kanäle)
Der genaue Hergang bei der Datenerfassung ist dann der:
t=0
Erster Kanal, erster Punkt wird gesampled
t=6µ
Der zweite Kanal könnte theoretisch schon 1 µs später erfasst werde. Es wird aber zusätzlich zu dieser Zeit defaultmäßig noch eine Beruhigungszeit von 5µ addiert, so daß die Erfassung von Kanal 2 erst 6µs später erfolgt
t=12µs, 18µs, 24µ, ..56µ
In dieser Zeitintervallen werden die restlichen Kanäle abgetstet
t=100us
Erster Kanal, zweiter Punkt wird gesampled
usw usw.
Zweites Beispiel: Abtastrate 50kHz, 10 Kanäle
t=0
Erster Kanal, erster Punkt wird gesampled
t=2µ
Damit alle Kanäle erfasst werden können, kann nicht außer der Konvertireungszeit von 1µs die volle defaultmäßige Beruhigungs zwischen den Abtastungen eingefügt werden. Möglich sind insgesamt nur 2us Zeitdifferenz zwischen den Abtastungen. Genau das macht LV standardmäßig ohne weiteres Zutun.
..
t=18µs
Erassung des 10. Kanals
t=20us
Erfassung des 2. Datenpunktes für den 1. Kanal
usw.
12.09.2007, 07:28 (Dieser Beitrag wurde zuletzt bearbeitet: 12.09.2007 07:34 von guggun.)
ich bin beim stöbern im Forum auf diesen Thread gestoßen.
Nun hab ich eine Verständnisfrage, nachdem ich die Beiträge gelesen habe, zu meinem eigenen Programm.
Verwende ich in meiner Applikation Zeit- und Kanalmulitplexing (siehe Screenshot)?
Sieht der Ablauf bei mir dann fogendermaßen aus?
Kanal0 Wert1, Kanal1 Wert1, Kanal0 Wert2, Kanal1 Wert2, usw. bis in jedem Kanal 500 Werte abgetastet wurden (da, Rate= 1000)
danach das Gleiche Schema mit Kanal2 und Kanal3 zusammen, Kanal4 und Kanal5, ....
Kann mir das jemand bestätigen.
Noch eine andere Frage: Wieviele Tasks werden mir eigentlich in meinem Bsp von LV erstellt? 1 oder 4?
Danke für Antworten
Gruß Martin
07.03.2008, 12:11 (Dieser Beitrag wurde zuletzt bearbeitet: 07.03.2008 12:11 von jg.)
warum ist die Rate 1000?
In Beitrag 4 schreibst du, dass sich die Rate für einen Kanal zu Gesamtrate/Anzahl der Kanäle beim Zeimultiplexing ergibt.
Gruß
Sorry, da bin ich wohl mit dem Trad-DAQ-Treiber durcheinander gekommen. Da war das, wenn ich mich recht erinnere, so.
Bei DAQmx ist dieser Rate-Input die Erfassungsrate eines Kanals (auch wenn mehrere Kanäle im Task stehen). Steht übrigens genauso in der LV-Hilfe. Was man dabei halt im Auge behalten sollte, ist die sich ergebende Gesamtrate für den einen AD-Wandler.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!