LabVIEWForum.de
Ableitung von digitalem Winkelsignal - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Ableitung von digitalem Winkelsignal (/Thread-Ableitung-von-digitalem-Winkelsignal)



Ableitung von digitalem Winkelsignal - Niwo - 06.07.2017 13:01

Hallo LabView Users,

ich sitze schon seit Längerem an einem Problem mit der Ableitungsfunktion in LabView (lv17_img) und ich hoffe, mir kann hier jemand weiterhelfen.
Ich habe ein etwas größeres Vi geschrieben, das die Datenerfassung und Steuerung eines Prüfstandes ermöglicht. Leider kann ich das Vi hier nicht hochladen, weil es mehrere SubVi's und Cluster umfasst. Aber vielleicht klappt es auch mit den Bildern zur betreffenden Stelle.
Ich erfasse mit einem Compact-DAQ Chassis mehrere analoge Signale sowie ein digitales Signal. Bei dem digitalen Signal handelt es sich um ein Winkelsensor, mit dem ich später die Geschwindigkeit / Beschleunigung berechnen möchte.
Die Signale werden mit 400 Hz erfasst und zur Zeit arbeite ich mit 40 Samples, die in Arrays weitergeleitet und zu Berechnungen zur Verfügung gestellt werden. Das heißt, dass das VI stets mit Arrays mit 40 Einträgen arbeitet. Leider habe ich etwas Probleme mit der Ableitung des Winkel-Arrays und speziell dafür an den Randbedingungen. Als Methode habe ich 'rückwärts' ausgewählt, damit sollten sich eigentlich einfache Randbedingungen für die Funktion ergeben. Ich habe somit die Initialisierung der Ableitung über ein Schieberegisters des Winkelarrays erstellt. Laut der Hilfe in LabVIEW sollte eigentlich der letzte Eintrag des vorhergehenden Arrays genügen, um eine "stetige Ableitung" zu erzeugen... In den Daten, die ich ganz am Ende in ein TXT-File schreibe, sehe ich allerdings, dass es zu deutlichen Übergangsproblemen kommt. Eigentlich wäre nur der erste Eintrag des vorhergehenden Arrays notwendig gewesen. Ich hatte die zwei letzten Einträge des Array entnommen, da ich eventuell mehrere Varianten ausprobieren wollte. Mit einer Fitting Funktion habe ich versucht, die Sache etwas zu glätten.

Auf Tipps und Tricks bzw. Kritik würde ich mich freuen...

Gruß


RE: Ableitung von digitalem Winkelsignal - GerdW - 06.07.2017 13:31

Hallo Niwo,

eine Ableitung kann man auch einfach durch Subtrahieren der Array-Elemente bilden: dx/dt = (x(n+1)-x(n))/dt

Hast du das mal probiert? Dann musst du dir zu den 40 aktuellen Samples nur das letzte aus der vorigen Iteration merken…

Zum VI: Übersichtlichkeit ist was anderes…
Warum fragst du die Messdaten als Waveform ab, wenn du nur die Sampledaten benötigst? (dt ist doch schon durch die Samplerate vorgegeben und kann vor der Schleife abgefragt werden!)
Warum 4 einzelne IndexArray, statt einfach eines aufzuziehen?
Wozu die Wartezeit (Metronom), wenn die Schleifenrate über die DAQmxRead-Funktionen geregelt wird?


RE: Ableitung von digitalem Winkelsignal - Niwo - 06.07.2017 14:26

Hallo Gerd,

vielen Dank für deine Tipps! Ja, das Ganze ist irgendwie historisch durch mehrere Studentenhände gewandert, bevor ich es letztendlich annähernd neu strukturiert habe, ich gebe dir schon mal Recht mit den Waveformdaten, dass es nicht sonderlich sauber ist. Das mit dem Metronom, werde ich auch gleich mal entfernen und ausprobieren.
Ich hatte bereits mir eine While-Schleife für die Ableitung erstellt, bevor ich die LabView-Full-Version hatte und damit die fertige Ableitungsfunktion. Irgendwie hatte ich da ein besseres Ergebnis als mit der LabView Funktion. Ich war aber nie so richtig mit dem Verlauf der Ableitung zufrieden, weil alleine schon mein Winkelverlauf sehr fein und stetig ohne Schwingungen und Rauschen vorlag. Da ich aber davon ausgegangen bin, dass die Ableitung qualitativ auch nicht sehr viel schlechter sein sollte, habe ich zur fertigen Labview Version gewechselt. Ich habe irgendwie die Vermutung dass mein Delta t zu gering ist um die Ableitung mit zwei direkt aufeinander folgenden Datenpunkte zu erstellen. Im Anhang sieht man den Verlauf beider Signale. Die Sprünge sind immer am Anfang des Arrays zu finden, ansonsten ist der Verlauf innerhalb des Arrays ganz gut. Ich schätze dass die Übergangsprobleme wiederum von der Fitting-Funktion stammmen, allerdings habe ich ohne Fitting-Funktion ein starkes Rauschen auf der Ableitung Confused


RE: Ableitung von digitalem Winkelsignal - GerdW - 06.07.2017 14:45

Hallo Niwo,

Bilder sind ja ganz nett, aber nur bedingt hilfreich. Ein VI mit ein paar Beispieldaten wäre viel nützlicher…

Um das Rauschen zu minimieren, kann man Mittelwerte bilden.
Ein Weg, das zu tun, wäre das Berechnen der Ableitung nicht von Sample zu Sample, sondern über zwei Zeitschritte hinweg: dx/dt = (x(n+2) - x(n))/2dt…


RE: Ableitung von digitalem Winkelsignal - Niwo - 10.07.2017 12:32

Ja, ich versuche mal ein abgespecktes Programm zusammen zu stellen. Das Problem ist ja, dass Programme in Labview bisher nicht mit Originaldaten simuliert werden können, was ich als sehr großes Manko betrachte..
Was ich mich bisher gefragt hatte, wie die zentrale Ableitung 2. und 4. Ordnung in einem Datenerfassungsprogramm realisiert werden können, da am Ende des aktuellen Arrays die Werte i+1 und i+2 noch gar nicht übertragen wurden und deshalb nicht bekannt sein sollten. Müsste ich davor ein Schieberegister erstellen, sodass ich die von einem Programmdurchlauf zuvor aufgenommenen Daten für die Ableitung nutze? Dann würde die Ableitung immer ((1 / SampleRate) * SampleAnzahl) Sekunden hinterher hinken?


RE: Ableitung von digitalem Winkelsignal - GerdW - 11.07.2017 08:41

Hallo Niwo,

Zitat:Das Problem ist ja, dass Programme in Labview bisher nicht mit Originaldaten simuliert werden können, was ich als sehr großes Manko betrachte..
Warum nicht? Einfach Originaldaten in einem Indicator anzeigen lassen und dann dessen Darstellung auf "default data" setzen! Schon hast du was zu "simulieren"…