INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Parallele Frequenz-Datenerfassung mit NI-9401



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

17.02.2021, 16:27
Beitrag #1

ArneS Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Feb 2021

2017
2019
DE



Parallele Frequenz-Datenerfassung mit NI-9401
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


Angehängte Datei(en) Thumbnail(s)
   

17.0 .vi  frequenz-test_02.vi (Größe: 18,35 KB / Downloads: 7)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.02.2021, 18:07 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2021 18:11 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 16.815
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: Parallele Frequenz-Datenerfassung mit NI-9401
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.02.2021, 19:14
Beitrag #3

ArneS Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Feb 2021

2017
2019
DE



RE: Parallele Frequenz-Datenerfassung mit NI-9401
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?


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.02.2021, 20:38 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2021 20:42 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 16.815
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: Parallele Frequenz-Datenerfassung mit NI-9401
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

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.02.2021, 09:18
Beitrag #5

ArneS Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Feb 2021

2017
2019
DE



RE: Parallele Frequenz-Datenerfassung mit NI-9401
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.02.2021, 09:41 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2021 09:46 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 16.815
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: Parallele Frequenz-Datenerfassung mit NI-9401
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  parallele Ausführung von for-loops stsc 5 2.506 24.07.2019 15:12
Letzter Beitrag: stsc
  Parallele Ausführung mehrerer Sub-Vis Anna1988 21 7.920 20.07.2015 11:51
Letzter Beitrag: Anna1988
  Parallele Sub-VI dbuckl 1 2.979 07.10.2013 15:09
Letzter Beitrag: GerdW
  Parallele pausierte For-Schleife Chillkroete1206 7 3.457 15.02.2013 17:59
Letzter Beitrag: Trinitatis
  Parallele Queue Struktur eurostar 14 7.562 29.01.2013 09:26
Letzter Beitrag: Y-P
  parallele Tasks - Performance dimitri84 16 9.438 19.10.2011 19:44
Letzter Beitrag: dimitri84

Who read this thread?
4 User(s) read this thread:
th13, MScz, THL, Vonzo

Gehe zu: