LabVIEWForum.de
Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten (/Thread-Kontinuierliche-Daten-erfassen-und-jeden-Wert-sofot-verarbeiten)

Seiten: 1 2 3


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - JackBlack - 25.11.2010 22:41

Hallo zusammen

Wir sind in unserem Projekt auf ein Problem gestoßen. Ich möchte es kurz schildern.

Wir wollen mit dem DAQ-Assistenten Analogwerte mit einer Sample-Rate von 25kS pro Kanal einlesen (16 Analogkanäle).
Dazu verwenden wir das USB-6212 von Ni.

Unser Vi ist so erarbeitet das zu jedem Zeitpunkt ein Analogsignal (Spannung) vorhanden sein muss.
Diese Spannung dient dazu einen Bewertung des Prüflinges (Taster->Übergangswiderstand) zu treffen.
Die Bewertungskriterien sind von Eingestellten Sollwert und einer einstellbaren Zeit abhänging (Messzeit).

Nun bekommen wir vom Ausgang "Daten" des DAQ-Assistenten unsere Werte geliefert.
Da Problem ist nun, das bei der Wandlung der Werte (1D Array??) in einen für uns benötigten Skalar nicht so
funktioniert wie wir uns vorgestellt haben.

Es wird nur der letzte Wert weitergegeben der in das Sample geschieben wurde. Die restlichen Werte werden
verworfen und können von uns nicht mehr bewertet werden.

Meine Frage ist nun: Können wir alle Analogwerte sichern (nicht in Form einer Datei, sondern nur so lange
bis der erfasste Wert bewertet wurde, und danach verfällt dieser wieder) und einem nach den andern Abarbeiten
lassen??

Hierzu sind auch gundsätzliche Fragen zum Thema Samples aufgekommen. Welchen Sinn macht es Werte in ein Sample
zu schreiben, aber nur der letzte geschrieben verwendet werden kann??

Wir sind über jede Hilfe dankbar die Licht ins Dunkle bringt.

MfG JackBlack


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - jg - 25.11.2010 23:58

Ohne VI-Upload eurerseits fällt eine konkrete Antwort schwer.

Hauptproblem dürfte der DAQ-Assi mit seinem unnötig komplizierten DDT-Datenformat sein.

Gruß, Jens


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - Y-P - 26.11.2010 09:10

Ladet mal Euer VI hoch und beschreibt bitte nochmal etwas genauer, was für einen Datentyp ihr habt und was für einen Datentyp ihr möchtet. Glas1. . . . Glas2

Gruß Markus


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - JackBlack - 26.11.2010 17:04

Hier is das Vi mit allen dazugehörigen SubVis

Mfg JackBlack

[attachment=30885]
Lv09_img2


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - Y-P - 26.11.2010 18:21

Ihr wandelt Eure Daten ja auch in einen Doublewert, bzw. habt am SubVI-Eingang ein Double-Control.
Da solltet ihr schon ein Array verwenden.
Und was soll das:
[attachment=30888] Unsure

Gruß Markus


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - JackBlack - 29.11.2010 18:34

Hallo

Erstmal Danke für die schnelle Antwort.

Unsere Hauptfrage ist, wenn wir alle unsere Analogwert als Array verarbeiten würden, müssten wir unser ganze Schaltung
dan umschreiben? Da unsere komplette Schaltung auf die verarbeitung einzelner Werte ausgelegt sein sollte.
Können wir jeden Wert der im Array steht mit einem Sollwert vergleichen?? (Bsp kann man eine >= Operation mit einem Array
durchführen so das jeder Wert berücksichtigt wird).

Oder liegen wir mit unseren Denkansatz zur Datenverarbeitung über den Daq-Assistenten grundsätzlich daneben??

Aus diesem Grund auch die wandlung das Analogwertes in einen Skalar, um diesen zu verarbeiten.

Eine weiter Frage wie läuft die Aufzeichnung der Analogwerte ab?? Wird immer ein Sample erzeugt und verarbeitet,
Und beim nächsten Sample das alte Überschrieben?? (Ein Sample nach dem andern verarbeitet)

MfG JackBlack


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - Lucki - 29.11.2010 22:59

' schrieb:Meine Frage ist nun: Können wir alle Analogwerte sichern (nicht in Form einer Datei, sondern nur so lange
bis der erfasste Wert bewertet wurde, und danach verfällt dieser wieder) und einem nach den andern Abarbeiten
lassen??
Genau das leistet doch die normale gepufferte Datenerfassung völlig kostenlos ohne jegliche.
Programmierarbeit.
Man sampled kontinuierlich mit einer konstanten Datenrate, also z.B. 25kHz.
Die Daten kommen dann erst mal in einen FIFO-Buffer - das ist Standard.
Ob Du diese Daten dann mit DAQmx Read in einer Schleife als Datensätze (Arrays) von je 10 oder 100 Stück oder aber als Einzelwerte ausliest (und jeden sofort verarbeitest), ist Deine Sache.
Der Werte "verfallen" durch Auslesen aus dem Buiffer - dann sind sie nämlich nicht mehr drin.

Ich bin aber nicht auf Express-VIs geeicht. Ob Deine Express-Vis in dieser Hinsicht korrigierbar sind, kann ich nicht sagen


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - JackBlack - 01.12.2010 16:25

Hallo zusammen


