# Kuka Punkte errechnen



## blimaa (9 Februar 2012)

Hallo zusammen

Hat hier jemand nebst SPS auch Roboterprogrammiererfahrungen? Konkret geht es um einen Kuka Roboter mit einer KR2 Edition 05, Softwarestand 5.5. Ich will nun aus einem mit Inlineformular geteachten Punkt andere Punkte errechnen. Zum Beispiel will ich das unterste Gebinde auf einer Palette teachen und aus dem alle anderen Ablagepunkte errechnen inkl. 2,3,4,.. Lage. Irgend wie drehe ich mich hier im Kreis. Kann mir jemanden einen heissen Tipp geben?

Gruss blimaa


----------



## CNC840D (9 Februar 2012)

Hallo blimaa,

versuchs mal bei den Kollegen vom roboterforum...da sind die cracks unterwegs..
www.roboterforum.de

Grüße CNC840D


----------



## blimaa (10 Februar 2012)

Jup auch dieses Forum kenne ich, doch nach mehrmaligem versuch mich dort anzumelden (auch mit verschiedenen Mailadressen) bekomme ich nie eine Bestätigungsmail. Komische Sache. Da dachte ich ich probiers mal in meinem Lieblingsforum 
Weitere Lösungsansätze sind immer noch wilkommen.


----------



## Dos6.22 (10 Februar 2012)

Wenn du per Inline einen Punkt anlegst.

Heisst der z.B. P1
Dieser Punkt wird in der zugehörigen dat File zu xP1
Diesen kannst du direkt bearbeiten oder auch zum Rechnen nutzen

Je zB. einen neuen Punkt generieren
DECL E6POS pNeu

pNeu = xP1

Diesen neuen Punkt kannst du jetzt beliebig bearbeiten

pNeu.z = pNeu.z + Offset

Da würdest du jetzt einen Offset auf die Z Richtung dazurechnen.

Du kannst aber auch mit Vektoren rechnen sieht dann so aus:

DECL FRAME OffsetVektor

OffsetVektor = {X 0, Y 0, Z 10, A 0, B 0, C 0}

pNeu = xP1 : OffsetVektor

Im KUKA Handbuch stehen diese Sachen aber besser und ausführlicher drinnen. Dort wird auch der Unterschied zwischen einem FRAME und einer Position Pos bzw. E6Pos erklärt.




Hier mal ein Beispiel aus einem Programm, vielleicht hilft das etwas.
Der Roboter bekommt hier einen Errechneten Punkt aus einer Funktion und fährt diesen per Offset in z Rechnung an.

E6POS Pos0
E6POS PosX
E6POS PosY
POS PGreifPalette
INT iTicks
FRAME Verschieb1
FRAME Verschieb2

iTicks = 0

;--Arbeitsraum Palette sperren
doFRGPalette = FALSE

;--Position auf Palette berechnen
PGreifPalette = getPosPalette(iAktTeilX, iAktTeilY, iAnzTeileX, iAnzTeileY, Pos0, PosX, PosY)

;--Bewegung initialisieren
BAS(#INITMOV,0)


;--Base in Abhängigkeit von aktuellen Typ laden
$BASE = BASE_DATA[iTypNr]
$TOOL = TOOL_DATA[1]

Verschieb1 = {X 0, Y 0, Z -100, A 0, B 0, C 0}
Verschieb2 = {X 0, Y 0, Z -50, A 0, B 0, C 0}

GreiferAuf()

;--Position anfahren
;--Über Platz fahren
PTP PGreifPalette : Verschieb1 C_PTP
LIN PGreifPalette : Verschieb2 C_DIS

LIN PGreifPalette


----------



## blimaa (10 Februar 2012)

Vielen Dank, werde es heute noch ausprobieren.

Gruss Blimaa

Edit:
Das läuft! Vielen Dank. Aus Interesse: Kann man auch das Überschleiffen, Geschwindigkeit und Beschleunigung mit einem Offset belegen?


----------



## Dos6.22 (13 Februar 2012)

Ja, kannst du, aber dann würde ich die Bewegungen nicht als Inline Forumlar machen.

z.B. so

;--Initialisierung von Geschwindigkeiten, Beschleunigungen, $BASE, $TOOL, etc.
BAS(#INITMOV,0)
$ADVANCE=4
$BASE=$NULLFRAME
$APO.CPTP=30
$APO.CVEL=1
$APO.CDIS=10


In der Datei bas.src (Ordner System) sind die Befehle auch drinnen. Müsstest du jetzt im Handbuch nachlesen, was was genau macht.


----------



## blimaa (13 Februar 2012)

Vielen Dank

Denke das genügt mir für den Moment.


Gruss Blimaa


----------

