Hohe Abtastung aber nur bestimmte Werte nutzen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Hohe Abtastung aber nur bestimmte Werte nutzen (/Thread-Hohe-Abtastung-aber-nur-bestimmte-Werte-nutzen) |
Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 16.07.2009 10:39 ui...das ist ja ne ganze Menge an Information ich hoffe ich kann jetzt geordnet mal mein Feedback dazu geben... Zitat:- du erstellst dir mit der PXI 6602 einen Mess-Takt in der gewünschten Frequenz und routest diesen auf eine PXI-Trigger-Leitung, z.B. PXI-TRIGGER-1also beispielsweise 10 kHz wenn du sagst das ist ausreichend. ist ja aber schnell änderbar?! Zitat:- du erstellst einen Drehzahl-Task mit der 6602, als Abtast-Takt gibst du wieder um extern von PXI-Trigger 1 anich habe 2 Drehzahlen zu messen, dann erstelle ich einfach zwei Tasks und geben an beiden wieder den Messtakt von PXI-Trigger 1 an?! Zitat:Letzteres dürfte dich aber vermutlich gar nicht interessieren, weil du ja nur die Drehzahl kennen willst, und da ergibt sich bei der von dir geforderten sehr schnellen Abtastung ein Problem: damit du die Drehzahl ermitteln kannst musst du die Winkeländerung durch die Zeit dividieren.Ich erfasse die Drehzahl mit einer Skalierunge, die ich mit dem Kanal verbinde. Zumindest funktioniert dies...ob es der beste Weg ist weiß ich nicht. Aber so bekomme ich sofort einen Drehzahlwert. Als Kanal habe ich Frequenzmessung gewählt. ich werde sicherlich ein bisschen brauchen bis ich alles umgesetzt habe bzw versuche umzusetzen;)werd mich aber sicherlich bald wieder melden gruß johannes Hohe Abtastung aber nur bestimmte Werte nutzen - cb - 16.07.2009 11:00 ' schrieb:also beispielsweise 10 kHz wenn du sagst das ist ausreichend. ist ja aber schnell änderbar?! ja, du änderst dann nur die Ausgabe-Frequenz des Messtaktes und die abhängigen Messungen laufen entsprechend schneller bzw. langsamer. Wenn du Tasks verwendest die du im MAX erstellst, dann ist das gar kein Thema. Ich verwende hierfür immer die Funktion "Puls-Ausgabe" mit einem Duty-Cycle von 50:50, die gewünschte Frequenz musst du dir dann halt eben noch ausrechnen, weil man da - glaube ich - nur das Timing in einer Zeiteinheit für einen Puls angeben kann ... ' schrieb:ich habe 2 Drehzahlen zu messen, dann erstelle ich einfach zwei Tasks und geben an beiden wieder den Messtakt von PXI-Trigger 1 an?! richtig. Den selbst generierten Takt kannst du für alle abhängigen Messungen verwenden. Die Uhren auf den einzelnen Karten können schon mal einen leichten Jitter zueinander haben, mit dem selbst erstellten Takt bist du absolut sicher, dass alle Tasks gleich getaktet werden ... ' schrieb:Ich erfasse die Drehzahl mit einer Skalierunge, die ich mit dem Kanal verbinde. Zumindest funktioniert dies...ob es der beste Weg ist weiß ich nicht. Aber so bekomme ich sofort einen Drehzahlwert. Als Kanal habe ich Frequenzmessung gewählt. ich verwende dafür immer die Funktion "Encoder-Messung" da kann man einstellen wieviel Striche der Encoder pro Umdrehung liefert und es wird ein Winkel zurückgegeben. Darum hab ich in meinem 1. Post von Endwinkel - Anfangswinkel durch Zeit gesprochen Wo du noch dran denken solltest: der Messtakt-Task muss gestartet werden bevor du die Erfassungs-Tasks startest, ich bin mir jetzt nicht sicher ob man das ggf. sogar machen muss bevor man das Timing-VI für die Erfassungs-Tasks aufruft, ich mach es jedenfalls immer so, dass ich den Takt-Task erstelle und starte bevor ich die anderen Tasks erstelle und starte. Zudem sollte der getriggerte Slave Task (Encoder) schon laufen bevor der Master-Task (AI) gestartet wird, damit der den Start-Trigger (AI-START) auch mitbekommt ... Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 16.07.2009 12:31 Nochmal ein paar kurze Fragen... Zitat:- du erstellst dir mit der PXI 6602 einen Mess-Takt in der gewünschten Frequenz und routest diesen auf eine PXI-Trigger-Leitung, z.B. PXI-TRIGGER-1 das mit dem routen habe ich nicht so wirklich verstanden.kann ich auswählen auf welcher Leitung das Siganl dann anliegt?Bzw woher weiß ich wo welche Signale hingeführt werden? Für den Messtakt erzeuge ich beispielsweise einen Task wie im Bild zu sehen oder?. Hier kann ich dann Frequenz und Tastverhältnis etc einstellen. [attachment=19753] Diesen Task starte ich dann BEVOR ich die anderen Tasks starte, richtig? Wie bekomme ich jetzt dann den Messtakt an die anderen Task dran? Vielleicht könntet ihr mich direkt auf Beispiel verweisen, aber auch ein knappes how-to schreibein Danke gruß johannes Hohe Abtastung aber nur bestimmte Werte nutzen - cb - 17.07.2009 07:25 ' schrieb:kann ich auswählen auf welcher Leitung das Siganl dann anliegt?Bzw woher weiß ich wo welche Signale hingeführt werden? Schau mal im Max. Wenn du die Karte ausgewählt hast gibt es auf der rechten Seite 2 Registerblätter. Auf dem einen sind die Einstellungen, etc. und das 2. Blatt sind die Signalverbindungen. Einen Counter Ausgang kannst du aber immer auf einen PXI-Trigger routen. Ach ja: damit das klappt musst du dein PXI-Chassi etc ordnungsgemäß im MAX identifizieren ' schrieb:Vielleicht könntet ihr mich direkt auf Beispiel verweisen, aber auch ein knappes how-to schreibein Ich pack mal ein paar Screenshots rein: Anschlüsse routen [attachment=19749] Messtakt erzeugen [attachment=19750] AI-Task erzeugen [attachment=19761] ich hab grad nochmal nachgeschaut, ich route bevor ich den Messtakt erzeuge ... und dann könnte dich das hier vielleicht noch interessieren: http://forum.ib-berger.com/index.php?showtopic=60 Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 20.07.2009 12:43 Also... ich hab das dann so verstanden: 1) ich route mein Signal zB von ctr7 auf dev2/pxi_trigger0 (ctr7 ist der counter auf dem der Messtakt ausgegeben werden soll) 2) ich erstelle den Task der den Messtakt erzeugt. Ist es egal ob ich mit dem VI CO - eine Frequenz ausgebe oder Pulsdauer? 3) ich erstelle meine Tasks zum Erfassen der Signale; sowohl ai als auch die counter in. Hier gebe ich als Quelle für den Abtasttakt dann dev2/pxi_trigger0 bei jedem an?! Dafür nutze ich das Daqmx - Timing vi -> Abtasttakt. Aber ich muss hier ja eine Abtastrate angeben...kann man nicht nur die quelle angeben und dann diesen Takt der sich auf der Quelle (dev2/pxi_trigger0) nutzen? So muss ich ja doch für jeden Messtask die Abtastrate bestimmen. Anderes könnte ich den Messtakt ändern und die Messungen laufen automatisch mit einem anderen Takt oder? ist diese Vorgehensweise korrekt? danke gruß johannes Hohe Abtastung aber nur bestimmte Werte nutzen - cb - 21.07.2009 06:37 ' schrieb:1) ich route mein Signal zB von ctr7 auf dev2/pxi_trigger0 (ctr7 ist der counter auf dem der Messtakt ausgegeben werden soll)korrekt, eine Frequenz sind ja auch "nur" Pulse mit einem best. zeitlichen Abstand, es zählt ja auch immer nur die von dir eingestellte Flanke als Mess-Takt (üblicherweise "rising") ' schrieb:3) ich erstelle meine Tasks zum Erfassen der Signale; sowohl ai als auch die counter in. Hier gebe ich als Quelle für den Abtasttakt dann dev2/pxi_trigger0 bei jedem an?! Dafür nutze ich das Daqmx - Timing vi -> Abtasttakt. Aber ich muss hier ja eine Abtastrate angeben...kann man nicht nur die quelle angeben und dann diesen Takt der sich auf der Quelle (dev2/pxi_trigger0) nutzen? So muss ich ja doch für jeden Messtask die Abtastrate bestimmen. Anderes könnte ich den Messtakt ändern und die Messungen laufen automatisch mit einem anderen Takt oder? welchen Takt du bei Timing angibst ist bei einem Externen Takt eigentlich egal, aber nur eigentlich. Ich würde dort einfach die Frequenzangabe von deinem Messtakt-Task durchschleifen. Damit legst du nämlich auch die Buffer-Größe für die gepufferte, kontinuierliche Erfassung fest und die sollte schon passen, sonst bekommst du einen Buffer overflow (AI) oder Buffer underrun (AO) Error. Du gibst auch nicht immer dev2pxi_trigger0 als Takt an sonder "eigenedevicenummerpxi_trigger0". Beispiel: PXI 6602 --> dev 2 PXI 6259 --> dev 1 du routest den Messtakt von dev2ctr7out auf dev2pxi_trigger0 Als externen Messtakt verwendest du bei der 6259 dev1pxi_trigger0, also den Trigger0 auf der eigenen Karte, bei der 6602 den dev2pxi_trigger0 ggf. läßt sich der AI_START_Trigger nicht routen und ist zickick, ich behelf mir in solchen fällen gerne mit einer weiterem Puls-Ausgabe-Task der z.B. 5 digitale Pulse erzeugt und auch auf eine Trigger-Leitung geroutet ausgibt Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 21.07.2009 08:41 ok gut. also muss ich entsprechend der karte entweder dev1/pxi_trigger0 oder dev2/pxi_trigger0 angeben?! aber ich route das signal doch auf dev2/pxi_trigger0? ist es dann auf jedem devX/pxi_trigger0 verfügbar? Zitat:welchen Takt du bei Timing angibst ist bei einem Externen Takt eigentlich egal, aber nur eigentlich. Ich würde dort einfach die Frequenzangabe von deinem Messtakt-Task durchschleifen. Damit legst du nämlich auch die Buffer-Größe für die gepufferte, kontinuierliche Erfassung fest und die sollte schon passen, sonst bekommst du einen Buffer overflow (AI) oder Buffer underrun (AO) Error. für den Takt nutze ich das Timing VI - Abtasttakt und geb als Quelle entsprechend pxi_trigger0 an. Was meinst du mit dem "durchschleifen"? Wenn ich bei den Countertasks dieses Timing VI - Abtasttakt benutze sagt mir eine Fehlermeldung dass das keine richtigen Timing Einstellungen sind für diesen Task? muss ich eine andere Instanz des Timing VI´s nutzen? Einen Trigger habe ich noch nicht eingebaut. Der Trigger ist dafür da, dass alle Tasks gleichzeitig beginnen oder? Kann ich hier auch einen Knopf nutzen zB "Messung Starten"? vielen dank du hast mir schon sehr geholfen gruß johannes Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 22.07.2009 10:25 Hallo zusammen, kurze Frage: ist es denn überhaupt möglich bei einer Frequenzmessung (DAQmx Virtueller Channel -> CI-Frequenzmessung) einen Abtasttakt zu definieren? Ich bekomme nämlich immer eine Fehlermeldung, dass dies für diesen Kanal nicht möglich sei... Ich hab mir das so vorgestellt: Die Counterkarte (NI-PXI6602) soll fröhlich immer die Frequenz des anliegenden Inkrementalgebers ermitteln und irgendwo auf der Karte speichern. Mit meinem Abtasttakt möchte ich zu definierten Zeitpunkten den aktuellen Wert auslesen. Was dazwischen für Frequenzen auftreten interessiert mich erstamal nicht... Ist die Problemstellung klar?:)Bzw ist mein Vorhaben möglich? Danke Gruß johannes Hohe Abtastung aber nur bestimmte Werte nutzen - cb - 23.07.2009 06:57 ' schrieb:ist es denn überhaupt möglich bei einer Frequenzmessung (DAQmx Virtueller Channel -> CI-Frequenzmessung) einen Abtasttakt zu definieren? Ich bekomme nämlich immer eine Fehlermeldung, dass dies für diesen Kanal nicht möglich sei... offensichtlich nicht wenn du die Messung als "Circular Encoder" definierst, geht das aber sehr wohl - so mach ich das zumindest ... Als Ergebnis bekommst du dann eben Winkel und keine Frequenz. Vom Winkel rechnet es sich aber auch einfacher auf die Geschwindigkeit, denn du musst ja nur die Differenz in ° zur letzten Messung durch die Dauer der Messung (z.B. 100 ms) teilen und hast schon einen Grad pro Sekunde Wert. Den dann noch Umrechnen in U/min ist auch nicht schwer Hohe Abtastung aber nur bestimmte Werte nutzen - johannes_r - 23.07.2009 07:58 ok... du hast mir ja schon mal den tipp gegeben Zitat:Letzteres dürfte dich aber vermutlich gar nicht interessieren, weil du ja nur die Drehzahl kennen willst, und da ergibt sich bei der von dir geforderten sehr schnellen Abtastung ein Problem: damit du die Drehzahl ermitteln kannst musst du die Winkeländerung durch die Zeit dividieren. Wenn du nun z.B. ein Array mit 100 Winkeln zurückbekommst die mit 10 kHz gesampled wurden, dann bildest du die Differenz aus erstem Winkel (Array-Index 0) und letzten Winkel (Array Index 99) und dividierst das Ganze durch 0,01 Sekunden. Da die Zeit sehr klein ist und die Winkel-Änderung ggf. (gerade bei kleinen Drehzahlen) auch sehr klein sein kann bekommst du eine große Streuung - etwas plausibler formuliert, ein Tick des Encoders mehr oder weniger macht gleich ein paar 10 U/min mehr oder weniger aus. Als praktikable Abtast-Rate bei 360 Striche Encodern hat sich eine Mittelungs-Zeit für die Drehzahl von 250 ms herauskristallisiert dann berechne ich mir meine winkelgeschwindigkeit und rechne dies in eine Drehzahl um?! Was meinst du mit einer Mittelung von 250ms? kannst du mir ein Beispiel zeigen? (nein ich bin nicht faul aber ich würde es gerne richtig machen und denke dass du sehr sehr fit bist in LabVIEW deinen beiträgen nach) bei einer winkelmessung wird doch beispielsweise bei 0° angefangen und wenn die Messwelle jetzt fröhlich vor sich her dreht wird der winkel doch irgendwann sehr sehr groß oder nicht? hat das irgendwelche auswirkungen auf eine kontinuierliche messung? danke gruß johannes |