Kuka Punkte errechnen

blimaa

Level-3
Beiträge
1.016
Reaktionspunkte
119
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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
 
Zuletzt bearbeitet:
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?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zurück
Oben