Ausreißer in bei Messwerten interpolieren / unterdrücken - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: Ausreißer in bei Messwerten interpolieren / unterdrücken (/Thread-Ausreisser-in-bei-Messwerten-interpolieren-unterdruecken) |
Ausreißer in bei Messwerten interpolieren / unterdrücken - berion - 23.06.2006 14:54 <div align="left"> Hallo Ihr LabVIEWler! In meiner Diplomarbeit muss ich Stellpositionen eines Servo-Motors mit Hilfe eines 16-Bit-Encoders erfassen. Die 16 Encoder-Bits (regulär codiert und nicht Gray-codiert) sollen über ein DAQPad-6016 abgefragt werden und im PC mit Hilfe von LabVIEW in einer Drehzahlregelung weiterverarbeitet werden. Soweit so gut. Nun mein Problem: Aufgrund der "unsauberen" Codierung springen die Winkel beim Einlesen in einigen Positionen manchmal (vereinzelnd an unregelmäßigen Stellen). Ich würde diese "Ausreißer" gerne mit Hilfe einer LabVIEW-Routine unterdrücken, interpolieren oder ausblenden. Beim momentanen Aufbau springt die von mir errechnete Winkelgeschwindigkeit an diesen Stellen hin und her. Zwar kann ich diese TP-filtern, jedoch geht dann die Kurvencharakteristik der Motordrehzahlkennlinie verloren, die ich gerne auswerten will, um den Regler einzustellen. Würde mich freuen, wenn einer von Euch da eine Idee hätte, wie man das realisieren könnte. Gruß Alex </div> Ausreißer in bei Messwerten interpolieren / unterdrücken - eg - 23.06.2006 15:10 Wenn du einige Punkte aufgenommen hast, kannst du diene Kurve approximieren(mit General Polynomical Fit), dann, wenn du den nächsten Wert hast, kannst du die Differenz zwischen der Kurve und diesem Punkt berechnen. Wenn die Differenz zu gross ist, musst du diesen Punkt einfach verwerfen, wenn die Differenz OK ist, nimm diesen Punkt in dein Messwertarray und berechne die Approximation neu. Und dann so immer weiter. Hoffentlich richtig und verständlich. Gruss, Eugen Ausreißer in bei Messwerten interpolieren / unterdrücken - cb - 23.06.2006 18:01 ' schrieb:Aufgrund der "unsauberen" Codierung springen die Winkel beim Einlesen in einigen Positionen manchmal (vereinzelnd an unregelmäßigen Stellen). Ich würde diese "Ausreißer" gerne mit Hilfe einer LabVIEW-Routine unterdrücken, interpolieren oder ausblenden. Beim momentanen Aufbau springt die von mir errechnete Winkelgeschwindigkeit an diesen Stellen hin und her. Zwar kann ich diese TP-filtern, jedoch geht dann die Kurvencharakteristik der Motordrehzahlkennlinie verloren, die ich gerne auswerten will, um den Regler einzustellen. ich hab ne Antwort, die du vermutlich nicht hören willst: Der DAQ-STC1 Chip, der auch auf der 6016 verbaut ist hat einen Bug. Dank dieses Bugs verzählen sich die Counter ab und zu. Leider ist das sporadisch und nicht behebbar. Bei Counter-Messungen würde ich daher immer die 6602 verwenden oder du legst dir eine neue M-Serie zu ... Grüße CB Ausreißer in bei Messwerten interpolieren / unterdrücken - berion - 25.06.2006 16:51 <div align="left"> ' schrieb:ich hab ne Antwort, die du vermutlich nicht hören willst: Das dürfte eigentlich nicht das Problem sein, da ich bei den Winkelmessungen nämlich keine Hardware-Counter oder Timer verwende. Lediglich die Standard I/O's um die Encoder-Bits einzulesen. Differenzberechnungen werden nur softwaremäßig mit LabVIEW durchgeführt. Aber trozdem Danke für den Tipp, falls ich doch noch auf die Idee kommen sollte, die Counter zu verwenden. Gruß Alex </div> Ausreißer in bei Messwerten interpolieren / unterdrücken - berion - 25.06.2006 17:25 <div align="left"> ' schrieb:Wenn du einige Punkte aufgenommen hast, kannst du diene Kurve approximieren(mit General Polynomical Fit), dann, wenn du den nächsten Wert hast, kannst du die Differenz zwischen der Kurve und diesem Punkt berechnen. Wenn die Differenz zu gross ist, musst du diesen Punkt einfach verwerfen, wenn die Differenz OK ist, nimm diesen Punkt in dein Messwertarray und berechne die Approximation neu. Hallo Eugen! Erstmal danke für deine ausführliche Antwort . Ja so ähnlich hab ich mir das auch schon überlegt. Die Funktion hat ja auch grundsätzlich eine linearen Verlauf mit variabler Steigung je nach Umdrehungsgeschwindigkeit. Da die Winkelanzeige jedoch einen sägezahnförmigen Verlauf durch den Übergang von 359 ° -> 0 ° hat (also einen Sprung macht), weiß ich ich nicht recht, ob ich sich diese Kurve durch ein lineares Polynom approximieren lässt. Bei dieser Stelle dürfte es mit einer gewöhnlichen linearen Fit-Funktion Probleme geben, oder? Ließe sich dieser Verlauf nicht über eine Dreiecksimpulsfunktion approximieren? Wenn ja, wie? Oder geht es doch über einen linearen Kurven-Fit? Sorry, beschäftige mich erst seit April mit LabVIEW und habe noch nicht so viel Erfahrung damit. Gruß Alex </div> |