LabVIEWForum.de
NI 9411 digitalen Eingang mit 10 khz abfragen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: NI 9411 digitalen Eingang mit 10 khz abfragen (/Thread-NI-9411-digitalen-Eingang-mit-10-khz-abfragen)



NI 9411 digitalen Eingang mit 10 khz abfragen - Scenic626 - 17.08.2012 08:20

Hallo,
ich bin noch sehr unerfahren, was den umgang mit LabVIEW angeht, komme aber aktuell bei folgenden Problem nicht weiter:

Ich möchte im Zuge einer Drehzahlmessung ein digitales Signal auslesen (X-mal/Umdrehung ein true/false-Wechsel).
Damit auch hohe Drehzahlen korrekt erfasst werden sollte die Abtastrate mindestens bei 10 khz (oder so hoch wie möglich) liegen.
Ich habe bisher zwei Methoden probiert, beides mal gab es Probleme:

1. Methode Nit DAQ Assistent:
Mit One-Sample Methode: viel zu langsam(nur etwa 150 hz)
Mit Continous-Sampling: Schaffe ich es nicht den Datentyp in ein Boolean-Array umzuwandeln
Bei diesem Array müsste auch jedem Wert die Zeit zugeornet werden können.

2. Methode ohne DAQ Assistent:
Hier gab es gleich mehrere Fehler: -Die Eingegebene Abtastrate scheint keinerlei Auswirkung auf das einlesen der Messwerte zu haben.
-Obwohl der richtige Kanal eingestellt sein sollte, wird nur false eingelesen
-Sobald man die Messung beendet kommt es zu einer Fehler

