Also ich halte es seit Jahren so, dass ich ein Referenzteil habe X1 Y1 und dieses Teache. Über die Visu gebe ich die Offsetwerte der einzelnen Plätze an, und es wird dann entsprechend verrechnet. Die "Formel" dafür sollte relativ einfach durch kurzes Nachdenken herrauszufinden sein.
Grüße
Marcel
Die erste Position ist doch X1, Y1 und Z1.
Dann ist die zweite Position X1+OffsetX, Y1 und Z1.
Die dritte Position X1+2*OffsetX, Y1, Z1.
Wenn du dann die X Reihe voll hast, dann Ist die erste Position der zweiten Reihe X1, Y1+OffsetY, Z1.
Ist dann die erste Lage voll, beginnst du mit Z1 + OffsetZ.
So geht das durch alle Reihen und Lagen.
Hoffe es hilft.
bike
Sorry, ich verstehe es echt nicht!
Erste Position: X1, Y1
Zweite Position: X1 + OffsetX, Y1
Dritte Position: X1 + 2 x OffsetX, Y1
usw.
Soweit ist es schon klar - aber wie bringe ich diese Verhältnismäßigkeit mit jeder neuen Position in die SPS?
01 X_Start = Teach_Pos_X
01 Y_Start = Teach_Pos_Y
;
; berechnen position in Y
01 Reihe_Y = INT((Platz-Zähler - 1) / Anzahl_in_X) + 1
01 Y_Position = Y_Start + Reihe_Y * Y_Abstand - Y_Abstand
;
; Pointer Teilezähler in X
01 IF (Reihe_Y - 1) = 0 THEN
01 Spalte = 1
01 ELSE
01 Spalte = Platz-Zähler - ((Reihe_Y - 1) * Anzahl_in_X))
01 ENDIF
;
; berechnen position in X
01 X_Position = X_Start + (Spalte * X_Abstand - X_Abstand)
Sorry, ich verstehe es echt nicht!
Erste Position: X1, Y1
Zweite Position: X1 + OffsetX, Y1
Dritte Position: X1 + 2 x OffsetX, Y1
usw.
Soweit ist es schon klar - aber wie bringe ich diese Verhältnismäßigkeit mit jeder neuen Position in die SPS?
Schau Dir mal mein Vorschlag an, wie Du es berechnen könntest ... Musst Dir nur ein Schachbrett denken ...
Also Zeile und Spalte ...
X = Start_X + (( INT (Teile-Nr-1) / Anzahl_X) * Abstand_X )
Y = Start_Y + (( INT (Teile-Nr-1) / Anzahl_Y) * Abstand_Y )
mittels INT berechnest halt nur die Ganzzahl (ist jetzt nicht von Siemens gewesen deshalb) ...
Bei der Berechnung für X ist aber noch ein Bug drinnen, da muss ich mal noch nachschauen, daher soll es mal als Denkanstoss dienen
Also ein Beispiel:
X = 10; Y = 34; OffsetX = 25; OffsetY = 30;
Dies ist Position 1
Position 2:
X + OffsetX, Y; X = 10 + 25 , Y = 34;
Position 3:
X+ 2*Offset; Y; X = 10 + 2*25. Y = 34;
zweite Spalte:
X, Y+OffsetY; X = 10, Y = 34 + 30;
usw.
Alles klar?
bike
Lieben Dank Boxy,
ok - also Formel stimmt noch nicht ganz.
Aber vom Verständnis her:
- Teile-Nr. bezeichnet das zu positionierende Teil, also fortschreitend 1, 2, 3, usw. ?
- Davon wird nun die Zahl 1 abgezogen und das Ergebnis durch die Anzahl der Spalten geteilt. Was genau macht hier INT - ist das ein Berechnungsfaktor?
Sorry für die dummen Fragen.
01 X_Start = Teach_Pos_X
01 Y_Start = Teach_Pos_Y
;
; Berechnen der Position in Y
01 Reihe_Y = INT((Platz_Zähler - 1) / Anzahl_in_X) + 1
01 Y_Position = Y_Start + Reihe_Y * Y_Abstand - Y_Abstand
;
; Teilezähler in X für Splate aufbereiten
01 IF (Reihe_Y - 1) = 0 THEN
01 Spalte = Platz_Zähler [COLOR=#ff0000](*hier war kleiner Fehler*)[/COLOR]
01 ELSE
01 Spalte = (Platz_Zähler - ((Reihe_Y - 1) * Anzahl_in_X))
01 ENDIF
;
; Berechnen der Position in X
01 X_Position = X_Start + (Spalte * X_Abstand - X_Abstand)
Das war mir schon klar bike,
aber nicht wie man diese Formeln in die SPS bringen soll, wenn diese sich mit jeder Position ändern ...
Da müsste man doch dann eine "Bezugsformel" draus machen, oder etwa nicht?
Wenn du dann die X Reihe voll hast, dann Ist die erste Position der zweiten Reihe X1, Y1+OffsetY, Z1.
Ist dann die erste Lage voll, beginnst du mit Z1 + Offset Z.
bike
Kann es sein, dass es daran liegt, dass du ein Madl bist?
Also Zähler =1 Position ist dann X1 Y1 Z1.
Bei Position 2 schaut es so aus:
X+(Zaehler-1*Offset) Y1 Z1
bike
Kann es sein, dass es daran liegt, dass du ein Madl bist?
bike
Brauchst du die Lösung für eine 300er oder eine 1200er?
Denn zu der zweiten kann ich dir keine Hilfestellung geben.
bike
Kann es sein, dass es daran liegt, dass du ein Madl bist?
Dann solltest Du doch noch schneller und mit mehr Hingabe helfen *ROFL*:s10:
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?