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!
08.07.2014, 13:44 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2014 13:45 von zig.)
Ich möchte einen Durchflusssensor mit LV betreiben. Das Teil liefert digitale Signale zwischen 0 und 24 V. Dabei ist die Anzahl der Pulse pro Sekunde ein Maße für den Durchfluss (Durchfluss = f(Pulsfrequenz)).
Mir steht an Hardware ein NI cDAQ-9178 Chassis und ein NI 9421 Modul zur Verfügung. Hardwareseitig habe ich die beiden Signaldrähte des Sensors mit DI0 und COM am Modul verbunden. Nun habe ich mir das Beispiel "Zähler - Impulsbreite und Frequenz lesen (kontinuierlich)" betrachtet. Dort können (oder müssen) zwei Parameter eingestellt werden: Der Zähler und ein Frequenzeingang.
Unter Zähler kann ich zwischen 4 Zählern wählen, die mit cDAQ1Mod2/ctr0-3 bezeichnet sind. (Das Modul steckt im zweiten Steckplatz). Daher gehe ich davon aus, dass die vier Zähler von diesem Modul stammen.
1. Frage:
Ich dachte die Zähler sitzen im Chassis?
1a. Frage:
Wenn die Zähler tatsächlich im Modul sind, warum sind es dann nur 4? Das Modul hat 8 Kanäle!?
2. Frage:
Was kann ich mir denn unter dem Frequenzeingang vorstellen?
Laut Beschreibung soll ich dort die zu messende Frequenz anschließen... aber das macht doch irgendwie keinen Sinn oder? Zwar kann ich hier diverse Dinge wählen (z.B. cDAQ1/80MHzTimebase, cDAQ/PFI0, etc.)... Was mich verunsichert ist, dass ich hier auch cDAQ1Mod2/PFI0 wählen kann. Ich weiß nämlich nicht was das bedeutet:
3. Frage:
Was ist cDAQ1Mod2/PFI0? Der erste Kanal des Moduls?
4. Frage:
Zwar will ich das später ohne ExpressVIs machen, aber zum Verständnis habe ich das ganze mal mit dem DAQ-Assi initialisiert. Hier kann ich als Kanal nur cDAQ1Mod2/ctr0-3 wählen, das mich in der Annahme bestätigt, dass diese Kanäle des Moduls für Frequenzmessung geeignet sind. Später erscheint aber der Hinweis "Signal verbinden mit (Eingangsanschluss): PFI1"... Ist damit der BNC-Anschluss am Chassis gemeint ?!? Warum soll ich mein Signal jetzt dort anschließen?
Vermutung:
Wenn ich das Ganze richtig verstanden habe, dann brauche ich um die eigentliche Frequenz (des Sensors) zu messen eine Referenz. Bei dem anzuschließenden Signal wird eigentlich die Referenz erwartet.
Kann das sein? (Wenn ja, dann ist die Bezeichnung und Beschreibung mehr als unglücklich gewählt...)
Danke schon im voraus für eure Hilfe!
zig
08.07.2014, 14:08 (Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2014 14:09 von GerdW.)
1. Richtig gedacht. Die Zähler benötigen aber trotzdem Inputs - und dafür eben ein DI-Modul… (s. Handbuch zum cDAQ)
1a. Das cDAQ unterstützt nur 4 CTR.
2. Ein Eingang, an dem man "Frequenzen" (aka Pulsfolgen) anschließt.
3. PFI = programmable function interface. Das sind Mehrzweck-Anschlüsse (CTR, PWM, Pulsgenerierung etc.), die aber den gleichen Pin wie die "normalen" DI/DO benutzen. Siehe Handbuch der jeweiligen Hardware…
4.
Zitat:aber zum Verständnis habe ich das ganze mal mit dem DAQ-Assi initialisiert.
Weil du etwas verstehen willst, programmierst du es so, dass du rein gar nichts von der Implementierung zu sehen bekommst?
Tipp:
Wenn man sich einen Kanal/Task in MAX anlegt, dann kann man sich dort auch ein Anschlussschema anzeigen lassen. Dann siehst du sofort, wo du welchen Draht anschließen musst…
Vermutung:
Von welcher "Referenz" redest du hier? Um eine Frequenz zu messen, brauchst du eine Pulsfolge an einem Signaleingang…
1. Richtig gedacht. Die Zähler benötigen aber trotzdem Inputs - und dafür eben ein DI-Modul… (s. Handbuch zum cDAQ)
1a. Das cDAQ unterstützt nur 4 CTR.
ja, das leuchtet ein
Zitat:Weil du etwas verstehen willst, programmierst du es so, dass du rein gar nichts von der Implementierung zu sehen bekommst?
Siehe dazu den post von jg
Zitat:Tipp:
Wenn man sich einen Kanal/Task in MAX anlegt, dann kann man sich dort auch ein Anschlussschema anzeigen lassen. Dann siehst du sofort, wo du welchen Draht anschließen musst…
Thx, daran hatte ich gar nimmer gedacht.
Zitat:Vermutung:
Von welcher "Referenz" redest du hier? Um eine Frequenz zu messen, brauchst du eine Pulsfolge an einem Signaleingang…
Die Referenz ist die Timebase oder halt eine Vergleichsfrequenz anhand derer die unbekannte ermittelt wird. Evtl. kann man die auch extern vorgeben?
So, ich konnte den Sensor jetzt mal in der Realität anschließen... und es funktioniert leider nicht.
Kurz vorweg: Der Sensor hat zwei LEDs. Eine leuchtet im Betrieb kontinuierlich, um zu sagen: "Ich bin an!". Die andere blinkt in der Frequenz, welche dem aktuellen Durchfluss entspricht.
Ich habe den Sensor als PNP an das NI-Modul 9421 (Sink) angeschlossen. Dabei geht ein Draht in DI0 und der andere in COM (so wie eingangs schon erwähnt). Wenn ich alles anschalte und der Sensor durchströmt wird, sehe ich an den beiden Sensor-LEDs, dass der Sensor seine Arbeit tut. Leider bekomme ich davon in LV absolut gar nix zu sehen.
Entweder läuft meine VI, das Licht am Chassis geht nur kurz an (am Modul selbst gar nicht) und ich bekomme schlicht keine Anzeige oder ich bekomme eine Fehlermeldung, die mir sagt, dass noch nicht alle Samples zum lesen zur Verfügung stehen. Leider kann ich den genauen Wortlaut oder den Fehlercode momentan nicht posten (der Code fing mit 400... an).
Anhängend mein VI. Als Zähler stelle ich cDAQ1Mod2/ctr0 ein und am CI.Freq.Anschluss cDAQ1Mod2/PFI0. Außerdem eine passende Skalierung die ich im MAX erstellt habe. Ich habe schon versucht am TIMINGmx und am READmx alles mögliche einzustellen... ohne Erfolg.
Idee:
Du nimmst ein Multimeter und prüfst damit das Signal aus deinem Pulsgeber. Entspricht es deinen Erwartungen - und denen deiner DAQ-Karte?
Zitat:Anhängend mein VI. Als Zähler stelle ich cDAQ1Mod2/ctr0 ein und am CI.Freq.Anschluss cDAQ1Mod2/PFI0.
Im VI ist das nicht zu sehen…
- Wozu überhaupt das doppelte Einstellen? (Habe aber bisher noch nicht mit cDAQ gearbeitet.)
- Was zeigt dir MAX an, wenn du einen Zählertask erstellst und dir die zugehörige Verdrahtung anzeigen lässt? Musst du dort auch einen PFI-Eingang wählen?
Es geht... ich habe heute morgen einmal einen Oszi an den Sensor angeschlossen: alles super. Dann habe ich einen Frequenzgenerator an das NI-Modul angeschlossen: alles super.
Ich vermute, dass es so etwas triviales war wie, Kabel nicht richtig ins Modul geklemmt = kein Kontakt^^
Das doppelte Einstellen kam/kommt daher, da ich sicher gehen wollte, dass auch der richtige Eingang genommen wird. Da wusste ich noch nicht, dass evtl. kein Kontakt besteht.
Das VI funktioniert zwar, allerdings ist mittlerweile der Bedarf nach zwei Optimierungen aufgekommen:
1. Wenn gerade kein Durchfluss vorhanden ist und ich das VI beenden möchte, dann erscheint ein Fehler, dass noch nicht alle Samples gelesen wurden. -> Gewünschte Verbesserung: Es sollte auch der Fall Durchfluss = 0 abgedeckt sein. Leider fällt mir dazu keine Möglichkeit ein.
2. Wenn man das VI um ein Signalverlaufsdiagramm ergänzt, läuft der Graph je nach aktuellem Durchfluss unterschiedlich schnell (resultierend aus dem impliziten Timing). Das ist für das Speichern der Werte (variable Sampling-Rate) ebenfalls von Nachteil. Welche Möglichkeit gibt es denn hier, das zu verbessern?
Zu 2: Ich habe versucht, das Timing auf Sample-Takt zu stellen und eine Samplerate von 1000 vorzugeben (Signal liegt zwischen 0 und 350 Hz). Das Daqmx Read wurde entsprechend angepasst. Leider wird dann gar nix angezeigt und nach Beenden des VI's erscheint der Fehler, dass eine externe Taktquelle benötigt wird. Ich hab als externe Taktquelle die OnboardClock oder die 20 MHz Timebase versucht... aber alles ohne Erfolg.
Die Beispiele von NI sind leider wenig hilfreich, da entweder mit einem impliziten Timing gearbeitet wird oder ebenfalls eine externe Taktquelle angegeben werden muss...