Verfasst am: 19.04.2016, 13:06
Titel: Rauheitsprofil rund darstellen
Halloooooo
Ich habe ein Rauheitsprofil eines Zylinders als Matrix 86000*2 vorliegen. Leider gibt die Messmaschine das natürlich als 2D-Plot aus so wie sie misst, also nicht radial bzw. als Kreis, sondern als gerader Plot. Ich möchte aber vor allem aus Darstellungsgründen das ganze in einem Polardiagramm darstellen, also wieder als geschlossenen Kreis. Die sicher auftretenden Rundheitsabweichungen mal außen vor gelassen bzw. vorher in der Messmaschine rausgefiltert.
So wie in diesem Beispiel sehen nun meine plots aus: http://www.jaeger-gmbh.com/sites/de.....ssprotokol_rauhigkeit.jpg
Die Umrechnung ins Polardiagramm ist über cart2polar ja izi, allerdings muss ich ja noch einen Weg finden, den Verlauf abzurunden. Von mir kann auch eine Gaussgrade durch den Verlauf gelegt werden, diese dann zu einem Kreis geschlossen und dann die Messwerte wieder um diese drumherum angeordnet werden. Da die Messstrecke ja auch aufs µ bekannt ist und die Messpunktanzahl durch die Taktung genau definiert ist, weiß ich das Punkt 1 der erste Punkt ist, der mit Punkt 86000 geschlossen werden muss.
Im zweiten Schritt kommen noch mehr Messungen an anderen Schnitten dazu und danach möchte ich alle Schnitte in einem zylindrischen Koordinatensystem zusammenfügen. Ein bisschen Reverse Enginnering betreibe ich damit quasi Aber dafür dürfte sich ja in der Herangehensweise nichts ändern.
Kann mir jemand auf die Sprünge helfen? Ich habe keine Idee, wie ich den Kreis aus dieser Messstrecke bilden kann. Danke!
Verfasst am: 19.04.2016, 16:12
Titel: Re: Rauheitsprofil rund darstellen
Hallo cheechoo,
Welche Daten hast Du denn zur Verfügung? Was genau bedeutet "Rauhigkeitsprofil"? Wieso ist dies eine n x 2 Matrix? Sind das X- und Y-Koordinaten? Oder der Radius und der Winkel?
Wieso möchtest Du den Verlauf denn abrunden? Das ist ja nicht der Sinn einer Rauigkeitsmessung.
Wenn Du eine Gauss-Gerade durch die Messwerte legst, hast Du doch eine gerade. Wie willst Du die denn zu einem Kreis schließen?
Zur Verfügung habe ich die Aufnahme eines Rauheitskeitsmessgerätes. Also 86 000 x-Werte mit dazu gehörenden 86 000 y-Werte, die wie im Beispiel oben gezeigt verlaufen. Diese werden ja in einem geraden Verlauf (normales kartesisches KO) angezeigt, da sie so ja auch aufgenommen werden (das Werkstück dreht sich, die Tastspitze bleibt starr und bewegt sich nur in y)
Ich möchte diese Messwerte aber wieder kreisrund darstellen. Ich möchte daran keine Rauheitsuntersuchungen mehr machen, also keine Rauheitskennwerte berechnen sondern eine möglichst realitätsnahe Darstellung der wahren Oberfläche erzeugen.
Am Ende nehme ich mit dem Messgerät mehrere Schnitte auf und packe das mit linearen Aufnahmen der Mantelfläche zusammen in ein zylindrisches KO.
Die Gaussgrade wäre somit nur nötig wenn sie helfen würde, den Kreis zu erzeugen. Ich weiß ja wie lang meine Taststrecke war, also wie lang die Gaussgrade ist. Somit kenne ich auch die Umfangslänge bzw. den Durchmesser des Kreises. Die ursprünglichen x-y-Werte müssen dann wieder drumherum angeordnet werden.
Ich hoffe mit der Skizze im Anhang kann ich etwas besser deutlich machen.
Die 3 Diagramme im ersten Post sind zu klein um irgendetwas erkennen zu können.
Es ist immer noch nicht klar, was die Messwerte sind. Wenn nur y sich bewegt, wieso hat die Daten-Matrix dann 2 Spalten? Du hast ein Diagramm gezeigt, bei dem die Rauhigkeit des Radius gemessen wird. Ist das nun der X- oder der Y-Wert? Oder sind dies Kathesische Koordinaten?
Eigentlich benötigst Du nur den Mittel-Wert des Radius, oder?
Und damit kannst Du z.B. mit dem Befehl
cylinder
einen Zylinder zeichnen.
Die Rohdaten, die die Maschine liefert und auf die ich aufbaue, sind reine x-y Koordinaten. Dabei verkörpern die x-Koordinaten die lineare Bewegung des Tasters, der normalerweise ja linear auf dem Werkstück verfährt und die sich dabei durch die Rauheit einstellende y-Auslenkung aufzeichnet, die Werkstückbefestigung bleibt starr. Hier in der radialen Messung bleibt allerdings die Tastnadel starr und das Werkstück wird rotiert. Die Rotation wird der Messsoftware dennoch als Translation vorgespielt, somit kommt dieses kartesische Diagramm zu Stande. Die Messsoftware nimmt die Daten so auf, als habe sie eine grade Fläche aufgenommen.
Aber dem ist ja nicht wirklich so, sondern die Fläche gehörte radial zu einem Zylinder. Und genau das möchte ich nun wieder darstellen. im Endziel will ich keinen Mittelwert haben, keinen Radius oder sonstiges. Ich möchte wirklich nur die aufgenommenen x-y-Werte Kreisrund anordnen, so wie ich es in meiner Skizze zeige. Wenn es dafür als "Hilfskonstruktion" die Gaussgrade benötigt, die dann zum Kreis geschlossen wird und als neue runde x-Achse dient, dann ist das auch ok.
Im Endeffekt betreibe ichd somit Reverse Engineering mit den Messwerten der realen Oberfläche...
Wenn ich das richtig verstehe, dann kann das doch nicht ganz so schwer sein.
Gehen wir mal von deiner letzten geposteten Skizze aus.
Du bekommst das höhenprofil mit der Länge x = 20 cm (angenommen). Dazu hast du die Y-Werte als höhe. Daraus ergibt sich dann beispielsweise
x1 =0 Y1=-0,2
x2=1 Y2=0,3
x3=3 Y3=0,5
X4=4 Y4 = 0,3
X5=5 Y5 = 0,2
Also müsste der Durchmesser ohne Fehler 20 cm betragen.
Die ersten 5 cm entsprechen 90°, die zweiten 180°, die dritten 270° und die letzten 360° bzw 0°
Dann den Pythagoras nehmen:
x1= 0 : 0(in y bei einem "perfekten" Kreis) + differenz (in y) (wobei differenz positiv oder negativ sein kann):
y mit rauheit= 0 + Differenz in y = 0 + (-0,2) = -0,2
--------------------------------------
x2= 1: (perfekter) Kreispunkt bei x=1 --> y = ?
y= a/sin(alpha)
da 5cm 90° entsprechen, entspricht 1cm 18°
--> y=1/sin( 18 )= 3,236...
Y2 mit rauhheit= 3,236 + Differenz in Y1 = 3,236 + +0,3 = 3,536
usw bis 5cm
Danach müssen die rechenregel anders sein (je nach KO-quadrant)
Wäre das evtl ein Lösungsansatz?
dumdidum jetzt muss zu jedem Punkt noch das Verhältnis x und y berechnet werden.
Mein Denkfehler ist oben noch, das bei x1=0 die Differenz(Rauheit) "voll" in x richtung gehen muss.
zwischen 0 und 5 cm die Differenz im Verhältnis berechnet werden muss und bei 5 cm "voll" in y Richtung.
Aber kannst ja erstmal gucken, ob das zum richtigen Ziel führt.
zeichnet mit in ein kartesisches ks ein Profil, so wie ich es bekomme. Nun soll das ganze eben nicht nicht an einer linearen x-achse ausgerichtet werden. ich möchte die rote mittelwertslinie zu einem Kreis formen und die messwerte drumherum verlaufen lassen.
über cart2pol und polar wird der selbe verlauf ja genauso im polaren ks gezeichnet, wie im kartesischen.
ich hoffe ich hab es jetzt etwas besser ausgedrückt
Die Daten sind also keine Karthesischen Koordinaten, sondern der Winkel und der Radius. Es sind also bereits kartesische Koordinaten, nur dass man den Winkel noch so skalieren muss, dass er von 0 bis 360 (bzw 2*pi) geht.
Zitat:
Aber dem ist ja nicht wirklich so, sondern die Fläche gehörte radial zu einem Zylinder. Und genau das möchte ich nun wieder darstellen. im Endziel will ich keinen Mittelwert haben, keinen Radius oder sonstiges.
Für die Messwerte des Radius ist noch nicht klar, wie groß der Absolut-Wert ist, oder? Die Daten enthalten nur die Schwankungen um den Mittelwert.
Zitat:
Wenn es dafür als "Hilfskonstruktion" die Gaussgrade benötigt, die dann zum Kreis geschlossen wird und als neue runde x-Achse dient, dann ist das auch ok.
Mir bleibt es ein Rätsel, wie Du eine Gerade zu einem Kreis schließen willst. Eine Gaussgerade ist einfach eine Gerade. Und diese läuft durch den Mittelwert des gemessenen Radius', sofern die Rauhigkeit Gauss-verteilt ist.
[code]Im Endeffekt betreibe ichd somit Reverse Engineering mit den Messwerten der realen Oberfläche...[/quote]
Ich bezweifele, dass das etwas mit "Reverse Engineering" zu tun hat.
So weit ich Dich verstehe benötigste Du einfach nur:
[code]polar(x(:,1) / 8600 * 2* pi, x(:,2) + R)[/code]
Oder vielleicht anders herum. R bliebe dabei geeignet zu bestimmen, denn das ist bicght eindeutig definiert: Du kannst ja einen Kreis mit 1m oder 100m Radius in 86000 Schritten vermessen.
Ich habe den Eindruck, Du stehst auf dem Schlauch. Die Bezeichnung "x" und "y" scheinen für Verwirrung zu sorgen. Jedenfalls hören sich Deine Erklärungen nicht so an, als seien das Karthesische Koordinaten.
%Kreis in Polar-KO (Winkel und Radius)
theta=linspace(0,2*pi,Punkteanz); %100 Punkte zwischen 0 and 2pi
rho=ones(1,Punkteanz)*radius
w=rand(100,1)% 100 Zufallszahlen
w=w*0.1% Zufallszahlen eine Einheit kleiner
i=1;
%Kreis mit Abweichungen
for i=1:100
k(i)=rho(i)+w(i);
i=i+1;
end
%Konvertierung PolarKO zu KartesischKO
[X,Y] = pol2cart(theta,k); % Kreis mit Abweichungen [Xk,Yk] = pol2cart(theta,rho); %Perfekter Kreis
%Plot plot(X,Y,'or','linewidth',2);
hold on;
plot(Xk,Yk,'og','linewidth',2);
legend('Kreis mit Abweichung','Perfekter Kreis');
axis square
%% RUNDE RAEUMLICHE DARSTELLUNG AM ZYLINDER
radius_ws = taststrecke_roh_0 / (2*pi) ; % = Radius des Werkstuecks
durchmesser_ws = 2*radius_ws ; % = Kontrolle, Abgleich mit Zeichnung mgl
%Kreis in Polar-KO (Winkel und Radius)
%SOLLKREIS
ueberhoehung=100; % Überhöhung des Oberflächenprofils
theta=linspace(0,2*pi,Punkteanz_roh_0); % Erzeugung der Winkel
% z=0
rho_0=ones(1,Punkteanz_roh_0)*radius_ws; % Erzeugung der Radien der Messpunkte
y_roh_0_skaliert=y_roh_0*ueberhoehung;
%KREIS MIT ABWEICHUNGEN
for i=1:Punkteanz_roh_0
k0(i)=rho_0(i)+y_roh_0_skaliert(i);
i=i+1;
end [X0,Y0] = pol2cart(theta,k0); % Kreis mit Abweichungen 0
% z=5
rho_5=ones(1,Punkteanz_roh_5)*radius_ws; % Erzeugung der Radien der Messpunkte
y_roh_5_skaliert=y_roh_5*ueberhoehung;
%KREIS MIT ABWEICHUNGEN
for i=1:Punkteanz_roh_5
k5(i)=rho_0(i)+y_roh_5_skaliert(i);
i=i+1;
end [X5,Y5] = pol2cart(theta,k5); % Kreis mit Abweichungen 5
% z=10
rho_10=ones(1,Punkteanz_roh_10)*radius_ws; % Erzeugung der Radien der Messpunkte
y_roh_10_skaliert=y_roh_10*ueberhoehung;
%KREIS MIT ABWEICHUNGEN
for i=1:Punkteanz_roh_10
k10(i)=rho_0(i)+y_roh_10_skaliert(i);
i=i+1;
end [X10,Y10] = pol2cart(theta,k10); % Kreis mit Abweichungen 10
% z=15
rho_15=ones(1,Punkteanz_roh_15)*radius_ws; % Erzeugung der Radien der Messpunkte
y_roh_15_skaliert=y_roh_15*ueberhoehung;
%KREIS MIT ABWEICHUNGEN
for i=1:Punkteanz_roh_15
k15(i)=rho_0(i)+y_roh_15_skaliert(i);
i=i+1;
end [X15,Y15] = pol2cart(theta,k15); % Kreis mit Abweichungen 15
[Xk,Yk] = pol2cart(theta,rho_0); % Perfekter Kreis
figure subplot(2,3,1);
plot(x_roh_0, y_roh_0,x_roh_5, y_roh_5,x_roh_10, y_roh_10,x_roh_15, y_roh_15);
subplot(2,3,[2,6]);
plot(X0,Y0);
hold on;
plot(X5,Y5);
hold on;
plot(X10,Y10);
hold on;
plot(X15,Y15);
hold on;
plot(Xk,Yk);
legend(bemerkung0,bemerkung5,bemerkung10,bemerkung15,'Perfekter Kreis');
axis square
Der eine Kreis ist deswegen nicht geschlossen, da das Daten aus Testmessungen axialer Richtung sind. Die radialen bekomme ich bald, dann sollten die Kreise geschlossen sein.
Danke dir nochmal vielmals! Jetzt kann ich mich an der Filterung rumärgern
Das "i=i+1" ist vollkommen überflüssig und verwirrend in einer FOR-Schleife. Der Schleifen-Zähler wird von FOR bereits raufgezählt. Zudem lässt sich das ganze ohne Schleife übersichtlicher und schneller lösen:
[code]k0 = rho_0 + y_roh_0_skaliert;]/code]
Das nennt man "vektorisieren", also gleich mit den ganzen Vektoren rechnen als mit den einzelnen Elementen. Gerade das ist die Stärke von Matlab. Einerseits wird das deutlich schneller bearbeitet, andererseits ist es so übersichtlich und kompakt, dass man einfacher weniger Bugs machen kann.
Gruß, Jan
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.