messfehler aus messreihe filtern

Senator42

Level-1
Beiträge
927
Reaktionspunkte
80
Zuviel Werbung?
-> Hier kostenlos registrieren
Ahoi edle Mathematiker !
mir fehlt eine zündende idee:

Das Problem:
Eine Welle wird von 0 auf 359 Grad gedreht. Ein Lasersensor misst dabei den Absand vom Sensor zur Welle.
Ich muss herausfinden wie Unrund (Schlag) das ganze ist.
Ich speichere also den kleinsten und größten Wert, dazu den betreffenden Winkel.

Es würde funktonieren wenn nicht gelegentlich ein Partikel auf der Welle so arg spiegelt dass der Messwert nicht nutzbar ist.

Reale Werte:
0, 15, 30, 45 .. Grad:
Messwert dazu
10, 12, 14, 32, 18, 20, 22, 5, 20, 18, 16, 14, 12, 10

Wie kann ich die "unrichten" 32 und 5 herausfiltern.

In einer anderen Welle sind die Werte:
4, 8, 12, 16, 20, 3, 28, 32 36, 32, 28, 44, 20, 16, 12, 8, 4
Die "unrichten" sind hier: 3 und 44

Die Welle dreht kontinuierlich, die Werte werden dabei zyklich gelesen.

Einen Filter der von den letzten 3 Werte nur den Schnitt der 2 nähersten niimmt, habe ich bereits drin.
Nutzt aber nur wenig. Ich könnte 2 oder 3 mal hintereinander auf so ein Partikel treffen.

Von den Wellen kann der Schlag von 0,001 mm bis 0,250 mm sein.
Die Dicke der Welle ist 4 mm. Soll aber auch mit 6 mm funktonieren.

Die Welle gilt als gerade wenn der Schlag unter 0,020 mm ist.

Der Sensor ist auf 0..4 mm Parametriert und liefert 4..20mA in eine S7 Analog-Baugruppe mit 13 Bit alle 2ms.

Die Messung läuft im OB 35 alle 10 ms.

Any Hints?
 
Zuletzt bearbeitet:
Hallo,

Es würde funktonieren wenn nicht gelegentlich ein Partikel auf der Welle so arg spiegelt dass der Messwert nicht nutzbar ist.

Ich würde dort ansetzen. Kannst du mit der Beleuchtung etwas ausrichten? Oder vllt. einen 2. Sensor?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was du da schon programmiert hast dürfte einem Medianfilter entsprechen, eigentlich ist das für Ausreißer ganz gut geeignet.

Für die Messwertreihe:
10, 12, 14, 32, 18, 20, 22, 5, 20, 18, 16, 14, 12, 10

gäbe das bei einem Median über 3 Werte:
1: ??, 10, 12 -> 10
2: 10, 12, 14 -> 12
3: 12, 14, 32 -> 14
4: 14, 18, 32 -> 18
5: 18, 20, 32 -> 20
6: 18, 20, 22 -> 20
7: 5, 20, 22 -> 20
8: 5, 20, 22 -> 20
9: 5, 18, 20 -> 18
usw.

Wenn zwei Ausreißer hintereinander kommen ist der Median über 3 Werte zu wenig und muss erweitert werden.

Ob das für deinen Anwendungsfall das richtige ist? Denn die Ausreißer sind doch eigentlich ungültige Messungen.
Ist die Frage wie du mit deinen Augen in den Werten die bestimmte Werte als Ausreißer feststellst? Wahrscheinlich ist es doch so, dass es bei einer Welle nicht möglich ist dass der Schlag einen bestimmten Wert zum vorigen Wert überschreitet. Ich würde die Werte dann einfach als ungültig annehmen. Wenn du viele ungültige Messwerte hintereinander reinkommen, ist keine vernünftige Messung mehr möglich.
 
Eine andere Möglichkeit wäre, die Messreihe zu glätten. Hierbei könnte man z.B. zu jedem Wert den (die) Vorgänger und den (die) Nachfolger addieren, durch die Anzahl der jeweiligen Werte dividieren und an der Index-Position wieder speichern.

Dann ergäbe das für die Beispielwerte :
10, 12, 14, 32, 18, 20, 22, 5, 20, 18, 16, 14, 12, 10
in der Wandlung :
10 , 12 -> 11 (1.Wert)
11 , 12 , 14 -> 12 (2.Wert)
12 , 14 , 32 -> 19 (3.Wert)
19 , 32 , 18 -> 23 (4.Wert)
usw.

Eine höhere als die von mir im Beispiel verwendete Glättung würde den Peak noch stärker "rausbügeln" ohne dabei aber zu starken Einfluß auf den Verlauf der Kurve zu haben ...

