Mit Digitalmodul Frequenz ermitteln - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Mit Digitalmodul Frequenz ermitteln (/Thread-Mit-Digitalmodul-Frequenz-ermitteln) Seiten: 1 2 |
Mit Digitalmodul Frequenz ermitteln - ElRon - 31.10.2012 23:00 Hallo Leute, schlage mich erst seit Kurzem mit LV um und bin ohne eure Hilfe mit meiner Aufgabe überfordert. Für einen Prüfstand muss ich die Messsoftware auf LabView schreiben. Dabei werden unter anderem folgende Sensoren ausgelesen: 17x Volumenstromsensor (max. fünf im Simultanbetrieb) Signalausgabe der Sensoren: fmax: 5000Hz Signal: Rechteck 0: 0V 1: 22V k: 84 Imp./l Hardware: NI 9178 cDAQ Messmodul: NI 9425 (hat keine Counterfunktion) Meine Fragen: 1. Ist es überhaupt möglich mit diesem Modul eine Frequenz zu messen? (Hab auf verschiedene Arten versucht einen Wert zu bekommen, aber habe nie etwas Vernünftiges erhalten.) 2. Falls eine Frequenzermittlung möglich ist, kann mir jemand einen Tipp geben, wie ich das Problem lösen könnte? Ein vi folgt... Danke und Gruss ElRon RE: Mit Digitalmodul Frequenz ermitteln - GerdW - 01.11.2012 09:25 Hallo ElRon, um bei fmax=5kHz des Sensors alle Pulste mitzubekommen, musst du mit wenigstens 10kHz abtasten. Das 9425-Modul kann bis zu 140kHz, dies würde also funktionieren. Du müsstest dann selbst Pulse zählen, was aber relativ einfach ist. Aber: Das Modul selbst bietet keinen HW-Timer an (und deshalb auch keine Counter). Du musst also in Software entsprechend schnell (und deterministisch) abfragen! Und hier kommt das cDAQ ins Spiel: Ich weiß nicht, ob dieses einen HW-getakteten DI-Task für dein Modul erlaubt. Denn dies wäre die (aus meiner Sicht) einzige Möglichkeit, entsprechend schnell abzutasten... Erstelle doch einfach mal in MAX einen Task und schaue, ob dies überhaupt (fehlerfrei) möglich ist! Zitat:bin ohne eure Hilfe mit meiner Aufgabe überfordert.Keine gute Voraussetzung für den Job... RE: Mit Digitalmodul Frequenz ermitteln - ElRon - 01.11.2012 18:55 Hallo GerdW, danke für deine Antwort. HW-getaktet funktioniert leider nicht, habs soeben versucht. Aber ich werde mir vier NI 9421 (Schmerz!) beschaffen, ich glaube das ist die beste Lösung. Trotzdem nimmt mich folgendes wunder: - woher der Fehler in meinem vi rührt (siehe Abbildung). - wie ich mein vi erweitern kann, damit die Pulse gezählt werden. Zitat:... aber lehrreich...Zitat:Zitat:bin ohne eure Hilfe mit meiner Aufgabe überfordert.Keine gute Voraussetzung für den Job... RE: Mit Digitalmodul Frequenz ermitteln - GerdW - 01.11.2012 20:00 Hallo ElRon, zu deinem Bild: - Hast du dir schon mal die Beispiele zu den DAQmx-Funktionen angeschaut? Dort wird überall der Fehlercluster durchverdrahtet. Das hat seine Gründe... - Kann den Fehler hier bei mir nicht nachstellen. Ich vermute mal, es liegt an den gleichen Namen für Task und virtuellem Kanal... - Warum jetzt gleich 4 9421-Module? Reicht dir nicht eines für deine 5 Sensoren? - Bei Hardware-Fragen sollte man sich (gerade, aber nicht ausschließlich, als Anfänger) direkt von NI beraten lassen. (Tel. 089-7413130) Wenn die Module mit dem Chassis direkt Counter bieten, kannst du Tasks erstellen, die dir direkt die Frequenz ausgeben. Schau dir die mitgelieferten Beispiele an! RE: Mit Digitalmodul Frequenz ermitteln - ElRon - 07.11.2012 16:13 Hallo zusammen @ GerdW, danke für deine Antwort! Meine Ausgangslage hat sich wieder geändert: Wie gesagt, ich habe mir versuchshalber ein NI9421 (8 DI 10kHz) gekauft. Damit lässt sich problemlos ein Frequenztask erstellen. Das Problem ist, sobald ein zählergestützte Erfassung erstellt wird, sind HW-mässig nur noch 4 DI möglich. Leider habe ich nicht genügend freie Slots, um alle 17 Sensoren zu erfassen. Daher kommt wieder das NI9425 (32DI 140kHz) ins Spiel... ...folgende ist meine Überlegung: Mit dem DAQ-Assistent erstelle ich z.B. diesen Task: Abtastrate: 10kHz zu lesende Werte: 10000 Erfassungsmodus: kontinuierlich Dann erhalte ich jede Sekunde ein 1D-Array mit 32*10'000 Werte (Siehe Screenshot). Wenn ich bei diesem Array in jeder Spalte (roter Pfeil) die Anzahl der "1" bestimmen kann, lässt sich damit die Frequenz ermitteln. In meinem Screenshot ist eine Turbine an das Modul angeschlossen. z.B. 2000 "1" -> 2000Hz Frequenz... Nun meine Frage: Wie kann ich aus diesem Array die Anzahl der "1" in jeder Spalte ermitteln? Habe schon alle Array-Funktionen ausprobiert und Onkel Google half mir leider auch nicht weiter. Ich danke euch, freundliche Grüsse ElRon RE: Mit Digitalmodul Frequenz ermitteln - GerdW - 07.11.2012 16:42 Hallo ElRon, ich habe mal stur nach Kontexthilfe deine digitale Waveform in boolsche Arrays umgewandelt: [attachment=42154] (Ich arbeite nur wenig mit Waveforms und gar nicht mit digitalen...) Wie du aus dem Zählen der TRUE-Bits auf die Frequenz schließen willst, ist mir nicht ganz klar. Wenn ich je 16 Bits habe wie 1.) TTFFTTFFTTFFTTFF und 2.) TTTTFFFFTTTTFFFF dann hat Beispiel 1 eine höhere Frequenz als Beispiel 2 - aber beide die gleiche Anzahl TRUE-Bits... Vielleicht solltest du besser (steigende) Flanken zählen? RE: Mit Digitalmodul Frequenz ermitteln - ElRon - 07.11.2012 21:55 Hallo GerdW, die True Bits stellen die steigenden Flanken dar. Das NI-9425 Modul gibt mir beim Task "digitale Erfassung" die steigenden Flanken als Bits aus. Daher ist für mich nur die Anzahl der True-Bits in jeder Spalte relevant und nicht die Reihenfolge. Die Funktion "Digitaldaten nach boolesches Array" hab ich auch versucht, bin aber daran gescheitert. Warum muss ich diese Funktion in eine For-Schleife packen (siehe Screenshot "DWDT ohne...", bzw. "DWDT mit...")? Das verstehe ich nicht Ich hab mal ein Waveform in der gleichen Grösse generiert. Diese kann ich ohne For-Schleife konvertieren...? Jedenfalls komme, so glaube ich, mit deinem Tipp weiter... Nächste Woche stellt es sich heraus... Danke und Gruss elron RE: Mit Digitalmodul Frequenz ermitteln - Achim - 08.11.2012 08:52 (31.10.2012 23:00 )ElRon schrieb: Hardware: Kein einziges DI-Modul hat ne Counterfunktion integriert...das Modul ist nur die Schnittstelle zu den im Chassis integrierten 4 Countern. Diese sind gleichzeitig nutzbar, das reicht allerdings nicht für deine fünf Sensoren. Allerdings ist die Countermessung die beste (oder besser: einzig verlässliche) Methode, um Frequenzen der von dir verwendeten Sensoren zu erfassen. Kommst du evtl.doch mit nur vier Sensoren gleichzeitig aus? Für die "Umschaltung" zwischen den Sensoren müsstest du z.B. ein Auswahl-Menü (?) bereitstellen oder das programmatisch machen, d.h. die entsprechenden DI-Kanäle jeweils einem programmatisch zur Laufzeit erzeugten Countertask zuordnen. Zitat:Mit dem DAQ-Assistent erstelle ich z.B. diesen Task:Hm...ist mir auch nicht klar wie das funktionieren soll. Ich hab noch keine digitalen Waveforms verwendet. Wenn ich aber versuche, mit nem DI eine kontinuierliche DAQ zu machen, sagt mir der DAQ-Assi dass ich eine externe Taktquelle konfigurieren soll. (07.11.2012 21:55 )ElRon schrieb: Warum muss ich diese Funktion in eine For-Schleife packen (siehe Screenshot "DWDT ohne...", bzw. "DWDT mit...")? Weil das VI halt nur mit einer Digitalen Waveform und nicht mit einem "Array of digital Waveforms" zurechtkommt! A. RE: Mit Digitalmodul Frequenz ermitteln - ElRon - 08.11.2012 18:54 Hallo zusammen, Es handelt sich um Zitat:17x Volumenstromsensornicht um 5 Stück. Aber egal, das ändert nichts an meiner Fehlüberlegung Zitat:Dann erhalte ich jede Sekunde ein 1D-Array mit 32*10'000 Werte (Siehe Screenshot). -> Funktioniert natürlich nur, wenn die Impulslänge bekannt ist. Man könnte sie messen, leider ist sie abhängig von der Frequenz... Also doch: Zitat:Wie du aus dem Zählen der TRUE-Bits auf die Frequenz schließen willst, ist mir nicht ganz klar.->GerdW, du hast vollkommen recht: meine Idee funktioniert nicht. Und genau das ist meine Aufgabe: Flanken zählen! Gruss elron RE: Mit Digitalmodul Frequenz ermitteln - Achim - 09.11.2012 06:54 (08.11.2012 18:54 )ElRon schrieb: Es handelt sich um (08.11.2012 18:54 )ElRon schrieb: Und genau das ist meine Aufgabe: Flanken zählen! Ist mir schon klar...du musst 17 bedienen können, d.h. hw-mäßig anschließen, aber nur max. 5 Stück gleichzeitig auslesen. Meine Anregung geht dahin, eben nicht für alle vorab Tasks zu definieren, sondern dies zur Laufzeit (z.B. nach vorheriger Auswahl durch den Bediener) zu machen. Da gehen mit deinem Chassis aber eben nur 4 Stück gleichzeitig, weil das cDAQ eben nur so viele Counter hw-mäßig zur Verfügung stellt. Wenn du wirklich nicht von den 5 Stück gleichzeitig abweichen kannst, dann brauchst du z.b. das hier: http://sine.ni.com/nips/cds/view/p/lang/de/nid/1123 Gruß A. EDIT: Hab oben was durchgestrichen...ist zwar möglich, aber evtl. ist das für dich die bessere Alternative: http://sine.ni.com/nips/cds/view/p/lang/de/nid/207368 |