Samplingrate von 1kHz am AI - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: Hardware (/Forum-Hardware) +---- Forum: NI Hardware (/Forum-NI-Hardware) +---- Thema: Samplingrate von 1kHz am AI (/Thread-Samplingrate-von-1kHz-am-AI) Seiten: 1 2 |
Samplingrate von 1kHz am AI - Kirill - 27.03.2008 12:11 Die Hardware ist ein NI PCI-6251, LabVIEW 8.5 und NI-DAQmx 8.0, das VI ist [attachment=11789] Ich hab [attachment=38950:AI_Samplingrate.vi]hier ein System, das einen analogen Eingang mit einem kHz abtasten soll. Bisher sieht das auf, wie im Anhang. Das Problem ist die Samplingrate. Klar, ich hab in der Schleife auch eine 0,1s-Wartepause. Es kommt jedenfalls folgendes raus: [attachment=11790] Nun wurde mir schonmal geraten, die Softwareabtastrate runterzustellen. Das Problem ist aber, dass ich a) nicht über 100Hz komme (1ms Verzögerung in der While-Schleife) und b) viel viel weniger Werte rauskommen: [attachment=11791] Was ich bisher versucht hab, war abgesehen von der Veränderung der Wartepause der While-Schleife, das "Analog Wfm 1Chan NSamp" durch was anderes zu ersetzen. Das Problem ist, dass dabei die Auswertung aufgrund Datentypinkompatibilitäten zusammenbricht. Weiss wer, wie das richtig geht? Samplingrate von 1kHz am AI - Achim - 27.03.2008 13:48 Hi, ich weiß nicht, was du da vorhast...Wenn du über das VI inkl. Treiber mit 1 kHz abtastest, wird dir jede ms ein Wert zur Verfügung stehen, d.h. alle dt=1ms ein Wert. Was willst du da mit "Get Time/Date in seconds", also mit einer Zeit aus dem SW-Timing? Du hast doch die HW-Zeit schon über das dt... Zur Klarstellung: Bei einer gepufferten Datenerfassung kriegst du die Zeit über die Hardware, und das läuft vollständing unabhängig von der Laufzeit deiner Schleife...die ja nur über das verwendete VI den Puffer ausliest! Gruß Achim Samplingrate von 1kHz am AI - Kirill - 27.03.2008 14:07 Das dt von der Hardware kann ich nicht nehmen, da im Verlauf der Messung diese Struktur mehrfach vorkommt (hab nur einen Ausschnitt meines eigentlichen VIs hochgeladen) und sich die Zeit immer auf den Startpunkt des gesamt-VIs beziehen muss und nicht etwa auf die einzelnen Auslesevorgänge. Also für mich zum Verstehen. Der Puffer (Größe 1000) wird von der Hardware beschrieben und das VI in der Schleife liest "nur" den Puffer aus und gibt mir nen Wert? Heißt das, dass ich zunächst die Puffergröße hochstellen muss, um bei ner Laufzeit von sagen wir 10 Sekunden genug Werte für 1kHz Samplingrate habe? Und wie bringe ich LabVIEW dann dazu, mir auch tatsächlich 1k Werte/Sekunde in die Datei zu schreiben? Samplingrate von 1kHz am AI - Achim - 27.03.2008 15:03 Wieso kannst du das dt nicht nehmen? dt ist doch nur ne Schrittweite die du ab dem Startpunkt deiner Aufzeichnung (erster gelesener Wert) hochzählst, ohne einen absoluten Startzeitpunkt! Ja, das mit dem Puffer hast du richtig verstanden! Nein, du musst den Puffer nicht groß genug für 10 Sekunden stellen, du musst ihn nur innerhalb der Schleife oft genug auslesen, damit kein Überlauf passiert! Ein absolute Angabe, 1k Werte pro Sekunde zu speichern kann man so nicht machen! Die Aufzeichnung wird immer hinterherhinken, wei einfach die SW nicht schnell genug ist. Du tastest nur schnell genug ab (das macht für dich der Treiber + die Hardware) und speicherst dann so oft du kannst/willst die verfügbaren Werte auf Platte. Das sind manchmal dann evtl. 1000 Werte pro Sekunde, beim nächsten Mal aber evtl. schon 1346 Werte pro Sekunde, weil deine SW zwischendurch noch was anderes gemacht hat! Samplingrate von 1kHz am AI - Kirill - 27.03.2008 15:20 Wenn ich das dt aus der Wafeform nehme, dann hab ich zwar Werte wie 0.00 0.01 1.34 1.46 und so weiter. Wenn ich aber im weiteren Verlauf des VIs (ein paar Flat-Frames später) eine neue Messung mache, dann bekomm ich 0.00 0.01 1.74 1.44 anstatt 0.02 0.03 1.74 1.44 Ich will also MEHRMALS messen, allerdings soll jedes Mal der aktuellle Messzeitpunkt ab dem Anfang des Gesamt-VIs gezählt sein und nicht ab dem Start der konkreten Messung. Also mir geht es nicht exact darum, dass ich GENAU 1kHz Samplingrate erreiche. Aber wie komm ich nu in den Bereich von 1kHz? Wie die Samplingrate genau ist, ist ja wurscht, solang die Zeitwerte mit dabei stehen. Samplingrate von 1kHz am AI - Achim - 28.03.2008 07:22 ' schrieb:Aber wie komm ich nu in den Bereich von 1kHz? Wie die Samplingrate genau ist, ist ja wurscht, solang die Zeitwerte mit dabei stehen. Die Zeitwerte, die du dir aus der Schleife mit dem Timer-VI rausziehst, haben ABSOLUT GAR NICHTS mit den Zeitpunkten zu tun, wann die Werte wirklich aufgenommen wurden! Die kleinste Zeiteinheit bzw. Zeitdifferenz, die du per "VI-Durchlauf" auflösen/rauskriegen kannst, liegt im Optimalfall bei 1ms. Leider macht da deine Programmierung und dein Betriebssystem meistens nicht mit, weil irgendwas zwischenrein gemacht wird...Deine Anforderung ist damit also nicht zu lösen! Bei deinem Lese-VI kriegst du die Daten aber als Waveform, und da ist auch dein t0 mit angegeben. Du könntest also evtl. so vorgehen, das du dir das t0 deiner ersten Messung merkst und dann vom jeweiligen t0 der folgenden Messungen abziehst und dann mit diesen relativen Werten (gerechnet ab erster Messung, d.h. "VI - Start") mit dem dt deine Zeitwerte ausrechnest. Allerdings stell ich mir das ziemlich (Rechen-)Zeitintensiv vor, ich weiß nicht ob das so ohne weiteres "on the fly" funktioniert... Gruß Achim Samplingrate von 1kHz am AI - Kirill - 28.03.2008 13:56 Was müsste ich an der Programmierung ändern, um möglichst nah an 1kHz zu kommen? Samplingrate von 1kHz am AI - Achim - 28.03.2008 14:26 ' schrieb:Was müsste ich an der Programmierung ändern, um möglichst nah an 1kHz zu kommen? Wie schon gesagt: Zitat:Deine Anforderung ist damit also nicht zu lösen! Zur Frage: Du musst halt alles weglassen, was irgendwie Zeit kostet. Trotzdem sind die von dir erfassten Zeitwerte nichts anderes, als sich selbst in die Tasche lügen... Samplingrate von 1kHz am AI - Kirill - 03.04.2008 11:09 Mal ne Frage zu den Zeitwerten nochmal. Habe ich es also richtig verstanden, dass wenn ich die DAQmx-Read-VIs auf "Waveform" stelle, dann kommt ein Datentyp raus, der die Zeit- und Y-Werte beinhaltet? Wie verschaff ich mir dann die einzelnen Zeitwerte? Wenn ich es per "Separate waveform" versuche, dann kann der mir nur t0 und dt ausgeben. Scho klar, dass ich dann dt irgendwie ein paar mal auf t0 addieren müsste, aber wie bekomm ich raus, wieviele Zeitschritte rum sind, wenn die Zeit in der While-Schleife mit dem eigentlichen Messvorgang nichts zu tun hat? Was ich auch nicht ganz verstehe, ist bei welchem Zeitpunkt/VI die Hardware die Messung denn eigentlich vornimmt. Wenn das DAQmx-Read also nur den Puffer ausliest, in welchem VI wird der Puffer geschrieben? Samplingrate von 1kHz am AI - Achim - 03.04.2008 11:39 ' schrieb:t0 und dt ausgeben. Scho klar, dass ich dann dt irgendwie ein paar mal auf t0 addieren müsste, aber wie bekomm ich raus, wieviele Zeitschritte rum sind, wenn die Zeit in der While-Schleife mit dem eigentlichen Messvorgang nichts zu tun hat?t0 ist eine ABSOLUTE Zeit, ich nehme an die kommt über den DAQmx-Treiber vom Betriebssystem ' schrieb:Was ich auch nicht ganz verstehe, ist bei welchem Zeitpunkt/VI die Hardware die Messung denn eigentlich vornimmt. Wenn das DAQmx-Read also nur den Puffer ausliest, in welchem VI wird der Puffer geschrieben?Der Puffer wird nicht in einem VI beschrieben, sondern vom DAQmx-Treiber (auch nur ein Stück Software + RAM) direkt mit den gelesenen Werten vom ADC der Karte gefüllt! |