Gruß
Larry
 
Hi,

wenn ich die genau Anforderungen an die Prüfung (Schlag bei >0,020mm) anschaue halte ich es für "kritisch" die Werte zu glätten. Dadurch werden die Messwerte unnötig verfälscht (je mehr Ausreißer auftreten, desto kritischer wirkt sich das aus). Was zu einer Fehleinschätzung führen könnte.

Spontan würde ich wie folgt vorgehen:

-> den Schlag der Welle eine gewisse Symmetrie unterstellen (ist in den Vorliegenden Messdaten erkennbar) und darauf hin die Messreihe nach n/2 aufteilen (sie beginnt ja meist bei den kleinsten wert. wenn nicht demnach ausrichten)

10, 12, 14, 32, 18, 20, 22
5, 20, 18, 16, 14, 12, 10

-> unterste Messreihen spiegeln:

10, 12, 14, 32, 18, 20, 22
10, 12, 14, 16, 18, 20, 5

-> Messreihen zusammenfassen:

10, 10, 12, 12, 14, 14, 32, 16, 18, 18, 20, 20, 22, 5

-> daraus mittels linearer Regression eine Näherungsgrade berechnen und jeweils die Abweichung der einzelnen Messpunkte feststellen. Die Differenz aus dem Mittelwert der Abweichung und der Abweichung eines einzelnen Messpunktes sollte gut auskunft über einen Ausreißer geben.

Hier zwei rustikale Näherungsgraden für die Messreihen (wenn man die Berechnung selbst programmiert kann man dies noch verfeinern und die jeweils zusammengehörigen Messwerte z.b. 10 und 10, 12 und 12 usw. auf ein gemeinsames Argument legen):

MSP4301a2848d81691e93b00001df717d4776i3a4g.gifMSP41331a283i6cgdchcd2d00003ac25h55096856c1.gif
-> die so gefundenen Ausreiser kann man dann aussortieren und hat die (wahrscheinlich) unverfälschten Messwerte übrig


PS: gibt natürlich noch Aufwändigere Verfahren. Aber ich denke das wäre ein guter Mittelwert. Ich würde es auf alle Fälle mal probieren. :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Grafik

Das sind schon ein paar gute Ansaätze.

Ergänzung:

Das Material kommt aus dem Härteofen, fällt ich einen "Eimer", vor dort wird es in meine "Richtmaschine" gekippt, erst danach geht es zum Schleifen und Polieren.

Die Messreiche beginnt nicht beim kleisten oder größten Wert.

Messfehler.jpg

Die Zacken sollen einfach aus der Krone raus. Der Zacken kann auch die nächsteb 2,3,4 Werte in reihe kommen.
Der Mensch kann das sehr einfach erkennen. Mein Proggi nicht.
 
Zuletzt bearbeitet:
Hallo zusammen,
was haltet ihr von dem Gedankenspiel, den jeweilig neuen Messwert mit dem vorhergehenden zu vergleichen. Überschreitet der neue Wert eine gewisse Abweichung zu seinem Vorgänger, ist er ungueltig und wird nicht in die Messreihe aufgenommen.

Ich könnt mir vorstellen dass dieser Ansatz nicht so schlecht funktionieren wird, weil es sich ja um eine drehende Welle handelt, bei welcher wie weiter oben zu sehen ein Sinus resultiert....

Ist nur ein Gedankenspiel....


Ich könnte mir auch vorstellen den ungueltigen Messwert aus mehreren seiner Vorgänger zu interpolieren über eine Geradenfunktion....
 
Zuletzt bearbeitet:
Es gibt noch ein anderes Verfahren welches eigentlich aus der Auswuchttechnik kommt. Evtl. könnte das bei dir auch funktionieren, denn die Grundschwingung dürfte bekannt sein. Wenn ich das richtig sehe braucht deine Richtmaschine die Amplitude (wie stark ist die Welle verbogen) und den Phasenwinkel (wo).
Bei Auswuchtmaschinen gibt es dazu das sog. Wattmeterverfahren. Dabei wird das Messsignal mit einem Referenzsignal multipliziert, Mittelwerte gebildet usw.
Ich habe hier ein Buch zur Auswuchttechnik in dem das erläutert ist - allerdings nur mathematisch (sicher was für pat ;-) ). Bei Interesse kann ich die 2 Seiten mal einscannen/abfotografieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also durch das Bild stellt sich die Aufgabenstellung für mich etwas anders dar.
Vielleicht fehlen auch noch ein paar weitere Informationen.

Mit fällt dazu als Denkanstoß ein:

