LabVIEWForum.de
Parallele Frequenz-Datenerfassung mit NI-9401 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Parallele Frequenz-Datenerfassung mit NI-9401 (/Thread-Parallele-Frequenz-Datenerfassung-mit-NI-9401)



Parallele Frequenz-Datenerfassung mit NI-9401 - ArneS - 17.02.2021 16:27

Hallo zusammen,

ich beschreibe mal zunächst mein Vorhaben: Ich habe 4 Durchflussmesser, die Durchfluss und Temperatur als Frequenzsignal ausgeben. Durchfluss und Temperatur sollen via LabView angezeigt und am dann zusammen mit diversen anderen gemessen Temperaturen aus anderen tasks in eine Datei geschrieben werden. Erstmal geht es jetzt nur um Durchflussgeschichte, die anderen Tasks tun was sie sollen.

Das Equipment:
cDAQ-9178 mit NI-9401 mit DSUB-Anschluss, 4x SV4200 Durchlfussmesser von ifm.

Anschlussplan:
PFIO: Durchfluss_1
PFI1: Temperatur_1
PFI2: Durchfluss_2
PFI3: Temperatur_2
PFI4: Durchfluss_3
PFI5: Temperatur_3
PFI6: Durchfluss_
PFI7: Temperatur_4

Der Einfachheit halber habe ich zunächst nur Durchflussmesser_1 angeschlossen: crt0 auf PFI0 und PFI1; die anderen Kabel hängen zwar an der Messkarte, aber ohne Sensor.

Task-Erstellung:
Zähler-Task in NI MAX erstellt:
Signalerfassung – Zählergestütze Erfassung – Frequenz – crt0 – Eingangsanschluss PFI0 – Signalbereich 1 – 100 Hz; Messmethode: 1 Zähler niedrige Frequenz; keine Skalierung; Messert auf Anfrage.
Die 1-100 Hz entsprechen der aktuell eingestellten Frequenz des Durchlfussmessers. (vgl. Bild "frequenz-task")
Das ganze nochmal für PFI1 - also 2 Tasks: "Frequenz" für PFI0 und "Frequenz_1" für PFI1.

VI-Beschreibung:
Das VI öffnet den task und liest die Frequenz aus. Diese wird mittels eines Faktors in die Temperatur umgerechnet. Der Durchfluss wird aktuell noch nicht berücksichtigt. Das ganze soll so lange ausgeführt werden, bis "Stop" gedrückt wird. Die 100 ms Wiederholungsrate sind aktuell willkürlich gewählt.
Die umgerechnete Temperatur stimmt mit der Anzeige auf dem Durchflussmesser überein.

Meine Probleme:
a) Der Versuch für PFI0 und PFI1 jeweils einen eigenen task laufen zu lassen, verursacht einen Fehler (Error -50103 occured at DAQmx Start Task.vi:7220002; Possible reason(s):
The specified resource is reserved. The operation could not be completed as specified). D.h. man muss in einem Task auf PFI0 und PFI1 gleichermaßen zugreifen, da sich zwei Tasks auf einem Kanal gegenseitig blockieren - in NI MAX kann ich für den Frequenz-task aber nur 1 Pin als Eingang festlegen: PFI0 oder PFI1.

b) Das VI gibt für Task1 und Task2 das selbe Ergbnis aus, obwohl der Durchfluss auf PFI0 ja 0 sein müsste. Seltsamerweise wird sogar ein Signal auf ctr1-ctr3 erkannt, obwohl an diesen Kanälen nur Kabel ohne Gerät hängen.

Ich vermute, dass nicht zwischen PFI0 und PFI1 unterschieden wird, sondern einfach der Input in ctr0 gezählt wird. Ist das korrekt? Und falls dem so ist: Gibt es eine Möglichkeit PFI0 und PFI1 getrennt anzusteuern bzw. zu zählen/auszuwerten? Und warum werden dann auf crt1 - ctr3 auch Signale empfangen?

Schonmal vorne weg: Vielen Dank für eure Hilfe Smile


RE: Parallele Frequenz-Datenerfassung mit NI-9401 - GerdW - 17.02.2021 18:07

Hallo ArneS,

herzlich willkommen im Forum!

Zitat:a) Der Versuch für PFI0 und PFI1 jeweils einen eigenen task laufen zu lassen, verursacht einen Fehler (Error -50103 occured at DAQmx Start Task.vi:7220002; Possible reason(s):
The specified resource is reserved. The operation could not be completed as specified). D.h. man muss in einem Task auf PFI0 und PFI1 gleichermaßen zugreifen, da sich zwei Tasks auf einem Kanal gegenseitig blockieren - in NI MAX kann ich für den Frequenz-task aber nur 1 Pin als Eingang festlegen: PFI0 oder PFI1.
Der Versuch, zwei Tasks für zwei Kanäle anzulegen, ist also fehlgeschlagen.
Was kommt bei dem Versuch heraus, beide Kanäle in nur einem Task zu verwenden?

Fehler -50103 bedeutet, dass die Resourcen nicht auf mehrere Tasks verteilt werden können. Logische Konsequenz ist also, die Resourcen in nur einem Task zu verwalten!

Zitat:b) Das VI gibt für Task1 und Task2 das selbe Ergbnis aus, obwohl der Durchfluss auf PFI0 ja 0 sein müsste. Seltsamerweise wird sogar ein Signal auf ctr1-ctr3 erkannt, obwohl an diesen Kanälen nur Kabel ohne Gerät hängen.
Wie kann Task1 und Task2 parallel laufen, wenn du doch Fehler -50103 bekommst?
Leider kann man nicht beurteilen, warum die zwei Tasks das gleiche anzeigen, da die Taskdefinition nur auf deinem Computer vorhanden ist…