Zitat:Genau das leistet doch die normale gepufferte Datenerfassung völlig kostenlos ohne jegliche.
Programmierarbeit.
Man sampled kontinuierlich mit einer konstanten Datenrate, also z.B. 25kHz.
Die Daten kommen dann erst mal in einen FIFO-Buffer - das ist Standard.
Ob Du diese Daten dann mit DAQmx Read in einer Schleife als Datensätze (Arrays) von je 10 oder 100 Stück oder aber als Einzelwerte ausliest (und jeden sofort verarbeitest), ist Deine Sache.
Der Werte "verfallen" durch Auslesen aus dem Buiffer - dann sind sie nämlich nicht mehr drin.

Ich bin aber nicht auf Express-VIs geeicht. Ob Deine Express-Vis in dieser Hinsicht korrigierbar sind, kann ich nicht sagen


Erst mal danke für die schnelle Antwort. Wir haben das schon mit dem DAQ Assistenten versucht. Mit einer kontinuierlichen Aufzeichenung und 1 Sample, nur bei einer Abtastrate von 25khz bekommen wir immer diesen fehler:


Fehlercode 200279

Wenn wir die Rate runtersetzten läuft wie es soll, da wir keinen Überlauf des Puffers bekommen. Dies können wir aber nicht machen da die Tastrate für unsere Anwendung zu gering ist.

Das Express-Vi das wir verwenden ist unter anderm aus dem DAQmx Read aufgebaut. Daher denken wir nicht das sich das Problem damit beheben lässt wenn wir das Express vi "nachbauen"

DAQ Assisten im Anhang mit Einzel Vis aufgebaut

Ich versuche an dieser Stelle das Problem nochmal an Hand einiger Beispielwerte zu erklären:

Unser problem ist das wir am Eingang unsers Vis zum vergleich einen einzelenen Wert brauchen. Da mit der kontinuierlichen
Aufzeichnung nicht jeder Wert des Samples sonder nur der zu letzte aufgezeichete Wert ausgewertet wird.

Samplegröße: 10
Gesampelte Analogwerte: 3.2,3.19,2.7,1.87,0.94,0.36,0.334,1.3,2.7,3.2

Nun wollen wir alle Werte die im Sample stehen am Eingang prüfen, in unserm Fall wir aber nur der letzte wert also 3.2 ausgewertet
und unser Programm erkennt nicht das der Taster betätigt wurde. Erst wenn wir jeden Wert einzelt vergleichen haben, kann das Programm
verstellen ob der Taster betätigt (wenn der anstehende Wert kleiner ist als der eingestellte Wert von 2,7)
worden ist und die dementsprächende Auswertung (nach einem weitern Vergleich ob dieser Wert zu dieser Zeit in der Toleranz liegt) beginnen.

Daher ist unser Frage wie können wir das machen??

MfG JackBlack


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - Matze - 01.12.2010 22:28

' schrieb:Mit einer kontinuierlichen Aufzeichenung und 1 Sample, nur bei einer Abtastrate von 25khz bekommen wir immer diesen fehler:
Fehlercode 200279

Wenn wir die Rate runtersetzten läuft wie es soll, da wir keinen Überlauf des Puffers bekommen. Dies können wir aber nicht machen da die Tastrate für unsere Anwendung zu gering ist.
Windows ist kein Echtzeitbetriebssystem. Das macht so viel nebenher, das glaubst du gar nicht.
Eine Einzelwerterfassung mit 25 kHz würde bedeuten, dass das Betriebssystem zuverlässig alle 0,04 ms die Auswertung vornimmt. Das kannst du vergessen.

Der DAQmx-Treiber ist genau aus dem Grund so ausgelegt, dass du dir mehrere Messwerte auf einmal abholen kannst. Lies also nicht einen einzelnen Wert aus, sondern z.B. immer 5000 auf einmal. Diese 5000 Werte erhältst du z.B. als Double-Array.
Verbindest du das mit einer For-Schleife (Auto-Indizierung aktiv lassen), dann kannst du die 5000 Werte in der For-Schleife durchlaufen und auswerten. Im Endeffekt betrachtest du dann auch die Einzelwerte.

Die For-Schleife hat für die 5000 Werte somit 200 ms Zeit und das funktioniert unter Windows. Es wird dann nicht zu einem Pufferüberlauf kommen.

Viel schneller als 200 ms kannst du vermutlich eh nicht auf Änderungen reagieren, da du - wie gesagt - hier kein Echtzeitbetriebssystem, hast. Dort würde das anders aussehen.
Also: Lies die Werte blockweise aus und verarbeite diese in einer Schleife, in der du auf jeden einzelnen Wert zugreifen kannst. Das ist auch kontinuierlich, aber im genannten Beispiel im 200- und nicht im 0,04-Millisekunden-Takt.

Diese Einstellung funktioniert meines Wissens auch mit dem DAQ-Assistemt. Dort kannst du unten irgendwo einstellen, wie viele Werte auf einmal ausgelesen werden sollen.


Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten - JackBlack - 02.12.2010 21:38

Hallo zusammen

Erstmal fettes Danke für die sehr schnelle Antwort


Bei der Einzelwertverabreitung von Arrays wird er Wert innerhalb der Schleife richtig angezeigt, außerhalb der Schleife
wird nur nach jedem Durchlauf von einem Schleifenzyklus ein Wert angezeigt und nicht alle.

Wie bekommen wir die ausgelesenen Einzelwert die innerhalb der Schleife sind nach außen?

Wenn wir einen Tunnel verwenden müssen wir die zu zählenden Schleifen auf den Wert Samples stellen (in unserem Beispiel 5000) wenn wir eine
Auto-Indizierung verwenden bekommen wir eine Datentyp Unverträglichkeit
siehe Bild im Anhang

Woran liegt das?

MfG JackBlack