-> der Vergleich oder das Zusammenrechnen (Mittelwert) benachbarter Messerwerte ist besonders bei aufeinanderfolgenden Fehlwerten kritisch
-> wenn man stückweise Interpolieren möchte sollte eine Abbruchbedingung existieren die bereits eine gewisse Anzahl aufeinanderfolgender Fehlwerte toleriert bzw. erkennt.
-> Man könnte die Periode zweiteilen und durch lineare oder besser quadratische Regression eine gemittelte Funktion bilden und damit die Ausreißer finden (bei linearer Regression werden kleine Ausreißer in den Scheiteln sicherlich nicht genügend erkannt, bei quadratischer könnten eventuell sehr kleine Ausreißer in den "Nulldruchgängen" des Sinus nicht erkannt werden)
-> es ist auch eine Sinus Regression denkbar, wobei man immer betrachten sollte das die Messwerte keinen idealen Sinus (Kreis) bilden, sondern um den gesuchten Schlag abweichen
-> wenn man die Kennwerte der Sinnusschwingung vertrauenswürdig ermitteln kann könnte man entweder die Korrelation zum idealen Verlauf oder alternativ die jeweilige maximale Änderung zwischen zwei Messungen errechnen
-> weiter sind auch digitale Filter denkbar (die nicht zu stark auf eine Mittelwertbildung aufbauen sollten)
-> die Verfahren aus der Auswuchttechnik sind sicher auch äußerst interessant
-> wichtig ist sicher erstmal ein Toleranzband und eine maximale Anzahl an Ausreißer festzulegen umd einzuschätzen ob die Messung dann überhaupt verwertbar ist


Eine Ferndiagnose ist aus meiner Sicht nicht ganz so einfach möglich.

EDIT: Es ist doch zu erkennen, dass in der folgenden Periode die Ausreißer an einer anderen Stelle sitzen, wie wäre es einfach zwei Perioden miteinander zu vergleichen? (mal als Anfang)
 
Zuletzt bearbeitet:
Hallo,
es gäbe dann auch noch die Möglichkeit, die von mir vorgeschlagene Glättung von den original aufgezeichneten Werten zu subtrahieren. Als Ergebnis erhältst du dann die Peaks in (mehr oder weniger) Reinform - wenn du davon dann ggf. noch die Absolutwerte nimmst hast du deine Ausreisser dann sogar als positven Wert.. Für eine andere Messaufgabe habe ich so etwas schon mit gutem Erfolg gemacht.

Gruß
Larry
 
Eine Welle wird von 0 auf 359 Grad gedreht. Ein Lasersensor misst dabei den Absand vom Sensor zur Welle.
Mich würde da einmal dein Messaufbau interessieren, da ich evt. demnächst eine "Ähnliche" Aufgabe lösen muss.
Und habe mir dafür ein Laser Lichtband von micro-epsilon ausgesucht.

Es würde funktonieren wenn nicht gelegentlich ein Partikel auf der Welle so arg spiegelt dass der Messwert nicht nutzbar ist.
Wie sieht den dieser Partikel aus?
Könnte man den vor der Messung entfernen, reinigen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
> Wie sieht den dieser Partikel aus?
> Könnte man den vor der Messung entfernen, reinigen?

stell dir eine stahlplatte vor. geh mit dem sandtrahler drüber.
es sind wohl eher keine partikel, sondern reflexionen die den laser-entfernungs-messer "verwirren".
ein partikel würden den selben messfehler generieren.

ach, die maschine soll die wellen geraderichten indem abh. vom schlag mit einem stempel drauf gedrückt wird. wie schnell, lange und wieviel (weg/kraft) ist aber ne andere geschichte.

ein mensch braucht mit einer handhebelvorrichtung etwa 15 .. 30s, die maschine solls in 4 schaffen.
 
> Wie sieht den dieser Partikel aus?
> Könnte man den vor der Messung entfernen, reinigen?

stell dir eine stahlplatte vor. geh mit dem sandtrahler drüber.
es sind wohl eher keine partikel, sondern reflexionen die den laser-entfernungs-messer "verwirren".
ein partikel würden den selben messfehler generieren.
ok, eine unebene Bauteiloberfläche kann man nicht einfach wegreinigen.

Aber vielleicht ist dann auch die kleine punktuelle messen auf der raunen Oberfläche nicht die ideale Lösung.

Bevor man aufwendig die Messwerte schön rechnet vielleicht das Problem eine Stufe früher angehen.

Bei einem Laser-Lichtband würde man den Schattenwurf der Welle auswerten. Eventuell gibt es auch induktive Abstandssensoren die genau genug sind für deine Messung.
 
