Hallo Robotergemeinde,
zuerst wünsche ich ein gesundes und erfolgreiches Neues Jahr. Ich habe eine Aufgabe, die ich zwischen den Jahren mal eben lösen wollte. Bisher scheitere ich allerdings. Folgende Situation:
Ich habe einen KR200 mit KRC2 ed05 Steuerung. Der Roboter hat eine rotationssymmetrische Vorrichtung angeflanscht, an der um jeweils 90° verdreht (Verdrehung um die Vertikale) die gleichen Bewegungen erforderlich sind (Roboter bewegt sich in BASE-KOS). Die Vorrichtung ist so angeflanscht, dass der Roboterflansch horizontal steht (Z-Achse des TOOL-KOS zeigt aus dem Flansch heraus). Aufgrund der Medienführung musste ich die A6 sowohl in + als auch in - auf 210° beschränken (Software-Endschalter).
Mein Plan war nun die Bewegungn z.B. an der 0°-Position zu teachen und diese über die Drehung des TOOL KOS (um A) auf die anderen Positionen zu spiegeln. Um die Sache zu testen habe ich es mit einem einzelnen Punkt versucht.
Nun zum Problem:
Versuche ich eine Drehung im TOOL KOS komme ich damit max. um 90° (abhängig von der Orientierung der Vorrichtung im Punkt P1). Gebe ich größere Offsets ein kommt immer Unerreichbarer Punkt wegen Software-Endschalter, obwohl die Position in beiden Drehrichtungen noch erreichbar wäre. Leider kann ich die Softwareendschalter nicht erweitern, um zu sehen ob es daran liegt.
Folgende Varianten habe ich getestet. Leider beide mit dem selben Ergebnis:
Variante 1:
$BASE = BASE_DATA[5]
...
TOOL_DATA[2].A = 0
$TOOL = TOOL_DATA[2]
PTP XP1
TOOL_DATA[2].A = 90
$TOOL = TOOL_DATA[2]
PTP XP1
...
Variante 2:
...
$BASE = BASE_DATA[5]
Rotation = $nullframe
Rotation.A = 90
TOOL_DATA[2] = TOOL_DATA[2] : Rotation
$TOOL = TOOL_DATA[2]
PTP XP1
TOOL_DATA[2] = TOOL_DATA[2] : Rotation
$TOOL = TOOL_DATA[2]
PTP XP1
...
Wenn ich diesen einzelnen Punkt mit dem geometrischen Operator "drehe" funktioniert es seltsamerweise ohne Probleme. Leider ist das keine Lösung für die Aufgabe, da ich im Voraus nicht weiß aus wie vielen Punkten die Bewegungsfolge besteht und ich auch diese Weise immer nur einzelne Punkte ansprechen kann.
Folgendes funktioniert:
...
$BASE = BASE_DATA[5]
Rotation = $nullframe
Rotation.A = 90
$TOOL = TOOL_DATA[2]
PTP XP1:Rotation
Rotation.A = 180
TOOL_DATA[2] = TOOL_DATA[2] : Rotation
$TOOL = TOOL_DATA[2]
PTP XP1:Rotation
...
Ich hoffe, ihr versteht das Problem und freue mich auf eure Rückmeldungen. Könnte es an den SW-Endschaltern liegen?!
Vielen Dank im Voraus.
VG
Andreas