Verfasst am: 15.10.2015, 10:37
Titel: Vergleich der nachfolgenden Perioden mit der ersten Periode
Guten Morgen zusammen,
mir stellt sich folgendes Problem:
Ich habe Messdaten einer Maschine bei der die Genauigkeit der X- und Y-Achse ermittelt werden sollen. Dabei gibt es gewisse Voraussetzungen an die Maschine wie genau diese sein muss. Nun geht es um die Wiederholungsfehler.
Dabei sollen die IST-Werte betrachtet werden (Messdaten).
Fährt die Anlage nun eine Kontur, ganz egal welche zB 100 mal ab, so bekommt man theoretisch und grafisch 100 gleiche aufeinander folgende Schwingungen.
Um zu ermitteln wie groß die Wiederholungsfehler sind, soll nun die zweite bis die n-te Schwingung immer einzeln mit der ersten Schwinung bzw. Periode verglichen werden.
Vorgestellt habe ich mir, dass ich aus der Ist-Wert-Positionsmatrix (welche durch die Messdatei gegeben ist) herausfinde wie lang überhaupt die Periode ist. Dann die erste Schwingung ermittle in dem ich den Wendepunkt von der ersten auf die zweite Schwingung ermittle und durch das abziehen der Periodendauer die erste Schwingung in ein neuen Spaltenvektor auslese.
Dieser Vektor/erste Schwingung möchte ich dann ab diesem Wendepunkt zur zweiten Schwingung mit einer Schleife mit jeder weiteren Schwingung vergleichen (abziehen) und bei jedem Vergleichen.
Soweit so gut.
Jetzt ist allerdings mein Problem, dass die Messung oft vor dem Testlauf gestartet wird und ich am Anfang Messpunkte habe bei dem das System steht. Da außer dem das ganze keine theoretische Schwingung sondern eine praktische ist also Real bzw. Istwerte lässt sich nicht sehr einfach die Periodendauer herauslesen.
Ich würde euch gern zeigen was ich bis her programmiert habe, bzw. welchen Lösungsvorschlag ich habe, allerdings weiß ich nicht genau wie ich anfangen soll und wie ich das ganze angehen soll....
Wenn Ihr mir vielleicht einen Denkanstoß, Ideen oder vielleicht sogar einen Vorschlag geben könntet wäre ich euch sehr dankbar! Im Inet ist dazu leider nichts zu finden...
Gerne nehme ich auch einen anderen Ansatz an
Euch schonmal vielen Dank im Voraus, dass Ihr überhaupt den langen Text gelesen habt und dann auch noch versucht mir zu helfen
Jetzt ist allerdings mein Problem, dass die Messung oft vor dem Testlauf gestartet wird und ich am Anfang Messpunkte habe bei dem das System steht.
was genau ist daran das problem? du kannst du alle messwerte wegschneiden die auftreten bevor ein bestimmter messwert das erste mal überschritten wird.
Zitat:
Da außer dem das ganze keine theoretische Schwingung sondern eine praktische ist also Real bzw. Istwerte lässt sich nicht sehr einfach die Periodendauer herauslesen.
vielleicht eine schwingungsanalyse um die frequenzen deines systems zu bestimmen? alternativ kannst du ja wie gesagt immer eine bestimmte position +- schwellwert als start der neuen periode benutzen.
grüße
_________________
ich habe um einen Ansatz zu finden das ganze mal versucht mit den Sollwerten anzugehen. Nun habe ich sozusagen die aller ersten Werte der zweispalten Matrix ausgelesen und kann damit sagen, dort fängt die Testfahrt an.
Nun hatte ich auch die Idee, zu sagen dass der erste Punkt der Ist-Matrix der dem Startpunkt der Soll-Matrix am nächsten kommt mein Startwert ist.
Weiß nur noch nicht genau wie ich das Programmieren soll.
Die Matrix zu schneiden, bzw die ersten Zeilen rauswerfen hab ich auch noch keine Erfahrung und habe es auch auf die schnelle nicht hinbekommen. Nun ist der Startwert x=225 und y= -50 dann kommen etwa 100 weitere Zeilen x=225 und y=-50 und dann verändert sich der erste Wert nun würde ich gern alle wegschneiden bis ein Wert vor dem ersten Veränderten.
Einschlüssenwort bzw Funktion für die Näherung wäre auch noch gut zu wissen
du könntest mit
diff
arbeiten und gucken ob irgendwo die differenz zweier werte einen schwellwert überschreitet. oder halt ob der wert selber einen schwellwert überschreitet. mit
find
findet man dann den index und schneidet alles davor weg
_________________
du könntest mit
diff
arbeiten und gucken ob irgendwo die differenz zweier werte einen schwellwert überschreitet. oder halt ob der wert selber einen schwellwert überschreitet.
So nachdem ich jetzt fast zwei Stunden versucht habe mich mit dem
diff
auseinander zu setzen und das anzuwenden, muss ich jetzt doch nochmal fragen bevor ich verzweifel wie das dann programmiert wird...Da merk ich dann dass ich doch noch blutige Anfänger im Matlab bin
Winkow hat Folgendes geschrieben:
mit
find
findet man dann den index und schneidet alles davor weg
Soweit bin ich zwar deswegen noch nicht, aber hast mir hierzu auch gleich ein Programmiervorschlag?
Verfasst am: 15.10.2015, 16:15
Titel: Wie finde ich jetzt das Ende der Periode
Soooo,
also den ersten Punkt hätte ich gefunden, hab bisschen rumprobiert und gebastelt...
weiß zwar nicht ob das jetzt so elegant gelöst ist aber es funktioniert. Hab es erst Versucht in der zwei Spalten Matrix zu machen, aber bin dann doch auf Vektoren umgestiegen weil ichs in der Matrix nicht hinbekommen habe...
Code:
%% Datenpunkte laden load('XY_550_5_2D')
%% Vektorerstellung bzw. Matrixaufsplittung
x = abs(PosFbk(:,1)); % Erstellung eines Vektors der % absoluten Positionsfeedback der X-Achse
y = abs(PosFbk(:,2)); % Erstellung eines Vektors der % absoluten Positionfeedback der Y-Achse
SPtheox = PosFbk(1,1); % Theoretische Startpunkte
SPtheoy = PosFbk(1,2);
I1=find(y>SPtheoy,1); % Möglicher Startpunkt
I2=find(x>SPtheox,1); % Möglicher Startpunkt if I1<=I2;
I =I2;
else
I =I1; % Startpunkt der Periode end
SP=PosFbk(I-1,:); % Ein Punkt Bevor Anlage los fährt als Vektor
Nun frag ich mich allerdings wie ich das Ende der Periode finde? Bzw, wie kann ich nun den zweiten Punkt in der Schwingung finden der diesen Kriterien entspricht?
hmm ich würde das bei den daten so machen:
mittelpunt der bestimmen. also mean(x) mean(y)
dann punkte in radius und winkel in bezug zu diesem punkte aufteilen. und anhand des winkels (
atan2
) kannst du dann ja leicht sagen ab wann er einmal rum ist.
_________________
hmm ich würde das bei den daten so machen:
mittelpunt der bestimmen. also mean(x) mean(y)
Hm Mittelpunkt der was?
Winkow hat Folgendes geschrieben:
dann punkte in radius und winkel in bezug zu diesem punkte aufteilen. und anhand des winkels (
atan2
) kannst du dann ja leicht sagen ab wann er einmal rum ist.
Okay das hab ich jetzt glaub ich alles nicht so richtig begriffen
Kannst du mir vielleicht ein Code-Beispiel vorgeben, dann kann ichs vielleicht mit der Hilfe versuchen zu verstehen
also ich muss gestehen dass mich das nicht wirklich weiter bringt...
Vielleicht liegt es auch nur daran dass Montag ist, mir ist zwar klar dass du damit Polarkoordinaten bekommst, was ich dadurch aber gewonnen habe bzw. wie ich dadurch feststellen kann wann ich die Kontur einmal abgefahren habe verstehe ich nicht??
Ist dieser Weg überhaupt auch möglich wenn ich eine komplexere Kontur hab statt nur ein Rechteck??
Und wie muss ich das programmieren, dass ich seh wann die Periode zu ende ist?
Habe vorhin mal versucht zu sagen sobald beide Koordinaten den Koordinaten von dem Startpunkt der Periode bzw Kontur am ähnlichsten sind das rauszulesen, aber da bin ich durch mein niedriges Matlabniveau wohl gescheitert bis her...
Danke dir schonmal,
Grüße
_________________
Ja schon, aber ich habe dadurch doch nichts gewonnen??
Wenn die Kontur zB wie eine schlange wäre, dann müsste ich ja auch prüfen ob nicht nur der Winkel wieder gleich ist sondern auch der Radius müsste wieder gleich sein, und die beiden Bedingungen zur gleichen Zeit.
Da beides aber nicht unbedingt genau gleich sein wird müsste ich da auch wieder eine Näherung machen.
Aber das könnte ich doch genaus auch mit den X und Y Koordinaten, sobald die beide wieder gleich bzw. extrem ähnlich sind wie die vom Periodenstart dann ist die Kontur einmal rum.
Aber wie ich das in Matlab Konstruieren muss, dafür ging heut ohne Ergebnis ein ganzer Tag drauf
Hast du mir da vielleicht ein Lösungsvorschlag??
Gruß und vielen Dank
_________________
load('XY_550_5_2D')
%% Vektorerstellung bzw. Matrixaufsplittung
x = abs(PosFbk(:,1)); % Erstellung eines Vektors der % absoluten Positionsfeedback der X-Achse
y = abs(PosFbk(:,2)); % Erstellung eines Vektors der % absoluten Positionfeedback der Y-Achse
SPtheox = PosFbk(1,1); % Theoretische Startpunkte
SPtheoy = PosFbk(1,2);
I1=find(y>SPtheoy,1); % Möglicher Startpunkt
I2=find(x>SPtheox,1); % Möglicher Startpunkt if I1<=I2;
I =I2;
else
I =I1; % Startpunkt der Periode end
SP=PosFbk(I-1,:); % Ein Punkt Bevor Anlage los fährt als Vektor
%%
subplot(2,1,1)
X=x(I:end);
Y=y(I:end);
plot(X,Y) subplot(2,1,2);
ich finde den winkel besser als als die x und y kooridnaten zu vergleichen.
dein beispiel mit der schlange verstehe ich nicht. deine angehängten daten sehen nicht aus wie eine schlange.
ich sehe hier nur probleme wenn dein graph aus winkelsicht zwischenzeitlich rückwärts läuft.
_________________
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.