Ich hänge mal die Beschreibung des Messverfahrens bei Auswuchtmaschinen an.
Außerdem habe ich die Formeln zusammen mit einer Testsignalreihe in eine Exceltabelle gepackt. Die Ergebnisse der Analyse befinden sich in Zellen Q9 für die Amplitude und in Q14 für die Phasenlage.
Sehr gut funktioniert das Verfahren bei überlagerten periodischen Schwingungen. Bei einzelnen Peaks ist das Ergebnis zwar nicht mehr ganz so gut, aber im Beispiel habe ich mal eine dicke Störung auf den obersten Punkt der Schwingung des Messsignals gelegt, und trotzdem ist die Erkennung der Amplitude noch einigermaßen brauchbar.
Ein Vorteil an dem Verfahren ist der Wegfall von händisch einzustellenden Parametern zur Messwertglättung o.Ä.
 

Anhänge

  • Auswuchttechnik-Messverfahren.pdf
    636,8 KB · Aufrufe: 29
  • Wattmeterverfahren-Test-1.zip
    26,4 KB · Aufrufe: 16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich würde versuchen den Sprung mit deinem Programm auszuwerten.
Also als erstes die Differenz zum Vorherigen Wert ermitteln.
Ist diese Differenz Größer als erwartete ist der neue Wert Falsch und muss ignoriert werden.

Dein Beispiel:
10, 12, 14, 32, 18, 20, 22, 5, 20, 18, 16, 14, 12, 10

Differenz zum vorherigen Wert .
??, 2, 2, 18, -14, 2 ,2 ,-17 ,15 , -2 ,-2 ,-2 ,-2 ,-2

Dieses ist jetzt auch vom Programm einfach zu erkennen das der Wert 18 und -17 Fehlerhaft ist.

Wenn diese Werte ignoriert werden würde danach das Ergebnis so aussehen.
??, 2, 2,! , 4, 2 ,2 ,! ,-2 , -2 ,-2 ,-2 ,-2 ,-2

mfG Jochen
 
Und, gibts was von der Inbetriebnahmefront zu berichten welche Lösung funktioniert?

Wenn man in dem konkreten Anwendungsfall die Messwerte mit einem Tiefpass/Mittelwert glätten will, ist hier zu beachten dass man dadurch eine Phasenverschiebung generiert. Da die Grundfrequenz des Messsignals aber immer gleich sein sollte, könnte man diese Verschiebung bei bekannten Filterparametern später wieder herausrechnen.
 
ich mach es jetzt so:
1. datenreihe mit den messwerten
2. datenreihe mit filterwerten:

filterwert[0] = ( messwert[0] + messwert[1] ) / 2
danach bis zum ende: Loop i=1 to cnt-1
wenn ABS(messwert - messwert[i-1]) < grenzwert dann filterwert = messwert
sonst filterwert = filterwert[i-1]

also ich nehm den vorigen filterwert wenn ein hüpfer drin ist.

mag sein dass ich gleich am anfang etwas daneben liege, habe momentan aber noch andere probleme.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Grafik zeigt jetzt Orginalwerte (libnodave + VB + .csv) nach einer Drehung um 360 Grad.
Abtastung (Laser-Distanz-Sensor) etwa alle 8,5 Grad.
Danach 2 mm waagerecht eine neue Position angefahren und nochmal 360 Grad gemessen.
Die beiden grossen Zacken kommen von einem Mikrokratzer der schräg läuft.
Die kleineren Zacken kommen von der Welle die, naja, etwas rauh ist.
Mit einem mechanischen Abtaster kommt ein Schlag von 35 µm heraus.
Der Laser sagt -10 .. 45 µm. Wegen den Helligkeitsunterschieden (rauhe 'Fläche') kann es der
Laser (Triangulationsverfahren) nicht besser.

welle01.jpg

Ich muss also jetzt die größten Zacken ignorieren, und das min/max mit 0.x multiplizieren um auf meinen Schlag zu kommen.
Dass dabei der Messwert bei grösseren Schlägen nicht stimmt ist egal, weil:
Wenn ich weiss wo der 'Berg 'ist, wird dort mit einem Drücker draufgedrückt um die Welle geradezurichten. Gerade ist wenn der Schlag unter 30µm ist.

Irgenwelche pragmatische Tipps?
 
Kannst du die CSV-Datei mit den Messwerten mal anhängen? Dann kann man mit den Werten mal etwas experimentieren., auch wenn 42 Werte pro Umdrehung etwas grob ist.
 
anhang als zip
 

Anhänge

  • welle01_2012.07.21_16.13.20.zip
    363 Bytes · Aufrufe: 11
Zuletzt bearbeitet:
Zurück
Oben