Zum VI: da fehlt das komplette Errorhandling…


RE: Parallele Frequenz-Datenerfassung mit NI-9401 - ArneS - 17.02.2021 19:14

Danke für die netten Willkommensworte und die rasche Antwort Gerd,

ich versuche nochmal das Ganze etwas zu präzisieren:

So wie ich das richtig verstehe, gibt es Kanäle, die mit "ctr" bezeichnet werden. (Insgesmat 4 Stück: ctr0 bis ctr3)
Und es gibt Pins (1-25). Einige davon können als Signal-Eingang konfiguriert werden (14-25).
Dabei entspricht standartmäßig Pin 14 dem Signal PFI0, Pin16 ist PFI1 usw..
PFI0 und PFI1 gehörten dabei zum Kanal ctr0 (vgl. "Pinbelegung" im Anhang). Ist das alles soweit richtig?

Ich kann über 2 seperate Tasks parallel 2 Kanäle ansteuern - also z.B. Ctr0 und Ctr1. Seltsamerweise bekomme ich aktuell für beide Kanäle den selben Wert ausgegeben, obwohl Ctr1 mit keinem Gerät verbunden ist, sondern nur mit einem Kabel. (vgl. "Übersicht" im Anhang)
Ich kann nicht mit 2 seperaten Tasks auf 2 verschiedene Pins/PFI des selben Kanals zugreifen:

Ich habe insgesamt 4 Tasks wie beschrieben erstellt: Task_0 bis Task_3 um alle Eingangssignale für Ctr0 und Ctr1 abzugreifen.
Task_0 und Task_1 greifen beide auf Ctr0 zu, aber auf PFI0 bzw. PFI1.
Task_2 und Task_3 greifen auf Ctr1 zu, aber aber auf PFI2 bzw. PFI3.

Ich kann nur die Tasks paralel laufen lassen, die auf verschiedene Kanäle zugreifen. z.B.:
Task_0 + Task_2/_3 --> geht.
Task_0 + Task_1 --> Fehler.

Task_2 + Task_0/_1 --> geht.
Task_2 + Task_3 --> Fehler.

Außerdem geben mir alle Taks das selbe Ergebnis (aktuell 25 °C) aus, obwohl nur bei Task_1 (PFI1) ein Ergbnisse herauskommen sollte. Der Durchfluss is aktuell 0 und liegt auf PFI0 und PFI2/PFI3 sollten überhaupt kein Signal bekommen.

Die Frage ist jetzt: Wie kann ich die Signale auf den einzelnen Pins seperat ansteuern und auslesen?


RE: Parallele Frequenz-Datenerfassung mit NI-9401 - GerdW - 17.02.2021 20:38

Hallo Arne,

Zitat:ich versuche nochmal das Ganze etwas zu präzisieren:
So wie ich das richtig verstehe, gibt es Kanäle, die mit "ctr" bezeichnet werden. (Insgesmat 4 Stück: ctr0 bis ctr3)
Ich werde es auch mal präzisieren:
Du verwendest das NI9401-Modul. Das ist ein DIO-Modul, welches selbst keine Counter-Funktionalität bietet.
Die 4 Counter ctr0-3 werden stattdessen von deinem cDAQ-Chassis geliefert!

Zitat:Ich kann nur die Tasks paralel laufen lassen, die auf verschiedene Kanäle zugreifen. z.B.:
Task_0 + Task_2/_3 --> geht.
Task_0 + Task_1 --> Fehler.

Task_2 + Task_0/_1 --> geht.
Task_2 + Task_3 --> Fehler.
Wenn du jetzt also 4 Signale per Counter einlesen willst, musst du für diese 4 Signale auch zwingend verschiedene Counter verwenden! Du kannst nicht ctr0 sowohl für PFI0 als auch for PFI1 verwenden!

Wenn du also wie in deinem ersten Beitrag beschrieben 8 Signale per Counter einlesen willst, dann wird das mit der jetzigen Konfiguration nicht gelingen. Dazu benötigst du ein spezielles Counter-Modul, wie z.B. das NI9361

Zitat:Dabei entspricht standartmäßig…
P.S.: Eine hier beliebte Nachfrage lautet "Was hat die Stand-Art mit DAQ zu tun?" Big Grin


RE: Parallele Frequenz-Datenerfassung mit NI-9401 - ArneS - 18.02.2021 09:18

Guten Morgen,

Danke Gerd! Smile Das ist zwar nicht das was ich hören wollte, hilft aber sehr weiter.

Wäre es mit der Konfiguration möglich, die 8 Signale als digitale Signale einzulesen und dann einen selbstgebauten Counter softwareseitig zu verwenden? Im Grunde müsste man da ja "nur" die eingehenden Impulse zählen, diese auf eine definierte Zeit z.B. 1 s beziehen und hätte dann wieder die Frequenz, die ich in den gewünschten Wert umrechnen kann.

PS: Danke für den Hinweis Big Grin


RE: Parallele Frequenz-Datenerfassung mit NI-9401 - GerdW - 18.02.2021 09:41

Hallo ArneS,

Zitat:Wäre es mit der Konfiguration möglich, die 8 Signale als digitale Signale einzulesen und dann einen selbstgebauten Counter softwareseitig zu verwenden?
Ja.
Das NI9401 unterstützt DI mit bis zu 10MHz, das sollte ausreichen, um deine <=100Hz-Frequenzen hinreichend genau auszuzählen.
Ich würde mal mit 10kHz Samplerate (50×Nyquist) anfangen und jeweils 10k Samples einlesen. Das gibt dir 1s-Blöcke mit den Daten, die du dann auswerten kannst, indem du einfach die Anzahl der RisingEdges in jedem Kanal zählst…