Zwei Spannungen auslesen, einmal oft und einmal seltener
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!
Zwei Spannungen auslesen, einmal oft und einmal seltener
Hallo LabVIEWer,
ich hab mal wieder ein kleines Problem.
Für mein Projekt muss ich an einer USB6210 zwei Spannungssignale einlesen. Den einen Messwert brauch ich alle 20ms um ein Signal zu erzeugen. Das andere ist ein Rechtecksignal oder sowas in der Art was von einem Geschwindigkeitssensor kommt. Für dieses muss ich ja die Frequenz bzw. die Anzahl der High-Pegel pro Zeitabschnitt bestimmen um die Geschwindigkeit zu errechnen. Dafür sind aber die 20ms mit denen ich die anderen Werte einlese zu kurz.
Wie löst man ein solches Problem? Da sich die Geschwindigkeit recht langsam ändert und wahrscheinlich nur der Kehrwert in die Berechnung eingeht, würde ich es gut finden alle ein oder zwei Sekunden den Signalverlauf neu einzulesen und auszuwerten. Oder lieber auch immer auslesen, in einem Ringspeicher oder Ähnlichem abspeichern und dann die letzte Sekunde ausrechnen?
Was wäre die bessere und geschicktere Variante?
Zwei Spannungen auslesen, einmal oft und einmal seltener
Hi,
die Karte hat doch einen Counter... Kannst Du da nicht Deinen Sensor anschließen und dann nur den Counter-Wert abfragen? Damit sparst Du Dir auch die Flankenerkennung...
Zwei Spannungen auslesen, einmal oft und einmal seltener
ja, die hat sogar zwei Counter, allerdings werden beide schon für die Ansteuerung von Servos benötigt.
Ich kann mir zwar vorstellen dass das nicht so optimal ist, aber so richtig 100% genau muss das Geschwindigkeitssignal nicht erkannt werden. Ich würde mal behaupten auf +-5km/h kommt es nicht an.
Zwei Spannungen auslesen, einmal oft und einmal seltener
Also, mittels des Beispieles für Ringspeicher hab ich mal folgendes siehe Bild versucht. Wäre das so vetretbar oder schlichtweg total blöd?
Ich kann es halt nicht direkt ausprobieren weil mir das Signal fehlt. In der Highlightfunktion ging zumindet das Programm an sich. Das Programm ist auch im Anhang, bitte nicht schlagen. Das ist vllt. wirklich totaler Murks was ich da veranstalte. Aber ich gelobe Besserung, wenn mich jemand auf den rechten Weg bringt!
Achso,
LG
Steffen
31.03.2009, 16:18 (Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2009 11:06 von jg.)
Zwei Spannungen auslesen, einmal oft und einmal seltener
' schrieb:Das ist vllt. wirklich totaler Murks was ich da veranstalte.
Nicht nur vielleicht? Das ist Murks hoch 3.
-AI-Task immer in der Schleife starten und stoppen, wieso?
-Dann der absolut fehlerhafte Missbrauch der Queue als Ringspeicher. Erstens ist das mit Arrays sowieso besser, und dann hast du an deine For-Schleife am Eingang eine "0" angeschlossen, d.h. es wird immer kein Wert in die Queue geschrieben!
-Das ExpressVI zur Mittelung kannst du dir auch sparen, dazu gibt es doch das entsprechende VI in der Mathe-Palette.
-So, dann liest du mit 1 kHz ein, gut, den 1. Kanal reduzierst du per Mittelwert (ist eine Möglichkeit, auch ok), aber du wolltest doch im 2. Kanal die hohe Auflösung beibehalten. Und wieso wandelst du dann das "Dynamic Data Array", das ja 20 Messwerte enthalten sollte, in eine Double (kein Array!!!) um, und bist damit wieder bei 50 Hz Auflösung?
Mir kommt das Grauen...
Hier mal eine modifizierte Version ohne Express-VIs. Es fehlt noch, aus dem Waveform einen FIFO-Puffer zu bauen, dazu hab ich jetzt keine Lust gehabt.
Zwei Spannungen auslesen, einmal oft und einmal seltener
Hallo Jens,
ich danke dir von ganzem Herzen! Ich konnte mir schon denken, dass das echt Murks ist was ich da mache. Nur irgendwie schau ich halt immer was ich brauche und was dann passen könnte.
Naja, dann wird das reingeklatscht und man ist so schlau wie zuvor. Ich werde mir das Ganze jetzt mal in Ruhe anschauen, dein Aufbau ist zumindest schonmal ne Ecke strukturierter als meiner.
Aber ich muss mir sowieso Gedanken machen ob das mit der Stellzeit regeln richtig ist. Gestern hatte ich das Programm halbwegs lauffähig, ein paar Rechenfehler noch beseitigt und geschaut. Allerdings waren die Stellzeiten doch immer recht kurz, was aber auch richtig sein kann.
Naja, wie gesagt. Ich schau mir alles in Ruhe an und überdenke es nochmal. Dann wird geschaut was es mit dem von dir genannten FIFO-Puffer auf sich hat.
Zwei Spannungen auslesen, einmal oft und einmal seltener
@Malte: ich kann es leider nicht, habe nur LV 8.6
@Jens: jetzt bin ich unter Umständen etwas klüger. Ein paar kurze Fehler hab ich noch verbessert.
Aber ein paar Verständnisfragen hab ich noch, ich hoffe doch dass ich keine allzu blöden Fragen jetzt stelle.
1.: mit dem unten im Bild ersichtlichen "WDT Signalverläufe anhängen" erstelle ich einen zeitlichen Verlauf meines Geschwindigkeitssignals? Ich lese ja einen Teil aus und der wird sozusagen dort aneinander gereiht, oder? Somit wird es möglich aus der sonst so kurzen Messdauer einen längeren Zeitabschnitt zu machen um langsame Frequenzen zu erkennen.
2.: In dem Kasten links unten mit Zeit/Datum etc. was wird dort gemacht? Soll dort der von dir erwähnte FIFO-Puffer hin? Diese Aussage hab ich nämlich noch nicht so richtig verstanden. So wie ich das bis jetzt rausgelesen hab handelt es sich da um einen Speicher unter Windows/LabVIEW. Inwiefern ich den jetzt noch irgendwo integrieren muss hat sich mir noch nicht entschlossen.
3.:Im "DAQmx Lesen" steht das Timeout bei 1s und Anzahl zu lesender Samples bei 20. Hört der nach Abfrage der 20 Samples auf oder wartet der dann den Rest der Zeit bis zum Timeout? Ich vermute/hoffe auf ersteres. Liege ich da richtig? Das Timeout spielt dann nur bei falscher Abtastrate oder zu kleinem Buffer beim Abtasten ne Rolle, oder?
4.: Ich hab das Programm mal gestartet. Du hast ja nen Kurvengraphen eingebaut. Der liegt im Zweig der Geschwindigkeitsbestimmung, zeigt aber das Spannungssignal des anderen Kanals an. Woran liegt das?
Für hilfreiche Tipps und Anregungen hab ich wie immer ein offenes Ohr. Bitte auch schimpfen wenn ich mich zu blöd anstelle. Ich will ja schliesslich was lernen.
gruß
Steffen
01.04.2009, 15:13 (Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2009 15:14 von jg.)
Zwei Spannungen auslesen, einmal oft und einmal seltener
' schrieb:@Malte: ich kann es leider nicht, habe nur LV 8.6
Natürlich kannst du das... Pulldownmenü->File->Save for previous version..."
Zu 1.
Könnte man so sagen, es werden halt (momentan) alle Daten aneinander in ein Waveform gehängt.
Zu 2.
Initialisierung des Schieberegisters mit einem leeren Waveform. Den Ringpuffer müssest du in der Schleife einbauen. So wie es momentan ist, wird das Waveform immer länger und länger, solange das Programm läuft. Dürfte nicht das Ziel des Ganzen sein. Es wird momentan auch immer das gesamte Waveform für eine Frequenz-Analyse herangezogen.
Zu 3.
Richtig, Timeout schlägt zu, wenn keine Daten kommen. Ansonsten ist nach 20 Daten Schluß.
Zu 4.:
Wahrscheinlich nur eine falsche Reihenfolge bei der Aufsplittung des Array of Waveform...
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Zwei Spannungen auslesen, einmal oft und einmal seltener
Mahlzeit,
ich hab das Ganze mal für Malte in LV 8.5 umgewandelt, musste allerdings die Kehrwertfunktion umändern da es die angeblich in LV 8.5 nicht gibt.
Zum Thema:
Also müsste ich das Waveform doch in einen Ringspeicher/-puffer legen und die Größ begrenzen. so dass das gespeicherte Signal halt vllt. 2s lang ist. Dieses Signal wird dann von dem Impulsmess-VI ausgwertet und bei jedem Schleifendurchgang der Berechnung zur Verfügung gestellt. Richtig?
Dann muss ich halt schauen wie ich das hinbekomme. Wäre der Weg mit dem vorherigen Queue völlig verkehrt?
Das mit dem falschen Signal bzw. der Anzeige verstehe ich aber noch nicht, im oberen Abschnitt zeigt es auch die Spannung an. Kann es daran liegen das an dem Anschluss am Gerät noch nix angeschlossen ist? Den Sensor dafür versuch ich heut mal anzuschliessen. Problem ist das er zur Zeit 12V ausgibt, also muss noch ein Widerstand dazwischen.