Falls es relevant ist: ich verwende die Evaluationsversion von LabVIEW 8.6
Angehängt findet ihr die beiden VI`s.(global_Cluster gehört zu der Version mit DAQ-Assistent)
Ich hoffe, dass jemand meine Fehler sieht, oder eine ganz andere Idee hat.

Mit freundlichen Grüßen,

Scenic626

[attachment=41134][attachment=41135][attachment=41136]


RE: NI 9411 digitalen Eingang mit 10 khz abfragen - GerdW - 17.08.2012 08:30

Hallo Scenic,

ich habe mir nur die Version ohne DAQ-Assi angeschaut und gleich mehrere Sachen sind mir aufgefallen:
- in jeder Iteration wird ein neuer Channel erstellt. Wozu? Sowas macht man nur einmal vor der Schleife.
- du sammelst deine Daten in FeedbackNodes, allerdings ohne Größenbegrenzung. Wenn du wirklich mit 10kHz sampeln willst, hast du sehr schnell Speicherprobleme...
- du fragst nur Einzelwerte ab. Dies ist generell langsam. Verwende stattdessen den Modus "1Kanal NSamples" und frage die Daten blockweise ab. Wenn du die Option "Signalverlauf" wählst: es gibt eine Funktion "DWDT: Digitaldaten nach boolsches Array"...
- wenn du den Task stoppst, solltest du ihn auch wieder starten...

Zitat:Sobald man die Messung beendet kommt es zu einer Fehler
Der Fehler tritt schon vorher auf, wird aber erst nach dem DAQmxStop angezeigt... Schon mal den Fehler untersucht? Ich wette, es wird ein BufferOverflow angezeigt (wegen deiner Einzelwertabfrage)...


RE: NI 9411 digitalen Eingang mit 10 khz abfragen - Scenic626 - 17.08.2012 09:15

Hallo GerdW,

und vielen Dank für deine schnelle Antwort.
Ich bin noch sehr unerfahren, was LabVIEW anbelangt( 5 Tage learning-by-doing).
Was deine Anmerkungen anbelang habe ich folgendes geändert:
- das vielfach erzeugen des Kanals müsste jetzt behoben sein (leider kommt es nun sofort zum Fehler)
- könntest du mir alternative Methoden nennen um Daten zu sammeln, sie aber dennoch live ausgeben zu können
- Die Abfrage aus dem Messwert-Buffer ist eingerichtet, führt aber zu einem neuen Problem:
--> Wenn ich digital Waveform in boolean array umwandle, wie werden die Informationen dann abgelegt, und wie kann ich den einzelnen Werten hinterher den Zeiten zuordnen, zu denen sie aufgenommen wurden?
-Der Fehler besagt folgenden: Measurements: Terminal cannnot appear multiple times within a single digital input or output task.

Im Anhang wieder die veränderte VI

Gruß, Scenic


[attachment=41137]


RE: NI 9411 digitalen Eingang mit 10 khz abfragen - GerdW - 17.08.2012 09:31

Hallo Scenic,

- du hast einen Task "Drehzahlerfassung" in MAX definiert - wir kennen deine Einstellungen dort nicht.
- du fügst weiterhin beim Start jeder Messung den gleichen Kanal zu diesem Task hinzu, einmal vor der (Haupt-)Schleife würde reichen. Diese Beobachtung passt zu deiner Fehlermeldung...
- wenn der Kanal schon in den Einstellungen in MAX definiert wurde, kannst du ihn natürlich nicht noch einmal zum Task hinzufügen...
- du indizierst eine Spalte aus den Digitaldaten, ich glaube aber, das du die Daten zeilenweise bekommst. "Ich glaube" bedeutet, du solltest das mal testen...
- dein "Messwertspeicher" gibt eigentlich die Anzahl der Samples pro Kanal an
- du sammelst in den Feedbacknodes jeweils einen Wert für die Zeit und gleichzeitig viele neue Messwerte. Die Samplerate bestimmt dir das dt zwischen den Messwerten, ist eine einfache Rechnung...

Statt Learning-By-Doing könntest du auch die Online-Kurse durchgehen, siehe Link in meiner Signatur...


RE: NI 9411 digitalen Eingang mit 10 khz abfragen - Scenic626 - 17.08.2012 11:03

Hallo GerdW

vielen Dank für die viel Tipps, auch der Link hat sehr geholfen.
Ich habe die VI noch einmal aufgeräumt und fürs erste vereinfacht.
Leider tritt der oben genannte Fehler noch immer auf.

Er ist vorhanden, sobald die Schleife ausgeführt wird.
Kann es sein, dass es zu dem Fehler kommt, wenn LabVIEW den nächsten Schleifendurchgang schon aufruft,
während DAQmx-Read der vorhergegangenen Iteration noch Messwerte einliest?

Im Anhang die neue VI.

Gruß,

Scenic


[attachment=41139]


RE: NI 9411 digitalen Eingang mit 10 khz abfragen - GerdW - 17.08.2012 11:50

Hallo Scenic,

Zitat:Er ist vorhanden, sobald die Schleife ausgeführt wird.
Tritt der Fehler beim CreateChannel/Timing auf oder beim DAQmxRead? Schon vor der Schleife oder erst bei der ersten Iteration?

Zitat:Kann es sein, dass es zu dem Fehler kommt, wenn LabVIEW den nächsten Schleifendurchgang schon aufruft, während DAQmx-Read der vorhergegangenen Iteration noch Messwerte einliest?
Nein. Beschäftige dich mal mit dem Thema "DATAFLOW", dann wüsstest du die Antwort auch...

- Jetzt stoppst du den Task nicht, sondern löscht ihn.
- Regulär starten könnte man den Task auch...

Du hast immer noch nicht die Punkte von oben geklärt! Wie ist der Task definiert?


RE: NI 9411 digitalen Eingang mit 10 khz abfragen - Scenic626 - 17.08.2012 12:25

Hallo GerdW,

Der Fehler tritt laut Fehlerdialog bei Create Channel auf.
Wenn man den Inhalt der ERROR-"Leitung" verfolgt tritt der Fehler
erst nach dem Eintritt in die Schleife auf. Die Taskeinstellungen sind wie folgt:

-> Erfassungsmodus Single Sample
-> Externer Sampletaktquelle: Sampleclock (Steigend)

Task wird jetzt auch manuell in der VI gestartet

Gruß,

Scenic


[attachment=41150]