LabVIEWForum.de - kontinuierliches Lesen mit Zählerwert

LabVIEWForum.de

Normale Version: kontinuierliches Lesen mit Zählerwert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Forum-Gemeinschaft,

ich beschäftige mich gerade mit dem kontinuierlichen Lesen von analogen und digitalen Signalen. Das Lesen funktioniert auch wunderbar und ich erhalte kontinuierlich ein Array mit allen verfügbaren Werten aus dem Buffer. Für weitere Auswertungen möchte ich gerne neben diesen Werten den aktuellen Zählerwert auslesen. Momentan bekomme zum „Werte“-Array nur den Zählerwert vom Buffer/Array.
Aktuell löse ich das Problem in dem ich immer die aktuelle Position mit dem „DAQmx Read“ -> Status – „CurrReadPos“ auslese und softwareseitig die fehlende Zählerwerte ergänze. Jedoch wäre es mir lieber, wenn von der DAQ der aktuelle Zählerwert mitgeliefert wird, um mögliche Abweichungen zu jeder Zeit ausschließen zu können. Als typisches Beispiel kann das NI-Beispiel „Digital – Continuous.vi“ zur Vereinfachung herangezogen werden.

Hier nochmal in Kurzform mein gewünschtes Ziel:

Aktuell beim Auslesen
0 – Wert 0 vom Array 1
1 – Wert 1 vom Array 1
2 – Wert 2 vom Array 1
0 - Wert 0 vom Array 2
1 – Wert 1 vom Array 2
2 – Wert 2 vom Array 2

Wunsch beim Auslesen
50 – Wert 0 vom Array 1
51 – Wert 1 vom Array 1
52 – Wert 1 vom Array 1
53 - Wert 0 vom Array 2
54 – Wert 1 vom Array 2
55 – Wert 2 vom Array 2

Ich verwende als Hardware die NI-9188.

Ich hoffe es halbwegs verständlich erklärt und bedanke mich jetzt schon für eure Hilfe.

Viele Grüße
Christian
Hallo Christian,

herzlich willkommen im Forum!

Zitat:Ich hoffe es halbwegs verständlich erklärt
Nicht wirklich: du machst irgendwas irgendwie in deinem VI, verwendest dazu eigene Bezeichnungen - und vergisst dann, dein VI hier anzuhängen…

Zitat:Für weitere Auswertungen möchte ich gerne neben diesen Werten den aktuellen Zählerwert auslesen. Momentan bekomme zum „Werte“-Array nur den Zählerwert vom Buffer/Array.
Was für ein Zähler?
Was hat der Zähler mit dem Auslesen von analogen Signalen zu tun?

Zitat:Aktuell löse ich das Problem in dem ich immer die aktuelle Position mit dem „DAQmx Read“ -> Status – „CurrReadPos“ auslese und softwareseitig die fehlende Zählerwerte ergänze.
Was ist ein "DAQmx Read -> Status - "CurrReadPos"?
Wie ergänzt du "softwareseitig" fehlende (?) Zählerwerte? Was hat der Zählerwert mit der Read-Position im Buffer der Analogwerte zu tun???

Zitat:Wunsch beim Auslesen
50 – Wert 0 vom Array 1
51 – Wert 1 vom Array 1
52 – Wert 1 vom Array 1
53 - Wert 0 vom Array 2
54 – Wert 1 vom Array 2
55 – Wert 2 vom Array 2
Was ist der Unterschied von Array1 und Array2? Wo kommen die unterschiedlichen Arrays her?

Willst du hier einfach nur deine Samples durchnummerieren? Was ist/wäre daran so kompliziert? (Und wozu soll das gut sein?)
Du brauchst dafür nur ein Schieberegister…
Hallo Gerd,

danke für deine schnelle Unterstützung. Ich hab das Problem gelöst.
Für mein Problem ist es egal, ob es digitale oder analoge Signale sind.

Wie du schon es schon richtig verstanden hast, hatte ich Probleme mit dem durchnummerieren der Samples.
Ich hab in meinen Projekt auch ein Schieberegister zum Auslesen aller sample-Werte drin, aber mein Zähler fing bei jedem Schleifendurchlauf bei 0 wieder an. CurrReadPos gibt auch ein Zählerwert zurück, aber immer nur vom letzten sample.

Ich hatte einfach zu kompliziert gedacht. Ich wollte schon mit einem Counter die Sample Clock mitzählen, aber viel zu umständlich.

Danke und Viele Grüße
Christian
Hallo Christian,

Zitat:aber viel zu umständlich.
Das ist es auch jetzt noch immer:
- da gehört auch ein Schieberegister an die While-Loop - anstatt der FeedbackNode innen drin
- dann dieses äußere Schieberegister mit der "1"-Konstante initialisieren!
- dann den Vergleich von "i" mit der "0"-Konstante löschen
- dann die Select-Node löschen
- dann die "1"-Konstante von DBL nach I32 ändern: du willst doch "ganze" Samples zählen - oder sind gebrochene Sampleanzahlen möglich?
- dann das ArraySize löschen: du benutzt doch schon einen autoindizierenden Eingangstunnel an der For-Loop!?
- dann das "status"-UnbundleByName per Ctrl-Space-Ctrl-R durch einen Draht ersetzen…
- und dann noch etwas aufräumen, z.B. "von-links-nach-rechts" verdrahten…
Hallo Gerd,

danke für deine Optimierungshinweise.
Du hast vollkommen recht, das macht das VI viel übersichtlicher und allgemein schlanker in der Bearbeitung.

Grüße
Christian
Referenz-URLs